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 25 Python
跟老齐学Python之字典,你还记得吗?
Sep 20 Python
关于你不想知道的所有Python3 unicode特性
Nov 28 Python
python复制文件到指定目录的实例
Apr 27 Python
python多线程之事件Event的使用详解
Apr 27 Python
python利用小波分析进行特征提取的实例
Jan 09 Python
PIL图像处理模块paste方法简单使用详解
Jul 17 Python
python正则爬取某段子网站前20页段子(request库)过程解析
Aug 10 Python
pandas的相关系数与协方差实例
Dec 27 Python
Python常见反爬虫机制解决方案
Jun 01 Python
Python中logging日志记录到文件及自动分割的操作代码
Aug 05 Python
基于Python实现体育彩票选号器功能代码实例
Sep 16 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
Linux下进行MYSQL编程时插入中文乱码的解决方案
2007/03/15 PHP
php下过滤html代码的函数 提高程序安全性
2010/03/02 PHP
php代码中使用换行及(\n或\r\n和br)的应用
2013/02/02 PHP
php去除二维数组的重复项方法
2015/11/03 PHP
PHP实现Session入库/存入redis的方法
2017/05/04 PHP
一些有关检查数据的JS代码
2006/09/07 Javascript
Javascript 对象的解释
2008/11/24 Javascript
javascript 函数调用规则
2009/08/26 Javascript
extjs 学习笔记(三) 最基本的grid
2009/10/15 Javascript
jQuery旋转插件—rotate支持(ie/Firefox/SafariOpera/Chrome)
2013/01/16 Javascript
JavaScript淡入淡出渐变简单实例
2015/08/06 Javascript
js实现滚动条滚动到某个位置便自动定位某个tr
2021/01/20 Javascript
JS实现拖动滚动条评分的效果代码分享
2016/09/29 Javascript
如何处理JSON中的特殊字符
2016/11/30 Javascript
nodejs处理图片的中间件node-images详解
2017/05/08 NodeJs
JavaScript中关于class的调用方法
2017/11/28 Javascript
Vue中util的工具函数实例详解
2019/07/08 Javascript
jQuery实现回到顶部效果
2020/10/19 jQuery
基于JavaScript实现随机点名器
2021/02/25 Javascript
从零学Python之入门(四)运算
2014/05/27 Python
python使用Plotly绘图工具绘制水平条形图
2020/03/25 Python
Python常用模块sys,os,time,random功能与用法实例分析
2020/01/07 Python
Python切片列表字符串如何实现切换
2020/08/06 Python
浅析PyCharm 的初始设置(知道)
2020/10/12 Python
python 带时区的日期格式化操作
2020/10/23 Python
Python之Sklearn使用入门教程
2021/02/19 Python
IE下实现类似CSS3 text-shadow文字阴影的几种方法
2011/05/11 HTML / CSS
CSS3属性box-shadow使用详细教程
2012/01/21 HTML / CSS
美国床垫和床上用品公司:Nest Bedding
2017/06/12 全球购物
大专生简历的自我评价
2013/11/26 职场文书
一年级小学生评语
2014/04/22 职场文书
幼儿教师师德师风演讲稿
2014/08/22 职场文书
2014教师“四风问题”对照检查材料思想汇报
2014/09/16 职场文书
项目经理岗位职责范本
2015/04/01 职场文书
详解Redis实现限流的三种方式
2021/04/27 Redis
收音机爱好者玩机13年,简评其使用过的19台收音机
2022/04/30 无线电