使用Python拦截安卓模拟器网络请求

一、引言

1.1 声明

声明:
  本文章仅供学习交流使用,不提供完整代码,严禁用于商业用途和非法用途,否则由此产生的一切后果均与本人无关,请各位自觉遵守相关法律法规。
  本文章未经许可禁止转载,禁止任何二次修改(加工)后的传播;若有侵权,联系删除。

交流、合作请留言,24小时内回复!

1.2 简介

在开发和测试移动应用时,监控和分析网络请求是非常重要的一环。本文将介绍如何使用Python拦截安卓模拟器上APP发送的数据包,并记录特定URL请求的请求参数和响应。我们将使用mitmproxy作为代理工具,并通过Python脚本实现拦截和记录功能。

二、原理介绍

2.1 代理服务器

  代理服务器是位于客户端和服务器之间的中间服务器,它可以拦截、修改或记录客户端和服务器之间的通信。通过将安卓模拟器的网络流量导向代理服务器,我们可以捕获并分析APP发送的网络请求。

2.2 mitmproxy

  mitmproxy是一个开源的中间人代理工具,支持HTTP和HTTPS流量的拦截和修改。它提供了一个Python API,允许我们编写自定义脚本来处理网络请求和响应。

2.3 安卓模拟器配置

  安卓模拟器可以通过设置代理将网络流量导向指定的代理服务器。我们将使用mitmproxy作为代理服务器,并在安卓模拟器中配置代理。

三、环境准备

3.1 安装mitmproxy

# 打开终端直接安装
pip install mitmproxy

3.2 配置安卓模拟器代理

  本文以夜神模拟器 Android7(64bit)为例

  1. 打开安卓模拟器,进入 设置 -> 网络和互联网 -> Wi-Fi
  2. 长按当前连接的Wi-Fi网络,选择 “修改网络”
  3. 在代理设置中选择 “手动”,并输入以下信息:
    • 代理主机名192.168.0.105 (通过ipconfig命令查看本机ip)
    • 代理端口8080(mitmproxy默认端口)
  4. 保存设置。
    在这里插入图片描述

3.3 安装mitmproxy证书

  为了拦截HTTPS流量,需要在安卓模拟器中安装mitmproxy的CA证书。

  1. 在PC上启动mitmproxy:
       以下两个命令都可以,建议使用 mitmdump 代替 mitmproxy 可以避免进入交互模式。

    • mitmdump 命令
    • mitmproxy 命令
      在这里插入图片描述
  2. 在安卓模拟器中打开浏览器,访问http://mitm.it 。下载并安装适用于安卓的CA证书。
    在这里插入图片描述

四、编写python脚本

  编写一个Python脚本,使用mitmproxy的API来拦截特定URL的请求,并记录请求参数和响应。

4.1 创建脚本文件

  创建一个名为intercept_traffic.py的文件,并添加以下内容

# 示例脚本 按需修改 不可直接运行
from mitmproxy import http

# 定义要拦截的URL
TARGET_URL = "https://example.com/api"

def request(flow: http.HTTPFlow) -> None:
    # 检查请求的URL是否匹配目标URL
    if flow.request.pretty_url.startswith(TARGET_URL):
        print(f"Intercepted request to: {flow.request.pretty_url}")
        print(f"Request headers: {flow.request.headers}")
        print(f"Request content: {flow.request.text}")

def response(flow: http.HTTPFlow) -> None:
    # 检查响应的URL是否匹配目标URL
    if flow.request.pretty_url.startswith(TARGET_URL):
        print(f"Intercepted response from: {flow.request.pretty_url}")
        print(f"Response status code: {flow.response.status_code}")
        print(f"Response headers: {flow.response.headers}")
        print(f"Response content: {flow.response.text}")

4.2 运行脚本

mitmdump -s intercept_traffic.py --set termlog_verbosity=error

4.3 测试与验证

  1. 在安卓模拟器中启动目标APP,并触发目标URL的请求。
  2. 在PC上观察mitmproxy的输出,确认请求和响应被正确拦截和记录。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值