app爬虫

作者: king2king | 来源:发表于2019-09-26 16:27 被阅读0次

火山小视频app爬虫(For iOS)

  • 本教程分为iOS跟Android两个版本

环境: macOS + Charles(抓包工具)+iPhone SE(iOS 13)

准备工作:

  1. Charles 选择Proxy->Proxy Settings 将HTTP Proxy设置为8899,点击OK


    page1image63692304.png
  1. 查看本机IP
page2image63468336.png
  1. 打开手机设 打开设置--WLAN 点击Wi-Fi名右边的感叹号--选择底部配置代理--代理(改为手动)--填入代理服务器主机名(第2步中的IP)--填入代理服务器端口(图1设置的8899)
page2image63467296.png
page3image63440096.png
  1. 打开浏览器,地址栏中输入chls.pro/ssl安装证书。
page3image63439056.png
page4image63690016.png

点击允许后,去设置中的通用--描述文件 从这里可以看到已下载的描述文件Charles Proxy CA.点击描述文件--右上角安装。


page4image63685024.png
page5image63620944.png

至此描述文件安装完成,但此时抓包工具Charles https的数据包还是无法解析,具体原因是iOS9.0之后,安装完描述文件后,需要打开 设置--关于本机--证书信任设置 选择针对根证书启用完全信任


page5image63620528.png page6image47160880.png

至此,就可以愉快的使用Charles来解析数据包了。

开始抓包

  1. 首先在应用商店中下载火山小视频app。

  2. 打开Charles,此时弹出窗口提示有新的连接,选择Allow允许即可。

image-20190911152320066.png
  1. 此时所有的手机流量会通过Charles进行代理,以至于Structure中连接的数量居多。我们可以利用Charles的过滤功能,仅留下我们需要的火山小视频的连接
image-20190911151353099.png
  1. 通过分析各数据包,找到信息流中所在的数据包。
image-20190911151547954.png
  1. 此时我们可以用python编写爬虫,发送模拟的GET请求,拿到数据进行解析。
    模拟此HTTP请求需要需要URL,请求头('Host','User-Agent','Cookie'),以及参数(从Charles中获得)

火山小视频app爬虫(For Android)

  • Android版本略微复杂,主要原因是Android 7.0之后默认不信任用户添加到系统的CA证书。带来的后果是如果Android版本大于等于7,在安装完Charles的证书之后,还是只能抓取http内容,加密的https是无法解析的。

  • 目前有三种解决方案:

    1. 需要反编译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/目录下文件的名字

        至此,配置完重新运行项目,就可以看到报文了。

    2. 将抓包软件的证书安装成系统证书(需ROOT不建议)

      • 系统证书目录:/system/etc/security/cacerts/

      • 其中的每个证书的命名规则如下: <Certificate_Hash>.<Number> 文件名是一个Hash值,而后缀是一个数字。

      • 文件名可以用下面的命令计算出来
        openssl x509 -subject_hash_old -in <Certificate_File>

        将抓包软件的证书用上述命令计算出 Hash 值,将其改名并复制到系统证书目录. 此时你应该可以在 设置->安全->加密与凭据->信任的凭据 的系统标签页看到你新加入的证书,将其启用即可顺利抓包

    3. Android模拟器 市面上现有的android模拟器(如:夜神模拟器、网易MuMu模拟器)安卓版本都在Android7.0以下,可以完美安装抓包软件证书。*

环境: macOS + Charles(抓包工具)+Android 4.4(夜神模拟器)

相关文章

网友评论

      本文标题:app爬虫

      本文链接:https://www.haomeiwen.com/subject/lscgyctx.html