Python实现利用163邮箱远程关电脑脚本


Posted in Python onFebruary 22, 2018

学了一个礼拜Python之后写的,代码很粗糙,只是为了完成利用163邮箱远程关电脑功能。直接把代码发上来吧。要执行的话得先安装一些模块,看import语句。

十月初写的,写完这个之后就没怎么写python了,忘得厉害。

  • 本来想从mail.163.com模拟登录的,但这个网页提交按钮是个, 有点复杂,搞了几个小时搞不定。
  • 我就绕了一下,从http://reg.163.com/logins.jsp 登录。这个页面登录会被拦截,还是到不了邮箱。但确实是登录成功,我们能得到一个登录认证。
  • 再访问http://entry.mail.163.com,这样就登录邮箱成功了,但因为进了邮箱之后,页面也是太复杂了。还是不好拿到邮件信息。
  • 从第三步取得sid,生成一个URL,从这个URL直接访问邮件的XML文档页面。
  • 然后就简单啦,把页面抓下来解析一下邮件内容,按照邮件内容执行命令。所以其实不止能关电脑,在windows下还能远程写个批处理脚本。修改一下代码,linux也能执行。

halla.py

import requests
import mechanicalsoup
import bs4
import re
import TEST
import time
import argparse
from datetime import datetime
import lxml

parser = argparse.ArgumentParser(description='Login to GitHub.')
parser.add_argument("username")
parser.add_argument("password")
args = parser.parse_args()

n = 0
startime = datetime.strptime(datetime.now().strftime('%Y-%m-%d %H:%M:%S'),'%Y-%m-%d %H:%M:%S')
while True:
 #打开“浏览器”
 browser = mechanicalsoup.Browser()
 #第一个页面url
 url = "http://reg.163.com/logins.jsp?type=1&product=mail163&url=http://entry.mail.163.com/coremail/fcg/ntesdoor2?lightweight%3D1%26verifycookie%3D1%26language%3D-1%26style%3D1"
 #打开网易登录页面
 login_page = browser.get(url)
 #输入账户密码然后提交表单
 login_form = login_page.soup.select("#fLogin")[0]
 login_form.select("#username")[0]['value'] = args.username
 login_form.select("#password")[0]['value'] = args.password
 page2 = browser.submit(login_form, login_page.url)
 #获取page2内容
 page2_soup = bs4.BeautifulSoup(page2.content)
 #用page2的cookies登录网易邮箱
 cookie = page2.cookies.get_dict()
 page3 = browser.get('http://entry.mail.163.com/coremail/fcg/ntesdoor2')
 #获取page3的url中的sid,给出XMLurl
 sid = re.findall(r'(?<==).*(?=&)',page3.url)
 XMLurl = 'http://mail.163.com/js6/s?sid='+sid[0]+'&func=mbox:listMessages&topNav_mobileIcon_show=1&TopTabReaderShow=1&TopTabLofterShow=1&welcome_welcomemodule_mailrecom_click=1&LeftNavfolder1Click=1&mbox_folder_enter=1'
 #打开XMLurl页面,获取邮件
 page4 = browser.post(XMLurl)

 with open(r'q.xml','w',encoding='utf-8') as q:
  q.write(page4.text)

 TEST.PPP(r'q.xml',startime).ppp()
 n+=1
 print("循环执行第"+str(n)+'次')
 time.sleep(30)

TEST.py

import lxml.etree
import os
from datetime import datetime


