Python爬虫之模拟登录微信wechat

不知何时,微信已经成为我们不可缺少的一部分了,我们的社交圈、关注的新闻或是公众号、还有个人信息或是隐私都被绑定在了一起。既然它这么重要,如果我们可以利用爬虫模拟登录,是不是就意味着我们可以获取这些信息,甚至可以根据需要来对它们进行有效的查看和管理。是的,没错,这完全可以。本篇博主将会给大家分享一下如何模拟登录网页版的微信,并展示模拟登录后获取的好友列表信息。

微信模拟登录的过程比较复杂,当然不管怎么样方法都是万变不离其宗,我们还是使用fiddler抓包工具来模拟登录的过程。
好了,下面让我们一步一步的详细讲解一下如何实现的这个复杂的过程。

1. 用fiddler模拟登录的请求

首先,我们在浏览器上打开微信网页版(fiddler已经在这之前打开了),然后我们会看到一个二维码的界面。

Python爬虫之模拟登录微信wechat

然后我们使用手机微信扫描并确认,这时候网页版的微信就登陆了。

好,我们去看看fiddler都给我们抓取了什么信息包。由于过程中发出的请求有点多,这里把抓包按操作进行分解并逐一分析。

1.打开微信网页

这一步骤的抓包是这样的,发现其中login.wx.qq.com的两个链接是我们需要的。

Python爬虫之模拟登录微信wechat

于是点开详细分析一下。

第一个链接如下,是一个get请求,可以看到uri中携带了一些参数appid、redirect_uri、fun、lang、_

GET /jslogin?appid=wx782c26e4c19acffb&redirect_uri=https%3A%2F%2Fwx.qq.com%2Fcgi-bin%2Fmmwebwx-bin%2Fwebwxnewloginpage&fun=new&lang=zh_CN&_=1520350213674 HTTP/1.1

 

Python爬虫之模拟登录微信wechat

经过多次抓取发现appid、redirect_uri、fun、lang参数都是固定的,而_是一串变化的数字,我们在之前模拟京东商城的文章提过,它其实是一个时间戳,如果不清楚可以回顾一下Python爬虫之模拟登录京东商城

知道这些参数,模拟get发送出去就可以了。那么我们为什么要模拟这一步呢?

是因为访问这个链接会有如下的响应,而其中有我们后续需要的重要信息uuid(后面步骤会提到)。

window.QRLogin.code = 200; window.QRLogin.uuid = "Idf_QdW1OQ==";

 

2.模拟获取二维码

微信网页提供的登录方式是扫码,我们模拟也无法避开,因此也要进行扫码验证。回到浏览器,使用开发者工具可以轻松找到二维码的链接。

Python爬虫之模拟登录微信wechat

https://login.weixin.qq.com/qrcode/AdgAWNry-w==

 

我们发现最后的字符串是变化的。等等,它和uuid一模一样的。没错,它就是uuid,用来保证二维码的唯一性。

因此,我们将上面提取的uuid拼接到后面就可以得到二维码图片了,然后进行扫码确认操作。

3.识别登录状态

为了识别扫码是否成功,这个步骤我们需要用到上面提到的第二个链接。

GET /cgi-bin/mmwebwx-bin/login?loginicon=true&uuid=Idf_QdW8OQ==&tip=1&r=68288473&_=1520050213675 HTTP/1.1

 

这个链接也是个get请求,同样携带了一些参数。

Python爬虫之模拟登录微信wechat

实际上在抓包过程发现只要我们不扫描二维码,这个链接就会一直重复发送直到二维码被扫描或者超时。

那么我们如何判断二维码是否被扫描或者已经登陆了呢?

还是通过响应的数据来进行判断的。经分析发现如果二维码一直没被扫,那么响应是这样的:

window.code=408;

 

但是如果二维码被扫描了,响应是这样的:

  • 3
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值