所谓爬虫者,给人感觉都是些拿来主义的东西,说出去还是有点汗颜。但如果爬的是自己写的东西呢?嗯,也许就理直气壮了。
一直以来,微信一直都禁用历史文章列表。并且在每一代的升级中,都加强防范。对喜好收集数据的人来说,简直是噩梦。我曾找某人帮我人工收集某公众号17-20年间的450多篇文章。整个过程持续近两个月。中途还经常连哄带骗地让人帮我做事情,我简直变得不像我自己。
直到我读到一篇文章:《持续更新,微信公众号文章批量采集系统的构建》(https://zhuanlan.zhihu.com/p/24302048),倒不是因为技术有多高超,而是为作者的愚公精神所折服。
wechat_spider 是笔者在github上找到一款基于 Node.js 的微信爬虫,通过"中间人代理"的原理,批量获取微信文章,包括阅读量、点赞量、评论和文章正文等。
所谓中间人代理,无非是通过抓包工具监听手机发送请求,不断地循环往数据库请求数据。
•使用代理模块 AnyProxy。代码已支持 AnyProxy 4 版本。•支持 Docker 部署。•项目可运行在个人电脑上,也可部署在服务器上。
AnyProxy是阿里开发的一个开放式的HTTP代理服务器。更重要的,它使用node开发。 官方文档 : http://anyproxy.io/cn/ Github主页:https://github.com/alibaba/anyproxy
•安装 Node,版本大于 8.8.1•安装 MongoDB,版本大于 3.4.6•安装 Redis•带微信的手机
本项目可通过docker部署。
git clone https://github.com/lqqyt2423/wechat_spider.git
cd wechat_spider
# build image
docker-compose build
# 运行实例
npm start
手机和电脑连到同一个wifi下。设置手机代理为:电脑ip:8101
。
部署之后访问http://localhost:8102/
点击rootCA。
作者很贴心地给我们服务器装好了证书,但手机,还是得自己安装。
这时候就可以开始搞了,手机访问公众号的文章列表。
——手机屏幕不停闪动。这时抓包已经开始了。
观察控制台变化:
已经在爬取数据。
系统集成了一个可视化界面,这时在访问:http://localhost:8104 :
文章已经存到数据库了。据测试,154篇拉取时间为1个小时。(公众号没人读,逃?♂️)