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 相关文章推荐
python 生成目录树及显示文件大小的代码
Jul 23 Python
Python守护进程(daemon)代码实例
Mar 06 Python
python使用calendar输出指定年份全年日历的方法
Apr 04 Python
Python合并字符串的3种方法
May 21 Python
Python回调函数用法实例详解
Jul 02 Python
Python编程实现的简单Web服务器示例
Jun 22 Python
PyQt5每天必学之布局管理
Apr 19 Python
python发送邮件脚本
May 22 Python
使用python获取邮箱邮件的设置方法
Sep 20 Python
python处理excel绘制雷达图
Oct 18 Python
关于Python字符串显示u...的解决方式
Mar 06 Python
Django 解决distinct无法去除重复数据的问题
May 20 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
Zend Studio (eclipse)使用速度优化方法
2011/03/23 PHP
php汉字转拼音的示例
2014/02/27 PHP
跟我学Laravel之请求与输入
2014/10/15 PHP
phpstorm编辑器乱码问题解决
2014/12/01 PHP
PHP实现HTTP断点续传的方法
2015/06/17 PHP
Yii2框架中使用PHPExcel导出Excel文件的示例
2017/08/09 PHP
PHP中define() 与 const定义常量的区别详解
2019/06/25 PHP
用javascript操作xml
2006/11/04 Javascript
HTML颜色选择器实现代码
2010/11/23 Javascript
JS链式调用的实现方法
2013/03/07 Javascript
js和jquery中循环的退出和继续学习记录
2014/09/06 Javascript
JavaScript阻止浏览器返回按钮的方法
2015/03/18 Javascript
JavaScript生成福利彩票双色球号码
2015/05/15 Javascript
json格式数据的添加,删除及排序方法
2016/01/21 Javascript
AngularJS 依赖注入详解及示例代码
2016/08/17 Javascript
原生js编写2048小游戏
2017/03/17 Javascript
详解webpack require.ensure与require AMD的区别
2017/12/13 Javascript
vue回到顶部监听滚动事件详解
2019/08/02 Javascript
使用JavaScript实现网页秒表功能(含开始、暂停、继续、重置功能)
2020/06/05 Javascript
详解Webpack4多页应用打包方案
2020/07/16 Javascript
Vue记住滚动条和实现下拉加载的完美方法
2020/07/31 Javascript
[01:43]3.19DOTA2发布会 三代刀塔人第三代
2014/03/25 DOTA
Python 匹配任意字符(包括换行符)的正则表达式写法
2009/10/29 Python
python控制台英汉汉英电子词典
2020/04/23 Python
Python原始字符串(raw strings)用法实例
2014/10/13 Python
python实现两个经纬度点之间的距离和方位角的方法
2019/07/05 Python
用Python识别人脸,人种等各种信息
2019/07/15 Python
在SQLite-Python中实现返回、查询中文字段的方法
2019/07/17 Python
python 非线性规划方式(scipy.optimize.minimize)
2020/02/11 Python
Python编程快速上手——正则表达式查找功能案例分析
2020/02/28 Python
python判断两个序列的成员是否一样的实例代码
2020/03/01 Python
详解python使用金山词霸的翻译功能(调试工具断点的使用)
2021/01/07 Python
应届毕业生个人求职自荐信
2014/01/06 职场文书
2014年司法局工作总结
2014/12/11 职场文书
Python使用scapy模块发包收包
2021/05/07 Python
postgresql使用filter进行多维度聚合的解决方法
2021/07/16 PostgreSQL