起始
- begin的网址为https://mp.weixin.qq.com/beginSpider
- 代理服务器访问begin
- begin并不是真实存在的,所以会返回404或者是空白页等
- 此时进入anyProxy的beforeSendResponse回调,发现请求地址beginSpider是一个开始抓取的信号,所以调用服务端接口,获取第一个公众号首页的链接
- 后端服务器返回第一个公众号首页链接的脚本,形如
$log为给前端查看的log信息,后面的script代表两秒后跳转到指定url$log <script>setTimeout(function(){window.location.href=$url;},2000);</script>
- 前端收到脚本后执行,展示log,并在2秒后跳转
循环
- 手机客户端跳转指定url
- 代理服务器访问url
- 此时可以获取到完整的html或者js数据
- 此时进入anyProxy的beforeSendResponse回调,将获取到的完整数据发送给后端服务器
- 后端服务器收到完整数据以后,分析出多条文章及其链接,保存至数据库,并且返回下一个抓取的链接。如果没有抓到数据,直接跳至下一个公众号。下一个抓取的链接如下判定,如果当前抓取公众号的offset(翻页偏移)未达到这个抓取公众号记录的需要抓取的offset,继续抓下一页,否则抓取下一个公众号。如果不抓取更多公众号,则不返回url,本次结束。
- 前端收到脚本后执行,展示log,并在2秒后跳转
URL格式
首页
https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz=%s&scene=124#wechat_redirect
翻页
参数说明
_biz是公众号id 任意公众号文章的html代码中有带 offset跳过数量 pass_ticket会在访问公众号首页时 微信浏览器自动加上 后端从url获取 appmsg_token会在第一页结果的html中 后端从html获取(window.appmsg_token)
注意
首页获取到的数据格式与翻页获取到的数据格式不同 注意区分