1. 搜狗,微信 搜狗可以搜索微信是很早的事情了,我们可以搜索公众号,公众号文章等。也可以显示某公众号最近十条群发消息。消息列表中,所有的链接都形如: 1 http://mp.weixin.qq.com/s?timestamp=1483613949src=3ver=1signature=8fa-25ftmqsfu7wv3tohjt6decjzgnpkqne8ysgeozg3yo7xkz6jnoclenrxvvra1wxc-vhktbddpwt0b8lfrdkb**gx1peq9p86iuhqhmpair5j3wpae0dqgi8sb2vmdad41f1*qmbhrwdzcmrklm3anystwjz5-gjifxpvvuk= 参数中包含时间戳和签名,也就是
1. 搜狗,微信
搜狗可以搜索微信是很早的事情了,我们可以搜索公众号,公众号文章等。也可以显示某公众号最近十条群发消息。消息列表中,所有的链接都形如:
1 | http://mp.weixin.qq.com/s?timestamp=1483613949&src=3&ver=1&signature=8fa-25ftmqsfu7wv3tohjt6decjzgnpkqne8ysgeozg3yo7xkz6jnoclenrxvvra1wxc-vhktbddpwt0b8lfrdkb**gx1peq9p86iuhqhmpair5j3wpae0dqgi8sb2vmdad41f1*qmbhrwdzcmrklm3anystwjz5-gjifxpvvuk= |
参数中包含时间戳和签名,也就是这个链接是临时的,有过期限制,并且不能修改时间戳的值(不知道怎么签名的啊)。那怎么把这个临时链接转换为永久链接呢?
2. 临时链接转永久链接
(1)获取 wxuin
每一个微信号都对应一个唯一的 wxuin ,并且永久不变(纯猜测)。那怎么获取知道你的 wxuin 是多少呢?
打开 chrome,打开 developer tools,扫码登录微信网页版,仔细观察 network 栏目中的请求,在请求https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxnewloginpage?…的响应中内容中,包含标签wxuin
节点。wxuin 标签中的值就是你刚才扫码登录的微信号对应的 wxuin 了。
(2)转换姿势
拿到 wxuin 还没有结束,先计算其 base64 值,然后赋值给 uin,将 uin 作为新的请求参数,追加到临时链接末尾,形如:
1 | http://mp.weixin.qq.com/s?timestamp=1483613949&src=3&ver=1&signature=8fa-25ftmqsfu7wv3tohjt6decjzgnpkqne8ysgeozg3yo7xkz6jnoclenrxvvra1wxc-vhktbddpwt0b8lfrdkb**gx1peq9p86iuhqhmpair5j3wpae0dqgi8sb2vmdad41f1*qmbhrwdzcmrklm3anystwjz5-gjifxpvvuk=&uin=******** |
如果在浏览器中,请求新组装的 url,浏览器会直接帮你重定向到永久链接的地址,形如:
1 | http://mp.weixin.qq.com/s?__biz=mjm5ndu0mjk2mq==&mid=2651622655&idx=1&sn=ab21a3117b0d62f4dcfa772c4aa46f39&scene=0#wechat_redirect |
这就是这篇文章的永久链接了。
(3)代码实现
知道了转换的方式,代码实现就很简单了,如下:
123456789101112 | # -*- coding: utf-8 -*-import base64import requests# uinuin = base64.b64encode('your-wxuin')def convert_to_permanent_url(temp_url):pre_redirect_url = "".join([temp_url, "&uin=", uin])response = requests.head(pre_redirect_url)permanent_url = response.headers['location']return permanent_url |
嗯,相信你一目了然。
更多关注微信公众号:jiuwenwang