感谢:https://zhuanlan.zhihu.com/p/24302048
爬取所需要的环境与工具:
后端:Node.js + MongoDB
代理服务器:Anyproxy
一个安卓模拟器
服务器环境:
Node.js + MongoDB
首先介绍一下Anyproxy, 这是一个基于Node.js的代理服务器,本项目中,Anyproxy的作用如下:若把我们本机当做代理服务器,手机模拟器中的微信当成客户端,那么其运作原理可以如下图所示。手机客户端(Client)发送请求给代理服务器(Server,即本机),本机再将这个请求发送给微信服务器,微信服务器返回信息需要经过本机,再由本机传递给手机客户端。
在这个过程中,本机承担中间人的作用,而接受到微信返回的信息后,我们可以对那个信息植入脚本,再发送给手机客户端。这就是中间人攻击。
步骤如下(参考自 :https://zhuanlan.zhihu.com/p/24302048)
1.新建一个Node.js项目,新建MongoDB数据库(可先在本地上进行调试),新建一个名为blog的库,名为articles的Collections.
2.运行终端执行下面这个命令安装Anyproxy:
sudo npm -g install anyproxy
3.生成证书,使其支持https
sudo anyproxy --root
4.启动Anyproxy, 运行
sudo anyproxy -i
5.在安卓模拟器中安装证书:
现在微信上任何联网操作,在运行Anyproxy的终端中或打开 http://localhost:8002 应该都可以看到服务器返回的信息了。如图所示:
在这过程中,若你有任何疑问,可见最上面感谢的那篇文章。
接下来植入脚本,植入脚本我们是通过修改配置文件实现的。
Mac在 /usr/local/lib/node_modules/anyproxy/lib/.
Windows据说在 APPdata\Roaming(若不是的话请找一下Windows npm默认全局安装的位置)。
我们只需要修改rule_default.js内的replaceServerResDataAsync:function(req,res,serverResData,callback) 函数
步骤如下:
2.于是对带有profile-ext的链接的回复(有两种,一种是页面格式,一种是json(第二页以后就是json))进行植入脚本。将其返回的所有信息存入之前所创建的MongoDB数据库blog里的Collections中(见GitHub里rule_default.js文件的getToMongodb()函数,建议先连接本地的MongoDB,成功后再连接服务器的)。
3.在模拟器上往下拖,保存所有的推送。
4.新建一个js文件,负责通过前面所爬取到的articles里的文章链接爬取文章并保存到数据库中(GitHub里对应crawl.js)。
5.大功告成,接下来就差前端渲染数据展现博客了。这些不是今天的主题。
成果展示:https://huanxiangke.com (可阅读原文跳转)
目前网站还不是很完善,见笑了。
当然,做的过程中你可能会遇到各种问题,希望能够利用搜索引擎解决,当然也欢迎在下方同我讨论。
版权声明:本站内容全部来自于腾讯微信公众号,属第三方自助推荐收录。《<博客重构>基于Anyproxy使用"中间人攻击"爬取公众号推送》的版权归原作者「幻象客」所有,文章言论观点不代表Lambda在线的观点, Lambda在线不承担任何法律责任。如需删除可联系QQ:516101458
文章来源: 阅读原文
幻象客微信公众号:Castofzhq
手机扫描上方二维码即可关注幻象客微信公众号