金字塔是用一块块的石头堆砌而成的。 -- 莎士比亚
写在前面的话
最近我在学习Python,思前想后决定第一个小项目做微信机器人,这里还得提两个开源项目 wxBot和weixinBot,受他们的启发,我也开始做这个工作,在实践过程中遇到了诸多的坎,在这里一一说明。
字符编码
python2在Unicode支持方面做的很不好,所以引发了诸多的问题,因为我还是python新手,所以我干脆选择了python3,但是在我的Mac上运行死活不可以,总是因为字符的问题直接crash。后来去了公司后,在Windows系统下却完美运行,这个例子告诉我们,除了语言本身,执行脚本的系统,编码的字符集以及terminal都会对脚本的运行产生影响。所以一定要注意!!
微信协议之二维码生成
在我们使用Chrome的调试工具去抓取web微信的请求时候,我看到了https://login.weixin.qq.com/qrcode/Yc4l7gdCaA==
这样一条请求,换取了二维码。随后我就直接使用pyqrcode.create()
将这个url变成了二维码,用手机去扫描,然而结果就是不可以,后来发现了https://login.weixin.qq.com/l/Yc4l7gdCaA==
这个才是真正扫描的URL。
微信协议之等待扫码
网上有很多资料对这个URL的解释都近乎一致,https://login.wx.qq.com/cgi-bin/mmwebwx-bin/login?loginicon=true&uuid=QZGKmF5Xzg==&tip=0&r=-213619558&_=1464797438192
,大家都认为_
是表示时间戳,但是我第一眼看就觉得不像,至少不是一个常规的时间戳,因为时间戳应该是10位数字,当然能否得到13位时间戳呢?是可以的算上毫秒就可以,那么微信的轮询真的是用时间戳?我只能说第一次绝对是时间戳,后面的循环就不是了,而是依次叠加一毫秒,大家可以去看看请求。
最后说两句,我觉得前人的经验是宝贵的,那么我们也不一定要一成不变,有时候去看看,走走前人走过的路,往往都会有新的收货
本文由 陌上花开 创作,采用 知识共享署名4.0 国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
最后编辑时间为: Jul 1, 2016 at 06:52 am