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通过socket实现多个连接并实现ssh功能详解
Nov 08 Python
用python统计代码行的示例(包括空行和注释)
Jul 24 Python
numpy给array增加维度np.newaxis的实例
Nov 01 Python
浅谈python3.x pool.map()方法的实质
Jan 16 Python
在python 中split()使用多符号分割的例子
Jul 15 Python
python使用socket 先读取长度,在读取报文内容示例
Sep 26 Python
Python箱型图处理离群点的例子
Dec 09 Python
PyQt中使用QtSql连接MySql数据库的方法
Jul 28 Python
Python如何读写二进制数组数据
Aug 01 Python
详解利用python识别图片中的条码(pyzbar)及条码图片矫正和增强
Nov 17 Python
Python实现疫情地图可视化
Feb 05 Python
python中pymysql包操作数据库方法
Apr 19 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+MSSQL分页的例子
2006/10/09 PHP
php学习之 认清变量的作用范围
2010/01/26 PHP
for循环连续求和、九九乘法表代码
2012/02/20 PHP
php图片裁剪函数
2018/10/31 PHP
在laravel框架中实现封装公共方法全局调用
2019/10/14 PHP
一个加载js文件的小脚本
2007/06/28 Javascript
Javascript 函数中的参数使用分析
2010/03/27 Javascript
Jquery下:nth-child(an+b)的使用注意
2011/05/28 Javascript
Javascript获取表单名称(name)的方法
2015/04/02 Javascript
js内置对象处理_打印学生成绩单的简单实现
2016/09/24 Javascript
jquery实现下拉框多选方法介绍
2017/01/03 Javascript
React 组件转 Vue 组件的命令写法
2018/02/28 Javascript
ionic2中使用自动生成器的方法
2018/03/04 Javascript
ES6顶层对象、global对象实例分析
2019/06/14 Javascript
微信小程序实现电子签名并导出图片
2020/05/27 Javascript
vue实现移动端input上传视频、音频
2020/08/18 Javascript
pycharm 使用心得(四)显示行号
2014/06/05 Python
Python实现list反转实例汇总
2014/11/11 Python
python创建进程fork用法
2015/06/04 Python
Python实现压缩与解压gzip大文件的方法
2016/09/18 Python
python实现简单爬虫功能的示例
2016/10/24 Python
Python随机读取文件实现实例
2017/05/25 Python
python下实现二叉堆以及堆排序的示例
2017/09/29 Python
Django ORM框架的定时任务如何使用详解
2017/10/19 Python
python 杀死自身进程的实现方法
2019/07/01 Python
Python OrderedDict的使用案例解析
2019/10/25 Python
python 上下文管理器及自定义原理解析
2019/11/19 Python
Flask之pipenv虚拟环境的实现
2019/11/26 Python
Django查询优化及ajax编码格式原理解析
2020/03/25 Python
python从ftp获取文件并下载到本地
2020/12/05 Python
纪伊国屋新加坡网上书店:Kinokuniya新加坡
2017/12/29 全球购物
一年级数学下册复习计划
2015/01/17 职场文书
文案策划岗位职责
2015/02/11 职场文书
2016师德师风学习心得体会
2016/01/12 职场文书
浅谈Vue的computed计算属性
2022/03/21 Vue.js
Win11如何查看显卡型号 Win11查看显卡型号的方法
2022/08/14 数码科技