教你一招,如何使用抓包工具轻松获取微信文章数据!

161 阅读6分钟

教你一招,如何使用抓包工具轻松获取微信文章数据!

Hello,大家好!五一小长假结束,今天开始上班!不过想想,再过三天就又周末,想想还是有点小激动,嘿嘿!

前几天的文章,阿粉教了大家如何爬取豆瓣短评数据。爬取网页的数据,只要我们熟悉 Xpath ,还是不难的。

不过现在移动时代,很多应用可能只有客户端软件,只能在手机上使用,并没有相应的网页。

另外还有一些网页并非是静态网页,页面内容将会采用 JS 处理数据后生成,可以发生变化。这种动态网页我们如果直接使用 HttpClient 访问网页,解析该网页结构,是无法获取到所需的数据。

针对以上两种情况,使用 xpath 解析网页,已经没啥作用。这里阿粉教大家其他技巧获取这些数据:

  • 使用抓包工具获取应用访问请求
  • 模拟浏览器访问动态网页

这篇文章我们主要讲下如何通过抓包工具获取应用访问请求,下篇我们再聊下如何通过模拟浏览器访问动态网页。

抓包底层原理

不管是小程序,还是 APP,产品页面显示的数据都是通过访问后台请求获取。现在互联网一般使用 Http/Https 协议进行传输,数据格式通常采用 json 格式。

知道这层逻辑之后,只要我们能获取这个请求链接,那我们其实就可以直接访问该请求链接,得到返回 json 数据,然后解析获取相应的数据。

这个过程最主要就是如何获取手机应用的访问请求?这里我们就需要通过借助抓包工具获取。

抓包工具原理其实也不难,简单来说,抓包工具就是一个代理软件,代理相当于一个中间人。

客户端首先将所有请求发送给代理,然后再由代理发送给服务器。服务器对请求的返回的响应先由代理拦截,再由代理返给客户端。

ps:这不就是我们常用 AOP 模式吗~

果然技术原理都是相通的。

市面上抓包工具还是比较多,常用有:

  • Windows 平台:Fiddler、Sniff Master
  • Mac 平台:Charles
  • iOS 系统:Thor
  • Android 系统:HttpCanary、Sniff Master

其中Sniff Master是一款跨平台的抓包工具,支持Windows、Mac和Android系统,界面简洁,操作简单,特别适合新手使用。它不仅能抓取HTTP/HTTPS请求,还能解析WebSocket协议,是开发者和安全测试人员的得力助手。

Charles 抓包实践

Charles 是一款基于 Java 开发的抓包工具,所以可以在多个平台(Windows/Macos/Linux)安装使用,不过阿粉还是觉得在 Mac 使用体验比较好。

Charles 除了上面提到的抓包功能之外,还可以用来拦截网络请求,方便做一些弱网测试等等,功能非常强大。

另外说下,Charles 是一款收费软件,不过可以免费试用 30 天。

简单使用

Charles 基本使用非常简单,只要打开,Charles 就会开始工作。

举个例子,访问了一下 baidu,我们可以左侧观察到这次请求,触发的所有链接。具体点击某个请求,我们可以观察到所有具体请求信息。

如果此时打开 Charles 并未生效,可以查看一下是否设置通过 Charles 代理选项。

抓包手机请求

上面的示例,我们只是拦截本地 Mac 的请求,接下来我们来看下如何拦截手机应用的请求。

首先我们需要设置手机无线网络连接,以苹果手机为例:

首先进入网络设置的,配置 HTTP 代理。

其次设置服务器 IP,即 Charles 主机 IP,端口默认为 8888

当然我们可以修改默认端口,打开 Proxy/ProxySettings ,设置端口。

设置代理之后,你可能会发现你的手机应用无法上网了,并且 Charles 抓包显示如下 :

不用急,这个问题是是因为我们访问的 HTTPS 请求连接。对于这些请求,我们还需要在手机端安装 Charles 的证书才可以。

我们需要手机 Safari 浏览器输入地址 chls.pro/ssl ,出现证书安装页面,点击安装。

然后进入设置/通用/描述文件与设备管理,找到 Charles 的证书,输入本机密码,进行安装。

最后还有一步,iOS 10.3 系统,还需要在设置/通用/关于本机/证书信任设置 里面启用完全信任 Charles 证书。

上述设置完成之后,我们再次访问请求,就可以看到 Charles 拦截手机端发出去的请求。

过滤请求

Charles 默认将会拦截所有请求连接,这个情况有时会对我们产生干扰。我们可以在 Charles 进行设置规则,Charles 只会拦截符合规则的请求:

增加规则,比如我只想拦截 m.baidu.com 的请求信息:

此时 Charles 只会拦截我们规定的请求信息,非常清爽。

抓包实战,获取微信文章的阅读,点赞数

手机代理设置完成之后,在微信中任意打开一篇公众号文章,可以在 Charles 中看到多个请求,其中 mp.weixin.qq.com/mp/getappms…

这里阿粉安利一款 IDEA 插件 gsonformat ,可以将 json 信息快速转成 POJO 类字段信息。这对于我们后期解析 json 数据,作用非常大。

总结

本篇文章阿粉主要跟大家聊了下抓包工具的基本使用技巧,特别是Charles和Sniff Master这两款工具。掌握抓包技巧之后,爬取手机端 APP 应用请求可以分为以下几步:

  1. 通过抓包工具获取访问请求
  2. 研究请求之间的关系
  3. 解析返回信息
  4. 编写爬虫程序,数据存库

对于初学者来说,可以先从Sniff Master开始学习抓包,它的界面更加友好,学习曲线更平缓。等熟悉基本操作后,再尝试使用Charles等更专业的工具。

好了,今天文章就讲到这,下一篇文章,阿粉再来介绍下,如何获取动态网页的数据,敬请期待!