返回
Fiddler和安卓手机的强强联合:一探抓包的奥秘
闲谈
2023-12-12 08:17:14
Fiddler:安卓手机抓包指南
安卓手机设置
安卓手机抓包前,需要先进行一些设置:
- 启用 USB 调试: 转到“设置”>“关于手机”>点击“软件信息”7 次>返回“设置”>找到“开发者选项”>打开“USB 调试”。
- 连接 Wi-Fi: 安卓手机和电脑连接同一 Wi-Fi 网络。
Fiddler 设置
在 Fiddler 中,进行以下设置:
- 允许远程连接: 在“工具”>“选项”>“连接”中勾选“允许远程计算机连接”。
- 解密 HTTPS 流量: 在“工具”>“选项”>“HTTPS”中勾选“解密 HTTPS 流量”。
连接安卓手机
连接安卓手机和电脑:
- 使用 USB 数据线连接手机和电脑。
- 在手机上确认“允许 USB 调试”。
- 在 Fiddler 中,连接列表中会出现新的连接。
开始抓包
开始抓包:
- 在 Fiddler 中,点击“捕获”>“开始捕获”。
- 在手机上打开要抓包的应用程序。
- Fiddler 中会显示网络请求和响应。
- 点击请求或响应查看详细内容。
代码示例
以下 Python 代码示例演示了如何使用 Fiddler 捕获请求和响应:
import json
from mitmproxy.options import Options
from mitmproxy.proxy.config import ProxyConfig
from mitmproxy.proxy.server import ProxyServer
from mitmproxy.tools.dump import DumpMaster
# Fiddler 证书
cert_path = "./fiddler-root.pem"
# 设置代理配置
proxy_config = ProxyConfig(
host="127.0.0.1",
port=8080,
ssl_insecure=True,
cert_path=cert_path
)
# 设置 dump master
dump_master = DumpMaster(Options())
# 创建代理服务器
proxy_server = ProxyServer(proxy_config)
# 启动代理服务器和 dump master
proxy_server.start()
dump_master.run()
# 处理捕获到的请求
for flow in dump_master.flow_list:
# 提取请求 JSON
request_json = json.dumps(
{
"method": flow.request.method,
"url": flow.request.url,
"headers": dict(flow.request.headers),
"body": flow.request.raw_content.decode("utf-8"),
}
)
# 提取响应 JSON
response_json = json.dumps(
{
"status_code": flow.response.status_code,
"headers": dict(flow.response.headers),
"body": flow.response.raw_content.decode("utf-8"),
}
)
# 打印请求和响应
print(f"请求:{request_json}\n响应:{response_json}")
# 关闭代理服务器和 dump master
proxy_server.shutdown()
dump_master.shutdown()
常见问题解答
1. 为什么 Fiddler 无法连接到我的安卓手机?
- 检查 Wi-Fi 连接是否正常。
- 确保 USB 数据线正常工作。
- 确认已在手机上启用 USB 调试。
2. 为什么 Fiddler 无法解密 HTTPS 流量?
- 确保已在 Fiddler 中勾选“解密 HTTPS 流量”。
- 确保手机已安装 Fiddler 证书。
3. Fiddler 上没有显示任何请求或响应?
- 检查捕获功能是否已开启。
- 确认手机上的应用程序正在进行网络活动。
4. 如何过滤 Fiddler 中的抓包结果?
- 使用 Fiddler 的筛选栏,根据主机、URL 或其他条件过滤结果。
5. Fiddler 可以用于哪些其他用途?
- 分析网络性能。
- 诊断网络问题。
- 测试 web 应用程序。