自己探索出来一套爬取微信公众号的方法,发布出来就想看看这个微信反爬虫部门什么时候封。
先上一张图片:
关于这个探索出来的方法有几点我想写在前面
1.为什么公布出来
因为原来外包需求取消不涉及商业利益
2.公布出来有什么好处么
有,通过接受大家批评,来获得提高,认识一些有意思的人。
3.发布出来这个能有效多长时间呢?
不清楚,但是目前用的是一个笨方法。我觉得封的概率不太大。具体下面说明
思路: 在 key 不和公众号绑定前,用的方法是每隔半个小时获取一个微信有效 key 然后批量获取微信文章页。
问:如何获取 key 。
思路:利用 fiddler 截获微信请求报文获取有效 key
问:截取的 key 如何导入到本地或者实现上传到 FTP 方便我后续程序处理
答:我修改了 fiddler 的 custom rules 让他可以遇到微信请求公众号的请求保留其 request 和 response 分别保存到 C 盘 text 文件具体可以参考我的博客(这个我真的不是广告,只是分享,不想了解就别点开了) 利用 fiddler 截获微信传输数据 (方便抓取公众号信息) 批量抓取微信公众号文章
问:现在一个 key 只能获取一个公众号,我该如何办?
答:目前我觉得你模拟点击电脑版的微信,截取其内容就好了。如果你要跟新 2000 个公众号,那么历史文章你只需要一个 key 在半小时内获取完一个公众号的所有文章(这个不难 几分钟就好了) 以后只需要每天模拟点开是否有新文章 如果有就加入 MySQL 。
问:我看了你的文章,要获取历史文章列表,除了很傻比的模拟点击以外,你有提供任何解决方案么?
答:有的,历史文章页通过 frommsgid 一个参数和 count 控制,修改他们就可以凭借你的 key 来获取任何时间的文章 list
问:现在抓取微信公众号不是还有搜狗,他们还不需要关注公众号
答:抓取傻逼搜狗并不能满足我一开始客户的需求,他要求至少 30 天,并且每天跟新。搜狗只能是最近 10 篇。
问:我明白了,你现在的解决方案是通过模拟用户操作微信然后截取数据进行入库对么 这样看起来效率不高啊
答:的确,但是本方法往往很难被封。其次你也可以手动获取 key 然后去批量获取历史文章啊,没有人拦着你啊 或者你发现那个 key 与公众号 ID 的加密算法被你解出来你完全可以直接用 key 啊 或者你社工好,拿到一个万能 key ,没有人拦着你去用更快更高效的方法呢。
问:我看到你 github 写的代码很烂,而且还有一个 prepare_request 的东西,那个是什么?
答:恩新手才学不就,以前并没有 Java 或者 c++功底。至于那个 prepare_request python 文件是原来 key 没有雨公众号关联的时候写的一个小脚本,之所以关联是因为我手残发帖到 V2EX 上来问大家 key 算法被微信反爬虫的小伙伴发现了就给我封掉了。。。。。所以就换了一个写
问:我看到你目录下依旧有 fiddler 的生成文件了,为什么你的程序还要再处理一遍
答:因为 fiddler 生成的是数据流文本,在每个字母之间有十六进制的 00 存在我的程序将其处理了,这个不到二十行的代码花了我一下午来折腾,说来惭愧。
问:基本上你说的我了解,但是没有代码你说个 xx
答:github 地址 如果各位大爷看我码字分享很辛苦 可否给小的一个 star 呢 转行不易,需要大家鼓励~
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.