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

每天早上七点三十,准时推送干货

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

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

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

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

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

  • 使用抓包工具获取应用访问请求

  • 模拟浏览器访问动态网页

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

抓包底层原理

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

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

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

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

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

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

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

图片来源于网络

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

  • Windows 平台:Fildder

  • Mac 平台:Charles

  • iOS 系统:Thor

  • Android 系统:HttpCanary

以上四个抓包工具,基本上覆盖上所有主要平台。下面阿粉将会着重介绍 Charles,其他平台的工具感兴趣的小伙伴可以自行研究一下。

Charles 抓包实践

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

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

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

下载地址:https://www.charlesproxy.com/download/

安装完成之后,打开 Charles,工具栏介绍如下:

图片来自网络

简单使用

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 中看到多个请求,其中 https://mp.weixin.qq.com/mp/getappmsgext,该请求返回信息中包含文章阅读数,点赞数,评论数量。

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

总结

本篇文章阿粉主要跟大家聊了下 Charles 基本抓包技巧,掌握 Charles 抓包技巧之后,爬取手机端 APP 应用请求可以分为以下几步:

  1. 通过抓包工具获取访问请求

  2. 研究请求之间的关系

  3. 解析返回信息

  4. 编写爬虫程序,数据存库

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

帮助文档

  1. https://www.cnblogs.com/meitian/p/7327088.html

  2. https://juejin.im/post/5b8350b96fb9a019d9246c4c

  3. https://www.jianshu.com/p/bb8231f48a07

< END >

如果大家喜欢我们的文章,欢迎大家转发,点击在看让更多的人看到。也欢迎大家热爱技术和学习的朋友加入的我们的知识星球当中,我们共同成长,进步。

往期精彩回顾

龙岭迷窟真的这么好看?今天我们就用 Java 爬取豆瓣数据好好分析一下!
这些神奇 Bug,碰到真是让人目瞪狗呆!

听说,这些表情包只有程序员才懂

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值