求高手python爬虫:对扫描二维码的模拟登录问题

微信网页版登录需要扫描二维码,做Python爬虫的时候该如何模拟这个过程?

阅读 19.1k
2 个回答

大致步骤:

  • 从网页获取这个二维码图片的URL(用PhantomJS)

  • 用URL下载这个图片(Python)

  • 把图片保存到你的手机(ssh/adb)

  • 通过你手机端的微信,访问解析二维码的方法,把这个图片传过去(android/ios的自动化测试框架)

补充:为什么PC端不能独立完成?

微信网页版的二维码相当于是给当前浏览器生成一个Key,微信的手机客户端在已登录的状态下可以通过扫码获取这个Key,并告诉微信服务器,这话Key就是这个已登录的用户,因此PC端浏览器被授权访问聊天界面。

这个过程是由微信手机端,与微信服务器一同完成的,并不是通过Python解析出这个二维码就可以解决。

另外,我们从浏览器上看到的二维码代码是这样的:

<img class="img" mm-src="https://login.weixin.qq.com/qrcode/Ie8OIBZqJQ==" mm-src-load="qrcodeLoad" mm-src-parallel="" mm-src-timeout="10" mm-src-retry-count="2" src="https://login.weixin.qq.com/qrcode/Ie8OIBZqJQ==">

而Python用requests或urllib获取到的HTML是这样的:

<img class="img" mm-src="{{qrcodeUrl}}"  mm-src-load="qrcodeLoad" mm-src-parallel mm-src-timeout="10" mm-src-retry-count="2" src="https://res.wx.qq.com/zh_CN/htmledition/v2/images/img2e4e03.gif">

其中这个{{qrcodeUrl}}需要执行js才能生成,所以我上面写用PhantomJS来获取这个页面,然后把图片给Python。

首先你的得会python 还要会抓包分析

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题