爬虫|利用Anyproxy爬取微信公众号文章及临时链接转永久链接

优采云 发布时间: 2020-08-03 16:02

  

  一、先说整体的解决方案

  1、通过搜狗进行公众号文章的采集,这样获取到的文章URL是一个带时间戳的临时链接。

  

  2、通过安卓模拟器+Anyproxy代理抓包剖析陌陌客户端打开临时链接时与其服务器恳求的合同内容,得出永久链接。

  

  3、通过按键精灵模拟或Python脚本在微信号上发送临时链接内容文章采集链接,只有在安卓模拟器上的微信号上发送了内容,Anyproxy代理能够抓取到相关的包内容。

  二、再说具体的解决方案,主要是第2点

  1、通过搜狗进行公众号文章的采集,这样获取到的文章URL是一个带时间戳的临时链接。在用这个做数据采集时,经常会出现“请输入验证码”。我尝试用IP代理池,但目前仍未找到可以避免或叫解决这个问题的IP代理服务器。我这块的处理方法是用动态IP VPS服务解决。具体的解决步骤我这块就不细讲啦文章采集链接,因为这个不是本文章的重点。

  

  2、通过安卓模拟器+Anyproxy代理抓包剖析陌陌客户端打开临时链接时与其服务器恳求的合同内容,得出永久链接。我用的是win10系统。

  1)一个陌陌客户端:下载一个安卓模拟器,在这个模拟器上安装一个陌陌app。

  2)一个陌陌个人号:为了采集内容除了须要陌陌客户端,还要有一个陌陌个人号专门用于发送临时链接。

  3)本地代理服务器系统:使用的方式是通过Anyproxy代理服务器将临时链接和永久链接发送到我们自己的服务器上进行替换。具体安装设置方式在前面详尽介绍。

  我使用的是Anyproxy。这个软件的特性是可以获取到https链接的内容。在2016年年初的时侯微信公众号和陌陌文章开始使用https链接。并且Anyproxy可以通过更改rule向服务器发送恳求。下面开始介绍安装与配置过程。

  1、安装NodeJS

  2、在命令行或则终端运行 npm install -g anyproxy

  3、生成RootCA,https须要这个证书:运行命令anyproxy --root

  4、启动anyproxy运行命令:win+R打开运行,输入anyproxy -i;参数-i是解析HTTPS的意思;

  5、安装证书,在安卓模拟器中安装证书:启动anyproxy,浏览器打开:8002/fetchCrtFile,能获取rootCA.crt文件

  6、设置代理:安卓模拟器的代理服务器地址是wifi链接的网段,可以通过把dhcp设置为静态后见到网段地址,看完后别忘了再设置为手动。代理服务器默认端口是8001。

  

  检测是否成功方式:打开模拟器上的陌陌,点击到任意一个文章中,在终端都可以见到响应的代码滚动。如果没有出现,请复查手机的代理设置是否正确。我下边的截图是打开浏览器地址:8002见到anyproxy的web界面。

  

  我在陌陌app上打开的是文章的临时链接,通过合同剖析可以晓得永久链接是重定向到302时的location中。

  4)修改Anyproxy文件rule_default.js,获取抓包中的合同内容。

  rule_default.js文件在*\node_modules\anyproxy\lib\rule_default.js中,找到replaceServerResDataAsync: function(req,res,serverResData,callback) 函数,修改函数内容,劫取须要的内容。因为我只须要劫取返回为302的code内容,所以我只有当statusCode==302时才callback。

  

  找到replaceResponseHeader: function(req,res,header)函数,修改函数内容。获取永久链接,调用我在服务器写好的http插口,我那边插口只有两个参数:临时链接和永久链接,根据临时链接降低永久链接。

  

  好,到目前为止,通过使用Anyproxy把临时链接转永久链接的功能介绍完成啦。

  PS:使用Anyproxy可以直接获取微信公众号的全部文章(永久链接),包括点赞数,阅读数之类的信息。这样的话可以不用使用搜狗。不过这儿会有些问题,微信会封你在做这个事情的陌陌个人号,所以我采取的是使用搜狗爬文章(急),再借助Anyproxy在临时链接有效时间内更新为永久链接。

  3、通过按键精灵模拟在陌陌app上点击临时链接,或者也可以通过python脚本模拟。这块我正在编撰,等完成以后再更新上来。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线