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