您的位置:

使用Python实现Android抓包

使用Python实现Android抓包

更新:

一、安装Fiddler

要实现Android抓包需要在电脑上安装抓包工具,这里我们使用Fiddler。安装Fiddler非常简单,只需要从官网下载并安装即可。安装完成后,我们先打开Fiddler并确保其能够正常运行。在Windows系统下,可以在控制面板的“Internet选项”中配置代理,使得Fiddler可以在监听状态下捕获HTTP(S)流量。

二、设置Android设备

现在,我们需要设置Android设备以便Fiddler能够监听并捕获设备上的HTTP(S)流量,这一步需要在设备上进行操作。具体来说,我们需要将设备的HTTP代理设置成跟PC上的Fiddler相同的IP地址和端口。设备的操作步骤如下:

  1. 在设备的“设置”中找到“Wi-Fi”选项并点击进入。
  2. 长按要连接的Wi-Fi,并选择“修改网络”。
  3. 在修改网络的选项中,找到“高级选项”。
  4. 在高级选项的Proxy Settings部分,选择“手动”并输入Fiddler监听的IP地址和端口号。

输入完成后,我们就可以在设备上正常地访问网络,在Fiddler里也能看到捕获到的设备上的HTTP(S)流量。

三、使用Python脚本实现自动抓包

手动抓包虽然可以较为方便地获取到HTTP(S)请求和响应流量数据,但对于大量请求的场景,费时费力,不够高效。因此,我们可以使用Python脚本实现自动抓包功能。

在Python中,我们可以使用mitmproxy模块来实现自动抓包,mitmproxy是一款高性能、可扩展的代理服务器,通过对网络流量的拦截和转发,可以对HTTP/HTTPS请求进行实时的修改和拦截。在使用mitmproxy之前,需要首先安装mitmproxy,在命令行中输入以下命令即可完成安装:

pip install mitmproxy

安装完成后,我们再来编写Python脚本。具体步骤如下:

  1. 导入mitmproxy模块。
  2. 新建一个类并继承mitmproxy.http.HTTPFlow。
  3. 在__init__方法中,调用父类的__init__方法,设置一个实例变量self.raw_request和self.raw_response,用于存储HTTP请求和响应的原始报文。
  4. 重写mitmproxy.http.HTTPFlow中的request和response方法,在这两个方法中,将HTTP请求和响应的原始报文存储到self.raw_request和self.raw_response中。
  5. 在main函数中,创建一个mitmproxy实例,指定我们刚刚新建的类作为其参数,然后调用mitmdump.run()启动mitmproxy,开始抓包。

以下是完整的Python代码:

import mitmproxy.http

class MyFlow(mitmproxy.http.HTTPFlow):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.raw_request = None
        self.raw_response = None

    def request(self):
        self.raw_request = self.request.raw_content

    def response(self):
        self.raw_response = self.response.raw_content

def main():
    addons = [MyFlow()]
    mitmdump = mitmproxy.tools.dump.DumpMaster(options={
        "mode": "transparent",
        "verbosity": 0,
        "addons": addons,
    })
    mitmdump.run()

if __name__ == "__main__":
    main()

运行这段代码后,mitmproxy会自动启动并开始监听HTTP(S)流量。我们可以在控制台中看到捕获到的HTTP请求和响应的原始报文。这里要注意的是,mitmproxy默认只能监听到通过该代理服务器发出的流量,而不是整个网络环境中的流量。因此,我们需要在设备上设置代理,让其通过我们所在电脑上的代理发出请求。同时,如果一些应用程序不遵循系统代理设置,我们还需要针对这些应用程序设置单独的代理,否则将无法捕获它们的流量。

四、总结

通过上述步骤,我们可以使用Python编写自动化抓包脚本,捕获HTTP(S)请求和响应的原始报文。这种方式可以极大地提高工作效率,对于应用程序的调试和分析也非常有帮助。

使用Python实现Android抓包

一、安装Fiddler 要实现Android抓包需要在电脑上安装抓包工具,这里我们使用Fiddler。安装Fiddler非常简单,只需要从官网下载并安装即可。安装完成后,我们先打开Fiddler并确保

2023-12-08
抓包工具:Android TCPdump的使用方法

2023-05-14
Android 抓包工具详解

2023-05-17
AndroidStudio抓包详解

2023-05-18
使用Python实现Android UDP通信

2023-05-14
使用Python实现Android应用的实时通信

一、前言 随着移动互联网的蓬勃发展,实时通信已经成为移动应用中必不可少的功能之一。而Python语言与Android应用有着良好的兼容性,可以通过使用Python来实现Android应用的实时通信功能

2023-12-08
ADB 抓包详解

2023-05-22
使用Python实现Android Studio的自动化测试

2023-05-14
使用Python实现Android音频播放功能

一、Android音频播放功能简介 在Android上播放音频是很常见的需求,可以用于音乐播放器、游戏声音效果、语音播报等场景。Android平台本身提供了MediaPlayer来进行音频播放,但是M

2023-12-08
使用Python实现Android实时UDP通信

2023-05-14
如何使用Python实现Android应用重启

一、为什么需要使用Python实现Android应用重启 在进行Android应用的开发与测试工作中,我们经常需要在不同的情况下对应用进行重启。例如,在进行连续测试或UI自动化测试的时候,为了保证测试

2023-12-08
使用Python实现Android异步任务

2023-05-14
使用Python库实现Android网络请求

一、准备工作 在开始使用Python库实现Android网络请求之前,我们需要准备以下工作: 1. 安装Python虚拟环境 Python虚拟环境可以帮助我们在一个独立的环境中安装Python库,避免

2023-12-08
使用Android Studio轻松实现无线调试

2023-05-14
用Python实现Android USB通信功能

2023-05-14
使用Python实现Android应用的深层链接

在移动互联网时代,应用程序的深层链接变得越来越重要。通过深层链接,用户可以从一个应用程序中跳转到另一个应用程序的特定页面,而不是只跳到该应用程序的主要页面。这种跳转方式不仅提高了用户的使用体验,同时也

2023-12-08
深入了解Android Charles

2023-05-22
使用Python实现Android Studio插件自动化工

2023-05-14
使用Python实现Android图片压缩

2023-05-14
Python实现Android端post请求功能

2023-05-14