zoukankan      html  css  js  c++  java
  • 抓包工具的安装和配置

    抓包工具的安装和配置


    1 Charles的安装和配置

    1.1 Charles的安装

    • 下载地址https://www.charlesproxy.com/download/
    • 安装地址:D:PythonCharles
    • 系统版本:W10 64位
    • 注册破解
      •   Registered Name: https://zhile.io
      •   License Key:  48891cf209c6d32bf4

    1.2 Charles的配置

    1.2.1 PC端证书安装

    首先打开Charles,按照如下路径依次点击:

    Help –> SSL Proxying –> Install Charles Root Certificate

     即可进入证书安装页面。在弹出的证书安装页面点击安装证书(I)...进入证书安装向导,直接点击下一步,选中将所有证书放入下列存储(P),然后点击浏览按钮,从中选择证书存储位置为受信任的根证书颁发机构,再次点击确定按钮,然后点击下一步,再继续点击下一步按钮完成导入。

    1.2.2 移动端证书安装

    以IOS系统为例,首先查看PC端Charles代理是否开启:

    Proxy –> Proxy Settings

    打开代理设置页面,确保当前的HTTP代理是开启的,即勾选中Enable transparent HTTP proxying。此代理端口为8888,也可自行修改。

    接下来将手机和电脑连接在同一个局域网下(同一个WIFI网络即可)。然后查询PC端的IP地址(不是网络IP地址,是机器的IPv4地址):

    Wireless LAN adapter WLAN:
    
       Connection-specific DNS Suffix  . :
       Link-local IPv6 Address . . . . . : fe80::a982:2d9c:45a7:7a96%5
       IPv4 Address. . . . . . . . . . . : 192.168.31.48
       Subnet Mask . . . . . . . . . . . : 255.255.255.0
       Default Gateway . . . . . . . . . : 192.168.31.1

    然后启用手机已连接网络(WIFI网络)的http代理,将服务器设置为IPv4地址端口设置为8888,然后保存。最后在PC端回出现一个提示窗口,询问是否信任此设备,点击Allow按钮即可。这样手机和PC就连接在同一个局域网内,并且设置了Charles的代理,即Charles可以抓取到流经App的数据包了。

    接下来再移动端安装Charles的HTTP证书,首先打开Charles,然后按照如下路径依次点击:

    Help –> SSL Proxying –>Install Charles Root Certificate on a Mobile Device

    此时会出现一个提示框,提示在移动端设置好Charles代理(IPv4:8888),然后在手机浏览器(移动端系统自带的浏览器)中打开http://chls.pro/ssl下载证书,然后会弹出安装证书界面,点击安装即可。最后,若IOS系统版本是10.3以上,还需要在

    设置 –> 通用 –> 关于本机 –> 证书信任设置

    中将证书的完全信任开关打开。到此,整个配置完成,打开Charles,并在手机上随便浏览一下网页,可以发现Charles已经能够抓取到数据包。

    1.3 Charles的乱码问题

    抓取的过程中发现抓取到的数据包乱码和链接unknown问题,原因是需要配置SSL代理,按如下顺序依次点击:

    Proxy –> SSL Proxying Setting –> Enable SSL Proxying

    然后点击Add,在弹出的窗口中,Host填写*Port填写443,然后点击确定,最后重启Charles即可解决乱码问题。


    2 mitmproxy的安装和配置

    mitmproxy是一个支持HTTP和HTTPS的转包程序,类似FiddlerCharles的功能。只不过通过控制台的形式操作。此外,mitmproxy还有两个关联组件,一个是mitmdump,它是mitmproxy的命令行接口,利用它可以对接Python脚本,实现监听后的处理;另一个是mitmweb,它是web程序,通过它可以清楚的观察到mitmproxy捕获到的请求。

    2.1 mitmproxy的相关链接

    2.2 mitmproxy的安装方法

    • 使用pip命令直接安装:
      C:UsersStrive>pip3 install mitmproxy

       如果网络没有问题,会直接安装好mitmproxy和所有的依赖库。

    • 在Github上下载安装包:

       下载地址:https://github.com/mitmproxy/mitmproxy/releases

    Tips:Windows上不支持mitmproxy的控制台接口,但是可以使用mitmdump和mitmweb。

    2.3 mitmproxy的证书配置

    对于mitmproxy来说,如果想要截获HTTPS请求,就需要设置证书。mitmproxy在安装后会提供一套CA证书,只要客户端信任了mitmproxy提供的证书,就可以通过mitmproxy截获HTTPS请求的具体内容。

    • 首先,运行一下命令产生CA证书,并启动mitmdump
      mitmdump
    • 接下来在用户目录下的.mitmproxy目录里找到CA证书,一共5个证书一个导入证书引导页文件
      1. mitmproxy-ca.p12: 打开该文件,会进入导入证书引导页。
      2. mitmproxy-ca.pem: PEM格式的证书私钥
      3. mitmproxy-ca-cert.pem: PEM格式证书,适用于大多数非Windows平台
      4. mitmproxy-ca-cert.p12:PKCS12格式证书,适用于Windows平台
      5. mitmproxy-ca-cert.cer: 与mitmproxy-ca-cert.pem相同,只是改变了后缀,适用于部分Android平台
      6. mitmproxy-dhparam.pem: PEM格式的密钥文件,用于增强SSL安全性
    • 然后打开mitmproxy-ca.p12文件,进入导入证书引导页,点击下一步会出现密码设置提示,不需要设置密码,直接点击下一步,勾选将所有的证书都放入下列存储(P),再点击浏览,选择证书存储位置为受信任的根证书颁发机构,接着点击确定,然后点击下一步,如果有安全警告弹出,直接点击是。这样就完成Windows上mitmproxy证书的配置。
    • mitmproxy-ca-cert.pem文件用邮件发送到Iphone上,然后再Iphone上直接点击附件并识别安装。注意,必须要用Iphone自带的邮件App收邮件,才能识别附件。
    • 最后启用手机已连接网络(WIFI网络)的http代理,将服务器设置为IPv4地址端口设置为8080(Charles的端口为8888),就可以成功HTTPS请求的具体内容。

    3 Appium的安装和配置

    Appium是移动端的自动化测试工具,类似于PC端的Selenium,利用它可以驱动Android、IOS等设备完成自动化测试,比如模拟点击、滑动、输入等操作。Appium负责驱动移动端来完成一系列操作,对于IOS设备来说,它使用UIAutomation来实现驱动;对于Android设备来说,它使用UIAutomatorSelendroid来实现驱动。同时,Appium也相当于一个服务器,可以向其发送一些操作指令,它会根据不同的指令对移动设备进行驱动,以完成不同的的工作。

    3.1 Appium的相关链接

    3.2 Appium的安装方法

    3.3 Android开发环境配置

    如果使用Android设备进行App抓取的话,还需要下载和配置Android SDK,这里推荐直接安装Android Studio(安装教程):

    在安装Android Studio之前还要确定已经安装好了Java JDK(安装教程):

    完成上述环境配置后,下载逍遥模拟器,然后进行安装:

    • 模拟器安装路径:D:Program FilesMicrovirt
    • 模拟器adb路径: D:Program FilesMicrovirtMEmuadb.exe(和Android SDK的adb重名
    • 模拟器adb版本,进入MEmu目录,终端执行命令adb
      D:Program FilesMicrovirtMEmu>adb
      Android Debug Bridge version 1.0.31
    • 查看模拟器设备端口号,进入Memu目录,终端执行命令adb devices
      D:Program FilesMicrovirtMEmu>adb devices
      List of devices attached
      127.0.0.1:21503 device

       可以查看到设备地址和端口127.0.0.1:21503

    • Android SDK路径: D:JavaAndroidSdk
    • Andriod SDK adb路径:D:JavaAndroidSdkplatform-toolsadb.exe
    • Android SDK adb版本,因为已经配置好了环境变量,所以终端任意位置执行命令adb
      C:UsersStrive>adb
      Android Debug Bridge version 1.0.40
      Version 4986621
      Installed as D:JavaAndroidSdkplatform-toolsadb.exe

    通过上述内容可以发现模拟器的adb和Android SDK的adb版本不同,为了实现Appium连接上模拟器,需要将模拟器的adb版本替换成Android SDK adb版本,并且替换后的adb命令名字必须和原来模拟器adb名字一样(例如,模拟器本来的adb文件名叫xiaoyao_adb.exe,用Android SDK 的adb.exe将xiaoyao_adb.exe替换掉后,需要将adb.exe重命名为xiaoyao_adb.exe)。

    adb命令教程1adb命令教程2

    终端任意位置执行adb connect 127.0.0.1:21503命令来链接模拟器:

    D:Program FilesMicrovirtMEmu>adb connect 127.0.0.1:21503
    already connected to 127.0.0.1:21503:5555

    终端任意位置执行adb devices -l命令来查看连接情况:

    C:UsersStrive>adb devices -l
    List of devices attached
    127.0.0.1:21503        device product:LG-H990DS model:LG_H990DS device:LG-H990DS transport_id:2

    说明PC已经正确连接到模拟器了。Appium启动一个App时需要设置Desired Capabilities(完整的Desired Capabilities配置的四个参数:

    • platformName: 平台名称,需要区分Androidios,根据具体平台填写即可。
    • deviceName: 设备名称,此处是手机的具体类型,即model的值LG_H990DS模拟器的话是类似127.0.0.1:21503这样的address:port)。
    • appPackage: App的包名,可以使用adb shell pm list packages -3命令查看机器中安装的第三方App包名:
      C:UsersStrive>adb shell pm list packages -3
      package:io.appium.settings
      package:com.youku.phone
      package:com.UCMobile.x86
      package:com.tencent.mm
      package:com.tencent.mobileqq
      package:com.jingdong.app.mall
      package:com.sina.weibo
      package:io.appium.unlock
      package:com.eg.android.AlipayGphone
    • appActivity: 入口Activity名称,通常需要以.开头,可以使用adb shell dumpsys package <package name>来查找到appActivity
      C:UsersStrive>adb shell dumpsys package com.tencent.mm

       因为显示内容太多,终端缓存不够,查看不到最开始的信息,所以将输出保存为文件(有的内容短的不需要保存为文件)查看:

      C:UsersStrive>adb shell dumpsys package com.tencent.mm > weixin.txt

       在C:UsersStrive目录下有个名为weixin.txt的文件,打开查看:

      Activity Resolver Table:
        Full MIME Types:
            vnd.android.cursor.item/vnd.com.tencent.mm.chatting.profile:
              11b256ae com.tencent.mm/.plugin.account.ui.ContactsSyncUI
            vnd.android.cursor.item/vnd.com.tencent.mm.plugin.sns.timeline:
              11b256ae com.tencent.mm/.plugin.account.ui.ContactsSyncUI
            application/*:
              14424fdc com.tencent.mm/.ui.tools.AddFavoriteUI
            ...省略掉了...
      
      Base MIME Types:
            vnd.android.cursor.item:
              11b256ae com.tencent.mm/.plugin.account.ui.ContactsSyncUI (6 filters)
            text:
              34b938e5 com.tencent.mm/.plugin.account.ui.VoiceActionActivity (2 filters)
      
        Wild MIME Types:
            text:
              14424fdc com.tencent.mm/.ui.tools.AddFavoriteUI
              17ec1c4f com.tencent.mm/.ui.tools.ShareImgUI
            audio:
              14424fdc com.tencent.mm/.ui.tools.AddFavoriteUI
            ...省略掉了...
      
      Schemes:
            weixin:
              34d28d86 com.tencent.mm/.plugin.setting.ui.qrcode.GetQRCodeInfoUI
              35497e61 com.tencent.mm/.plugin.base.stub.WXCustomSchemeEntryActivity
            tencent1103188687:
              20694647 com.tencent.mm/.plugin.webview.ui.tools.QQCallbackUI
            http:
              34d28d86 com.tencent.mm/.plugin.setting.ui.qrcode.GetQRCodeInfoUI
      
      Non-Data Actions:
          
             ...省略掉了...
             android.intent.action.MAIN:
                  22b4de0 com.tencent.mm/.ui.LauncherUI
             ...省略掉了...

       上述内容22b4de0 com.tencent.mm/.ui.LauncherUI中的.ui.LauncherUI即为查找到的appActivity

    如果想要用真机进行测试和数据抓取,具体可以参考https://github.com/appium/appium/blob/master/docs/cn/appium-setup/real-devices-android.md

    3.4 IOS开发环境配置

    Appium是一个做自动化测试的工具,用它来测试自己开发的App是完全没有问题的,因为它携带的是开发证书(Development Certificate)。如果想用IOS设备来做数据爬取的话,又是另外一回事了。一般情况下,做数据爬取都是使用现有的App,在IOS中一般都是通过App Store下载爱的,它携带的是分发证书(Distribute Certificate),而携带这种证书的App是禁止测试的,所以只有获取ipa安装包再重新签名之后才可以被Appium测试(ipa包重签名教程)。

    Appium驱动IOS设备必须在Mac下进行,Windows和Linux平台是无法完成的。Mac平台的配置:

    • macOS 10.12及更高版本
    • Xcode 8及更高版本

    配置满足要求之后,执行如下命令配置依赖库和工具:

    xcode-select --install

     这样IOS部分的开发环境就配置完成了,可以用IOS模拟器来进行测试和数据抓取了。

    如果想要用真机进行测试和数据抓取,具体可以参考https://github.com/appium/appium/blob/master/docs/cn/appium-setup/real-devices-ios.md


    4 参考资料

  • 相关阅读:
    UE 不生成.bak文件
    DOTWeen 使用
    unity admob
    UGUI 判断元素进入舞台
    unity 解决ScrollRect嵌套滚动问题
    oc字符串与c字符串转换和拷贝
    Object-c中的单例
    JAVA比较两个List集合的方法
    CentOS 7 配置静态IP
    CentOS7安装Jdk1.8
  • 原文地址:https://www.cnblogs.com/strivepy/p/9687012.html
Copyright © 2011-2022 走看看