对 itchat 微信登陆的login.py文件中源码简单查看一下。
从头看。19行。 load_login()重构方法
ctrl 点击 方法追一下
可以看到core中的对login方法的描述。
30行 login登陆
获取uuid,获取二维码。
48行 登陆验证
默认没有登陆,while True 请求 验证接口,直到返回200. 跳出两层循环。
80行 获取uuid
92行 获取二维码的uuid
105行,获取二维码
检测是否登陆
**140行 在登陆后,需要获取几个参数 **
** skey 。wxsid 。wxuin 。pass_ticket。**
170行 获取用户初始化信息
213行 更新移动端的状态
228行 心跳包
前面一直没什么好说的。这里的话,相对更重要一点。
retryCount :记录异常的错误。 超过5次就退出循环。
276行
启动线程,并设置守护线程。
其实是因为有 while True 的缘故,为了避免出现孤儿进程。
在主线程结束时同时kill掉子线程。
283行 同步检查
返回之前的 228行 看一下,如果检测出错,就结束心跳。
302行 获取消息
再次返回心跳函数,可发现 若无异常,一直保持请求,
321行 登出,删除一些初始化的数据