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的文件操作方法汇总
Nov 10 Python
Python排序搜索基本算法之选择排序实例分析
Dec 09 Python
Python3.4 tkinter,PIL图片转换
Jun 21 Python
Python文件常见操作实例分析【读写、遍历】
Dec 10 Python
Python+OpenCV图片局部区域像素值处理详解
Jan 23 Python
记录Python脚本的运行日志的方法
Jun 05 Python
Python登录系统界面实现详解
Jun 25 Python
使用Python给头像戴上圣诞帽的图像操作过程解析
Sep 20 Python
python 使用elasticsearch 实现翻页的三种方式
Jul 31 Python
python logging模块的使用详解
Oct 23 Python
Django debug为True时,css加载失败的解决方案
Apr 24 Python
Django项目如何正确配置日志(logging)
Apr 29 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中根据变量的类型 选择echo或dump
2012/07/05 PHP
PHP使用trim函数去除字符串左右空格及特殊字符实例
2016/01/07 PHP
PHP ADODB实现事务处理功能示例
2018/05/25 PHP
javascript编程起步(第四课)
2007/01/10 Javascript
EXT中xtype的含义分析
2010/01/07 Javascript
定义JavaScript二维数组采用定义数组的数组来实现
2012/12/09 Javascript
在Ubuntu系统上安装Node.JS的教程
2015/10/15 Javascript
AngularJS中处理多个promise的方式
2016/02/02 Javascript
深入浅出 jQuery中的事件机制
2016/08/23 Javascript
详解Python中logging日志模块在多进程环境下的使用
2016/12/26 Javascript
vue组件中使用iframe元素的示例代码
2017/12/13 Javascript
vue使用ElementUI时导航栏默认展开功能的实现
2018/07/04 Javascript
vuex如何重置所有state(可定制)
2019/01/17 Javascript
vue-cli在 history模式下的配置详解
2019/11/26 Javascript
js的Object.assign用法示例分析
2020/03/05 Javascript
基于javascript的无缝滚动动画1
2020/08/07 Javascript
vue实现动态给id赋值,点击事件获取当前点击的元素的id操作
2020/11/09 Javascript
在vue中给后台接口传的值为数组的格式代码
2020/11/12 Javascript
JS相册图片抖动放大展示效果的示例代码
2021/01/29 Javascript
在Python中操作文件之truncate()方法的使用教程
2015/05/25 Python
Python排序搜索基本算法之冒泡排序实例分析
2017/12/09 Python
Python实现pdf文档转txt的方法示例
2018/01/19 Python
Django中使用Celery的方法示例
2018/11/29 Python
PyQt5实现简易电子词典
2019/06/25 Python
详解pycharm连接远程linux服务器的虚拟环境的方法
2020/11/13 Python
HTML5 Canvas实现放大镜效果示例
2020/03/25 HTML / CSS
三星新西兰官网:Samsung新西兰
2019/03/05 全球购物
丹麦优惠购物网站:PLUSSHOP
2019/03/24 全球购物
护士个人简历自荐信
2013/10/18 职场文书
播音主持专业个人自我评价
2014/01/09 职场文书
工作个人的自我评价
2014/01/14 职场文书
安全宣传标语口号
2014/06/06 职场文书
四风问题查摆剖析材料
2014/10/11 职场文书
三八节活动主持词
2015/07/04 职场文书
golang 接口嵌套实现复用的操作
2021/04/29 Golang
Python读取和写入Excel数据
2022/04/20 Python