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连接MySQL、MongoDB、Redis、memcache等数据库的方法
Nov 15 Python
对pandas的dataframe绘图并保存的实现方法
Aug 05 Python
1 行 Python 代码快速实现 FTP 服务器
Jan 25 Python
pandas DataFrame实现几列数据合并成为新的一列方法
Jun 08 Python
Python for循环中的陷阱详解
Jul 13 Python
浅谈Pytorch中的torch.gather函数的含义
Aug 18 Python
对tensorflow中的strides参数使用详解
Jan 04 Python
基于TensorFlow常量、序列以及随机值生成实例
Jan 04 Python
pytorch 自定义参数不更新方式
Jan 06 Python
pyinstaller还原python代码过程图解
Jan 08 Python
爬虫代理的cookie如何生成运行
Sep 22 Python
基于python实现百度语音识别和图灵对话
Nov 02 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
DOTA2游戏同人动画《龙之血》导演接受采访
2021/03/05 欧美动漫
PHP如何解决网站大流量与高并发的问题
2011/06/25 PHP
php中session使用示例
2014/03/29 PHP
php微信支付接口开发程序
2016/08/02 PHP
PHP+redis实现微博的拉模型案例详解
2019/07/10 PHP
由浅到深了解JavaScript类
2006/09/08 Javascript
javascript检查日期格式的函数[比较全]
2008/10/17 Javascript
juqery 学习之五 文档处理 包裹、替换、删除、复制
2011/02/11 Javascript
jquery三个关闭弹出层的小示例
2013/11/05 Javascript
学习JavaScript设计模式(单例模式)
2015/11/26 Javascript
Javascript中判断一个值是否为undefined的方法详解
2016/09/28 Javascript
利用Node.JS实现邮件发送功能
2016/10/21 Javascript
怎样判断jQuery当前元素是隐藏还是显示
2016/11/23 Javascript
JS+DIV实现的卷帘效果示例
2017/03/22 Javascript
nodejs 十六进制字符串型数据与btye型数据相互转换
2018/07/30 NodeJs
深入理解Vue keep-alive及实践总结
2019/08/21 Javascript
修改Vue打包后的默认文件名操作
2020/08/12 Javascript
vue3.0封装轮播图组件的步骤
2021/03/04 Vue.js
[01:16]2014DOTA2 TI专访C9战队EE:中国五强中会占三席
2014/07/10 DOTA
[01:19:33]DOTA2-DPC中国联赛 正赛 iG vs VG BO3 第一场 2月2日
2021/03/11 DOTA
JSONLINT:python的json数据验证库实例解析
2017/11/28 Python
Python 查找list中的某个元素的所有的下标方法
2018/06/27 Python
python 多线程重启方法
2019/02/18 Python
python 利用文件锁单例执行脚本的方法
2019/02/19 Python
详解Tensorflow不同版本要求与CUDA及CUDNN版本对应关系
2020/08/04 Python
plt.figure()参数使用详解及运行演示
2021/01/08 Python
Hotels.com台湾:饭店订房网
2017/09/06 全球购物
WWE美国职业摔角官方商店:WWE Shop
2018/11/15 全球购物
中层干部竞聘演讲稿
2014/05/15 职场文书
党员教师四风问题整改措施思想汇报
2014/10/08 职场文书
2015年企业员工工作总结范文
2015/05/21 职场文书
2015年预防青少年违法犯罪工作总结
2015/05/22 职场文书
2015年幼儿园班主任个人工作总结
2015/10/22 职场文书
Golang 如何实现函数的任意类型传参
2021/04/29 Golang
springboot @ConfigurationProperties和@PropertySource的区别
2021/06/11 Java/Android
MongoDB数据库常用的10条操作命令
2021/06/18 MongoDB