火山小视频app爬虫(For iOS)
- 本教程分为iOS跟Android两个版本
环境: macOS + Charles(抓包工具)+iPhone SE(iOS 13)
准备工作:
-
Charles 选择Proxy->Proxy Settings 将HTTP Proxy设置为8899,点击OK
page1image63692304.png
- 查看本机IP
- 打开手机设 打开设置--WLAN 点击Wi-Fi名右边的感叹号--选择底部配置代理--代理(改为手动)--填入代理服务器主机名(第2步中的IP)--填入代理服务器端口(图1设置的8899)
page3image63440096.png
- 打开浏览器,地址栏中输入chls.pro/ssl安装证书。
page4image63690016.png
点击允许后,去设置中的通用--描述文件 从这里可以看到已下载的描述文件Charles Proxy CA.点击描述文件--右上角安装。
page4image63685024.png
page5image63620944.png
至此描述文件安装完成,但此时抓包工具Charles https的数据包还是无法解析,具体原因是iOS9.0之后,安装完描述文件后,需要打开 设置--关于本机--证书信任设置 选择针对根证书启用完全信任
page5image63620528.png page6image47160880.png
至此,就可以愉快的使用Charles来解析数据包了。
开始抓包
-
首先在应用商店中下载火山小视频app。
-
打开Charles,此时弹出窗口提示有新的连接,选择Allow允许即可。
- 此时所有的手机流量会通过Charles进行代理,以至于Structure中连接的数量居多。我们可以利用Charles的过滤功能,仅留下我们需要的火山小视频的连接
- 通过分析各数据包,找到信息流中所在的数据包。
- 此时我们可以用python编写爬虫,发送模拟的GET请求,拿到数据进行解析。
模拟此HTTP请求需要需要URL,请求头('Host','User-Agent','Cookie'),以及参数(从Charles中获得)
火山小视频app爬虫(For Android)
-
Android版本略微复杂,主要原因是Android 7.0之后默认不信任用户添加到系统的CA证书。带来的后果是如果Android版本大于等于7,在安装完Charles的证书之后,还是只能抓取http内容,加密的https是无法解析的。
-
目前有三种解决方案:
-
需要反编译app
- 在源码中AndroidManifest.xml文件中添加如下配置:
<manifest ... > <application android:networkSecurityConfig="@xml/network_security_config" ... > ... </application> </manifest>
- 然后在res目录下新建一个xml文件夹,之后在res/xml/路径下新建文件network_security_config.xml
<network-security-config> <domain-config> <domain includeSubdomains="true">你要抓取的域名</domain> <trust-anchors> <certificates src="@raw/证书文件名"/> </trust-anchors> </domain-config> </network-security-config>
-
在res目录下新建一个raw文件夹,将手机上安装的证书文件放入res/raw/目录下,证书格式:pem,ca等(chales的话就是将你在手机浏览器打开http://charlesproxy.com/getssl下载的证书放入即可),步骤2中的证书文件名,就是你放入res/raw/目录下文件的名字
至此,配置完重新运行项目,就可以看到报文了。
-
将抓包软件的证书安装成系统证书(需ROOT不建议)
-
系统证书目录:
/system/etc/security/cacerts/
-
其中的每个证书的命名规则如下:
<Certificate_Hash>.<Number>
文件名是一个Hash值,而后缀是一个数字。 -
文件名可以用下面的命令计算出来
openssl x509 -subject_hash_old -in <Certificate_File>
将抓包软件的证书用上述命令计算出 Hash 值,将其改名并复制到系统证书目录. 此时你应该可以在 设置->安全->加密与凭据->信任的凭据 的系统标签页看到你新加入的证书,将其启用即可顺利抓包
-
-
Android模拟器 市面上现有的android模拟器(如:夜神模拟器、网易MuMu模拟器)安卓版本都在Android7.0以下,可以完美安装抓包软件证书。*
-
网友评论