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中的map、reduce和filter浅析
Apr 26 Python
对于Python中线程问题的简单讲解
Apr 03 Python
python Django框架实现自定义表单提交
Mar 25 Python
Python装饰器用法实例总结
Feb 07 Python
Python结合ImageMagick实现多张图片合并为一个pdf文件的方法
Apr 24 Python
Python实现的json文件读取及中文乱码显示问题解决方法
Aug 06 Python
Python 移动光标位置的方法
Jan 20 Python
Django框架组成结构、基本概念与文件功能分析
Jul 30 Python
Python序列对象与String类型内置方法详解
Oct 22 Python
python实现二分类的卡方分箱示例
Nov 22 Python
python将数组n等分的实例
Dec 02 Python
python中os.remove()用法及注意事项
Jan 31 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 For循环字母A-Z当超过26个字母时输出AA,AB,AC
2020/02/16 PHP
js文件中调用js的实现方法小结
2009/10/23 Javascript
juqery 学习之三 选择器 可见性 元素属性
2010/11/25 Javascript
深入分析js中的constructor和prototype
2012/04/07 Javascript
js自执行函数的几种不同写法的比较
2012/08/16 Javascript
js使用DOM设置单选按钮、复选框及下拉菜单的方法
2015/01/20 Javascript
js中不同的height, top的区别对比
2015/09/24 Javascript
JavaScript实现身份证验证代码
2016/02/17 Javascript
用headjs来管理和加载js 提高网站加载速度
2016/11/29 Javascript
JavaScript解析JSON格式数据的方法示例
2017/01/24 Javascript
JavaScript实现翻页功能(附效果图)
2017/02/16 Javascript
JS实现加载时锁定HTML页面元素的方法
2017/06/24 Javascript
微信小程序之选项卡的实现方法
2017/09/29 Javascript
详解Angular调试技巧之报错404(not found)
2018/01/31 Javascript
angular4中*ngFor不能对返回来的对象进行循环的解决方法
2018/09/12 Javascript
详解如何使用webpack打包多页jquery项目
2019/02/01 jQuery
Vue中qs插件的使用详解
2020/02/07 Javascript
echarts浮动显示单位的实现方法示例
2020/12/04 Javascript
利用Vue实现简易播放器的完整代码
2020/12/30 Vue.js
[00:58]2016年国际邀请赛勇士令状宣传片
2016/06/01 DOTA
[00:10]DOTA2 TI9勇士令状明日上线
2019/05/07 DOTA
[04:15]DOTA2-DPC中国联赛 正赛 Ehome vs Aster 选手采访
2021/03/11 DOTA
Python访问纯真IP数据库脚本分享
2015/06/29 Python
python微信跳一跳系列之棋子定位像素遍历
2018/02/26 Python
python web基础之加载静态文件实例
2018/03/20 Python
简单的命令查看安装的python版本号
2020/08/28 Python
StubHub美国:购买或出售您的门票
2019/07/09 全球购物
俄罗斯购买自行车网站:Vamvelosiped
2021/01/29 全球购物
11月升旗仪式讲话稿
2014/02/15 职场文书
优秀学生干部个人事迹材料
2014/06/02 职场文书
群众路线剖析材料(四风问题)
2014/10/08 职场文书
精神病医院见习报告
2014/11/03 职场文书
军训结束新闻稿
2015/07/17 职场文书
2015年度学校应急管理工作总结
2015/10/22 职场文书
商业计划书如何写?关键问题有哪些?
2019/07/11 职场文书
Html5生成验证码的示例代码
2021/05/10 Javascript