微信公众号文章抓取实践

前言

1、目前微信对每个正常的微信号每天限制访问一定数量的公众号,即一个绑定手机号的正常使用的微信每天可以抓取一定数量的微信账号。

2、采用关键词发现的模式,目前抓取了百万级的微信公众号信息,拿到biz(base64解码后为公众号数字ID)

{

“media_id” : “headline_today”,

“biz” : “MjM5ODEyOTAyMA==”,

“media_name” : “今日头条”,

“media_desc” : “今日头条官方帐号”

}

抓取步骤

1、搭建中间人代理,安装root CA证书解密ssl内容,需要代理支持编程处理request和response。

方案一:开源anyproxy https://github.com/alibaba/anyproxy nodejs语言实现

方案二:开源mitmproxy https://mitmproxy.org/ python语言实现

我采用的mitmproxy方案,编写script.py处理微信的流量,并启动代理服务:

mitmdump –host –insecure -p 1080 -s “script.py –xxxxxx yyyyyy”

2、PC版微信不支持代理,安装Proxifier软件,配置规则强制微信程序流量走我们搭建的代理。

image

启动微信PC版,点击公众号,查看历史消息。

可以看到代理成功截获了微信的请求,拿到了request的全部参数。

image

3、保存微信公众号历史消息列表页所需要的关键参数:biz,uin,key,pass_ticket

biz为微信公众号的ID,一般不变

uin为我们自己的微信账号ID,一般不变

key为微信的加密参数,动态变化,一个新的key有一定的有效期,大致30分钟

pass_ticket为微信的加密参数,一般不变

4个关键参数中,biz为所需要抓取的公众号的ID,需要自己找齐;uin和pass_ticket为一个微信号基本固定的信息;key为有时效的口令。

4、采用模拟点击的方式多次重复点击多个微信号,产生多个有效的key。

方案一:模拟精灵,傻瓜操作

方案二:http://pywinauto.github.io/ python编程实现,工程化开发

5、把拿到的N个key随机的拿去遍历1000个公众号,得到公众号的最新文章信息。

image

目前搜狗的验证码、微信号每日抓取量是比较大的障碍,有好的思路欢迎交流。

About 智足者富

http://chenpeng.info

发表评论

电子邮件地址不会被公开。 必填项已用*标注

You may use these HTML tags and attributes:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>