爬虫的案例我们已讲得太多。不过几乎都是 网页爬虫 。即使有些手机才能访问的网站,我们也可以通过 Chrome 开发者工具 的 手机模拟 功能来访问,以便于分析请求并抓取。(比如 3分钟破译朋友圈测试小游戏:https://zhuanlan.zhihu.com/p/35876873 文章里用的方法)
但有些 App 根本就没有提供网页端,比如今年火得不行的 抖音 。(网上有些教程也是用网页手机模拟的方法,但此法现已失效。)
对于这种情况,我们能不能抓取?要怎么抓取?今天就来分享一下。
手机抓包
本文的重点就在于 如何获取手机 App 发出的请求 。
手机 App 不像电脑上的网页能直接通过浏览器查看相关信息,在手机设备上也不方便使用工具一边流量一边调试。所以常用的方式就是通过在电脑上装一些 “抓包”软件 ,将手机上的网络请求全部显示出来。
那为什么电脑能看到手机上的网络请求?这里就要提下“ 代理 ”这个概念。我们之前的文章 听说你好不容易写了个爬虫,结果没抓几个就被封了? (https://zhuanlan.zhihu.com/p/28726244)中也讲过代理。形象的解释就是字面的理解: 所有你发出的请求不再是直接发到目的地,而是先发给这个代理,再由代理帮你发出 。所以通过代理,可以实现 隐藏 IP、进入专用网络、翻…咳咳那啥 等功能,也包括我们今天说的: 手机抓包 。
顺带说句,在公共场所别随便连不确定的免费 wifi,理论上来说,人家也可以抓你的包。
这里,我们要用的工具是 Fiddler 。它是一个较成熟的免费抓包工具。可以抓取网页、桌面软件、手机 App 的网络请求,并可以运行在 Windows、Mac、Linux 平台上,支持 iOS 和 Android。(虽说都支持,但强烈建议 Windows + Android ,后面我会有吐槽)
下载安装
搜索一下 fiddler 很容易找到它们的官网 https://m.telerik.com/fiddler,点击 download 下载即可(有个表格随便填下)。
Windows 下载后正常安装。如果是 Mac,还会有安装步骤提示,告诉你需要先安装一个叫做 Mono 的框架,以便可以执行 Fiddler.exe。另外 Mac 版还有几个小坑:
1. 运行 mono 命令用 sudo
2. 如果报一堆错闪退,请用 mono --arch=32 Fiddler.exe(这个参数还必须放在文件名前面)
3. 第一次正确运行时,程序 会卡住很长时间 ,以至于我以为还是挂了,这时请耐心等待。(我要不是正好有事走开,回来发现成功了,可能就放弃尝试了)
4. 即使正常运行了,Mac 上界面也会有各种显示的 bug,切记不要打开的弹窗的情况下切换程序,不然回来就找不到弹窗了……
5. 软件中无法复制……
6. 在 iOS 上无法抓取 HTTPS 请求(这基本就是废了),需要额外创建一个证书,但这个证书工具只能在 Windows 下运行……
所以可以的话,还是用 Windows 来做。Mac 上还有个比较知名的工具 Charles ,有用过的可以留言评价下。
配置
安装好工具后,需要做一些必要配置才能抓包。
1. Fiddler 配置
设置允许抓取 HTTPS 信息包。打开下载好的 fiddler,找到 Tools - > Options,然后在 HTTPS 的工具栏下勾选 Decrpt HTTPS traffic ,在新弹出的选项栏下勾选 Ignore server certificate errors 。这样,fiddler 就会抓取到 HTTPS 的信息包。

设置允许外部设备发送 HTTP/HTTPS 到 fiddler。设置 端口号 ,并在 Connections 选项栏下勾选 Allow remote computers to connect 。

配置好后需重启软件。
2. 设置手机代理
在抓包前,确保你的电脑和手机是在一个 可以互访的局域网中 。最简单的情况就是都连在同一个 wifi 上,特殊情况这里不展开讨论(有些商用 wifi 并不能互访)。
打开软件,鼠标放在右上角的 Online 上可以看到 本机的 IP 。或者也可以通过命令行中的 ipconfig 命令(Mac/Linux 是 ifconfig )查看。(截图仅为演示,以你自己的 IP 为准)


手机设置代理 IP。打开手机 无线网络连接 ,选择已经连接的网络连接。点击一个小圆圈叹号进入可以看到下图(安卓也类似),选择 配置代理 ,进入后把刚刚的 IP 地址 输入进去, 端口 就是 fiddler 中设置的 8888。

3. 安装证书
获取 HTTPS 请求必须要 验证证书 。电脑端访问:http://localhost:8888/ 进行安装。

手机访问前面设置的电脑的 IP 地址加端口 8888 访问,比如图中例子是:http://192.168.23.1:8888

有些安卓需要手动从设置里进入并导入证书,否则无法生效。
4. 测试
开启 fiddler 的状态下,打开手机随便一个 APP,应对可以正常访问,并且在 fiddler 中看到所发出的网络请求。

如果能访问但看不到请求,确认下有没有代理有没有生效。如果不能访问,检查下证书是否都下载并验证。还是不行则按照上述步骤再仔细配置一遍。
分析请求
完成这一步之后,接下来的事情就和网页爬虫没太大区别了。无非就是从这些请求中,找到我们需要的那几个。
fiddler 里记录的是所有请求,比较多。在操作 App 前,记得清空已有请求,方便观察。然后再配合上 filter 筛选器 ,定义筛选规则,会较容易找你需要的内容。找到请求后,在软件里查看你要的信息,或者右键点击选择将请求导出。

经过操作+观察,可以定位到获取用户上传视频列表的请求是
https://api.amemv.com/aweme/v1/aweme/post/?…
从 WebForms 栏里可以查看请求的详细参数信息。返回值是一个组 JSON 数据,里面包含了视频的下载地址。

这是一个需要经验积累的活儿,不同的网站/App,规则都不一样,但套路是相似的。对网页爬虫还不熟悉的话,先看看之前的文章 爬虫必备工具,掌握它就解决了一半的问题。
代码抓取
得到地址之后,经过在浏览器和代码里的一番尝试,找到了此请求的正确解锁方式:
1. 需要提供以下参数:max_cursor=0&user_id=94763945245&count=20&aid=1128,其中 user_id 是你要抓取的用户 ID,其他参数都可以固定不用改。
2. 需要使用手机的 User-Agent ,最简单的就是 {'user-agent': 'mobile'}
请求代码:

此方法截止国庆假期还是有效的,可以通过 Chrome 开发者工具进行模拟。之后能使用多久这就没法保证了,爬虫代码都不会是一劳永逸的。
总结下,重点是 fiddler 的抓取 ,关键是 配置、代理、证书 ,难点是 对请求的分析 。最终代码只有简单两步, 获取视频列表、下载视频 。
出处:segmentfault Crossin先生的文章
原文链接:https://segmentfault.com/a/1190000016636062
以上就是如何通过抖音uid搜索用户的全部内容,希望能够对大家有所帮助。
2023-07-16
2023-12-05
2023-09-09
2023-09-10
2024-01-29
英盛企业版苹果版
办公学习84.1MB
下载
东方财富期货苹果版
办公学习216.3MB
下载
新概念英语第一册苹果版
办公学习228.6MB
下载
菜鸟点我达苹果最新版
系统工具160.8MB
下载
HiSuiteapp苹果版
系统工具31.1MB
下载
黑洞代理苹果版
生活实用38.6MB
下载
MXF Video Converter苹果版
摄影图像53MB
下载
超级阿姨苹果最新版
生活实用186.8MB
下载
史莱姆模拟器游戏苹果版
其他软件176.6MB
下载
北京卫视养生堂app
医疗健康6.73MB
下载