搜文章
推荐 原创 视频 Java开发 iOS开发 前端开发 JavaScript开发 Android开发 PHP开发 数据库 开发工具 Python开发 Kotlin开发 Ruby开发 .NET开发 服务器运维 开放平台 架构师 大数据 云计算 人工智能 开发语言 其它开发
Lambda在线 > 幻象客 > <博客重构>基于Anyproxy使用"中间人攻击"爬取公众号推送

<博客重构>基于Anyproxy使用"中间人攻击"爬取公众号推送

幻象客 2017-11-28

感谢: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

文章来源: 阅读原文

相关阅读