注意:
web 微信的二维码是张图片 每次刷新他的路径最后会变 src = https://login.weixin.qq.com/qrcode/wYGKsfOqxA== 他实际上是访问的时候发送的请求 然后返回的二维码
我们来向这个地址发送请求 获取随机字符串
https://login.wx.qq.com/jslogin?appid=wx782c26e4c19acffb&redirect_uri=https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxnewloginpage&fun=new&lang=zh_CN&_=1530771135867
1530771135867 是个时间戳 time.time()
学会: 如果想要页面上哪个功能的话, 先看这个功能需要什么 , 然后在它的请求和前面的请求有没有生成 一个一个的找
a 去上步请求中查找想要的内容
b chrome 的使用 ,network HEADERS 预览 响应 Cookies 所有时间
c requests
2, 二维码变
二维码是可变的 刷新二维码页面
http 请求是短连接 手机扫码向微信服务发送请求 微信拿到后通知浏览器 应该是浏览器偷偷的一直像浏览器发请求检测是否扫码
浏览器向后台轮询 定时发送消息
长轮询机制 wxweb 25 秒重新发一次请求 一致不扫码的话 window.code=408; 扫码之后为 201 并拿到头像
检查用户是否已经扫码, 登录 (会将请求夯住)
# 总结:
当手机扫描 web 微信的二维码的时候, web 头像替换了二维码图片, 这是怎么做到的?
手机向微信服务发送请求 服务器要通知浏览器, 并且头像也要给浏览器, 但是服务器不能主动通知, 其实是浏览器偷偷的不停的向服务器发请求, 询问检测是否扫码, 登录
web 微信 采用长轮询机制 大约 30 秒会去发送一次请求 状态为 pending(正在发请求)
发送的请求地址 询问是否有扫码, 登录: 返回值是: window.code=408;
- https://login.wx.qq.com/cgi-bin/mmwebwx-bin/login?loginicon=true&uuid=oYESlGPUJw==&tip=0&r=-1767912478&_=1530776241202
- https://login.wx.qq.com/cgi-bin/mmwebwx-bin/login?loginicon=true&uuid=gZySpKDlIg==&tip=0&r=-1852985564&_=1530861216249
当手机扫码后的显示: 通过 basic64 获得头像信息
扫码:
- 显示头像
登录:
- 获取凭证信息
- <error>
- <ret>0</ret>
- <message></message>
<skey>@crypt_1eb7b464_f5c41b0de57761f53e7f997aa8d0d045</skey>
- <wxsid>tUHQ9XjSN+5PG43Z</wxsid>
- <wxuin>1260267625</wxuin>
- <pass_ticket>10T5q/FSioVXEEx2uv9RzJ480n5/KmkbN6mUmzLIBIWlWPyvUdiIoHj9pt3IqQPP</pass_ticket>
- <isgrayscale>1</isgrayscale>
- </error>
3, 用户初始化
发送 post 请求 Request URL:https://wx2.qq.com/cgi-bin/mmwebwx-bin/webwxinit?r=-2095646078
- data = {
- "BaseRequest":{
- "Uin":"1260267625",
- "Sid":"kL/uNX4ajYNLY+ez",
- "Skey":"","DeviceID":"e097408841221436"
- }
- }
- Request URL:https://wx2.qq.com/cgi-bin/mmwebwx-bin/webwxinit?r=-2095646078&lang=zh_CN&pass_ticket=
来源: http://www.bubuko.com/infodetail-2679052.html