文章所使用Python版本为py3.5
1.微信服务器返回一个会话ID
微信Web版本不使用用户名和密码直接登录,而是采用二维码登录,所以服务器需要首先分配一个唯一的会话ID,用来标识当前的一次登录。
通过查看网络请求我们找到了这个 二维码图片代表的随机字符串,(IcelandB9Entig==),
2.通过会话ID获得二维码
然后找到该随机字符串的来源请求
请求方式为 GET形式 , 具体连接为:
https://login.wx.qq.com/jslogin?
appid=wx782c26e4c19acffb
&redirect_uri=https%3A%2F%2Fwx.qq.com%2Fcgi-bin%2Fmmwebwx-bin%2Fwebwxnewloginpage
&fun=new&lang=zh_CN
&_=1492591577859
我们只需要改变最后一个变量 _值即可获得新的字符串序列: (这个值是当前距离林威治标准时间的毫秒)可以自行构造!
通过分割,我们就可以获得随机字符串,自己在前端页面上构造一个二维码出来.
import tornado.ioloop import tornado.web import requests import time import re import json import urllib.request,urllib.parse import random WECHAT_SESSION_ID = None WECHAT_TIMESPAN = None SESSION_ID_URL = 'https://login.wx.qq.com/jslogin?appid=wx782c26e4c19acffb&redirect_uri=https%3A%2F%2Fwx.qq.com%2Fcgi-bin%2Fmmwebwx-bin%2Fwebwxnewloginpage&fun=new&lang=zh_CN&_={0}' class HomeHandler(tornado.web.RequestHandler): def get(self): print('\n--------------------') global WECHAT_SESSION_ID global WECHAT_TIMESPAN WECHAT_TIMESPAN = str(time.time()) sesssion_url = SESSION_ID_URL.format(WECHAT_TIMESPAN) response = requests.get(sesssion_url) # 获取验证码,随机字段 WECHAT_SESSION_ID = re.split('=', response.text, 2)[-1].strip().replace('"', '').replace(';', '') print('Session_id : ',WECHAT_SESSION_ID) self.render('index.html',session_id = WECHAT_SESSION_ID)