抓包工具的安装和配置

抓包工具的安装和配置


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 参考资料

原文地址:https://www.cnblogs.com/strivepy/p/9687012.html