class PPP():
 def __init__(self, src, startime):
  self.src = src
  self.startime = startime

 def ppp(self):
  parser = lxml.etree.XMLParser(recover=True)
  tree = lxml.etree.parse(self.src, parser)
  root = tree.getroot()
  array = root.find('array')

  for objects in array:
   FLAG = False
   for items in objects:
    if items.get('name') == 'subject':
     if items.text == '999':
      FLAG = True

    if items.get('name') == 'sentDate':
     raw_sentData = items.text
     sentData = datetime.strptime(raw_sentData,'%Y-%m-%d %H:%M:%S')
     if self.startime<sentData and FLAG==True:
      print('shutdown -s -t 60')

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python3实现发送QQ邮件功能(文本)
Dec 15 Python
Django中cookie的基本使用方法示例
Feb 03 Python
PyQt5每天必学之滑块控件QSlider
Apr 20 Python
Django实战之用户认证(用户登录与注销)
Jul 16 Python
python实现Virginia无密钥解密
Mar 20 Python
python动态视频下载器的实现方法
Sep 16 Python
Python帮你识破双11的套路
Nov 11 Python
Jupyter notebook无法导入第三方模块的解决方式
Apr 15 Python
Python自动化xpath实现自动抢票抢货
Sep 19 Python
浅析python函数式编程
Sep 26 Python
如何使用Pytorch搭建模型
Oct 26 Python
OpenCV项目实践之停车场车位实时检测
Apr 11 Python
Python3.4实现远程控制电脑开关机
Feb 22 #Python
python实现微信远程控制电脑
Feb 22 #Python
Python标准库笔记struct模块的使用
Feb 22 #Python
python实现手机通讯录搜索功能
Feb 22 #Python
Python实现通讯录功能
Feb 22 #Python
Python SQLite3简介
Feb 22 #Python
Python Web程序部署到Ubuntu服务器上的方法
Feb 22 #Python
You might like
php控制文件下载速度的方法
2015/03/24 PHP
IOS 开发之NSDictionary转换成JSON字符串
2017/08/14 PHP
PHP 多任务秒级定时器的实现方法
2018/05/13 PHP
laravel-admin 管理平台获取当前登陆用户信息的例子
2019/10/08 PHP
PHP设计模式之命令模式示例详解
2020/12/20 PHP
Jquery iframe内部出滚动条
2010/02/11 Javascript
深入理解JavaScript系列(10) JavaScript核心(晋级高手必读篇)
2012/01/15 Javascript
在Google 地图上实现做的标记相连接
2015/01/05 Javascript
js+css实现tab菜单切换效果的方法
2015/01/20 Javascript
JavaScript中的Math.atan2()方法使用详解
2015/06/15 Javascript
jQuery滚动加载图片实现原理
2015/12/14 Javascript
js简单实现图片延迟加载的方法
2016/07/19 Javascript
详解JS中定时器setInterval和setTImeout的this指向问题
2017/01/06 Javascript
JS+HTML5实现上传图片预览效果完整实例【测试可用】
2017/04/20 Javascript
JS身份证信息验证正则表达式
2017/06/12 Javascript
Vue中计算属性computed的示例解读
2017/07/26 Javascript
详解使用vuex进行菜单管理
2017/12/21 Javascript
vue下拉列表功能实例代码
2018/04/08 Javascript
微信小程序入门之广告条实现方法示例
2018/12/05 Javascript
Vue在chrome44偶现点击子元素事件无法冒泡的解决方法
2019/12/15 Javascript
高性能js数组去重(12种方法,史上最全)
2019/12/21 Javascript
JavaScript实现PC端四格密码输入框功能
2020/02/19 Javascript
从零开始在vue-cli4配置自适应vw布局的实现
2020/06/08 Javascript
nginx部署多个vue项目的方法示例
2020/09/06 Javascript
[01:31:02]TNC vs VG 2019国际邀请赛淘汰赛 胜者组赛BO3 第一场
2019/08/22 DOTA
Python将图片转换为字符画的方法
2020/06/16 Python
关于python之字典的嵌套,递归调用方法
2019/01/21 Python
详解Python匿名函数(lambda函数)
2019/04/19 Python
python面向对象法实现图书管理系统
2019/04/19 Python
python 扩展print打印文件路径和当前时间信息的实例代码
2019/10/11 Python
新版Pycharm中Matplotlib不会弹出独立的显示窗口的问题
2020/06/02 Python
Selenium环境变量配置(火狐浏览器)及验证实现
2020/12/07 Python
来自世界上最好大学的在线课程:edX
2018/10/16 全球购物
致800米运动员广播稿
2014/02/16 职场文书
产品销售计划书
2014/05/04 职场文书
Ajax请求超时与网络异常处理图文详解
2021/05/23 Javascript