mitmproxy基础

介绍

技术 特性 适用场景 说明
mitmproxy 跨平台
基于python
抓包 - 官网
- Doc
- Github
- 示例

安装

MacOS

1
$ brew install mitmproxy

Pip 安装

1
$ pip3 install mitmproxy

使用

启动代理

1
2
3
4
5
6
7
8
9
10
11
12
# 方式一:在8080端口上运行一个代理服务
$ mitmproxy
## 或者指定端口
$ mitmproxy -p 8888

# 方式二:启动mitmdump,它也会监听8080端口
$ mitmdump
## 执行自定义脚本
$ mitmdump -s script.py

# 方式3:启动一个 web 界面,用户可以实时看到发生的请求,并通过 GUI 交互来过滤请求,查看请求数据
$ mitmweb

设置代理

设置 Safari代理

【偏好设置】->【高级】->【代理:更改设置】

设置 Chrome 代理

【偏好】->【高级】->【系统】->【打开您计算机的代理设置】

配置https

打开 http://mitm.it/,安装相应证书。

操作

按键 说明
q 退出(相当于返回键,可一级一级返回)
d 删除当前(黄色箭头)指向的链接
D 恢复刚才删除的请求
G 跳到最新一个请求
g 跳到第一个请求
C 清空控制台(C是大写)
i 可输入需要拦截的文件或者域名(逗号需要用,栗子:feezu.cn)
a 放行请求
A 放行所有请求
? 查看界面帮助信息
^ v 上下箭头移动光标
enter 查看光标所在列的内容
tab 分别查看 Request 和 Response 的详细信息
/ 搜索body里的内容
esc 退出编辑
e 进入编辑模式

Java程序抓包

配置java证书信任

1
2
3
# Linux 一般在 JAVA_HOME/jre/lib/security/cacerts 下
# Mac 在 /Library/Java/JavaVirtualMachines/JAVA_HOME/Contents/Home/jre/lib/security/cacerts
$ keytool -importcert -alias mitmproxy -keystore /Library/Java/JavaVirtualMachines/jdk1.8.0_77.jdk/Contents/Home/jre/lib/security/cacerts -storepass changeit -trustcacerts -file ~/.mitmproxy/mitmproxy-ca-cert.pem

Java抓包调试

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public void beforeTest(){
logger.info("设置抓包代理......");
System.setProperty("https.proxyHost", "127.0.0.1");
System.setProperty("https.proxyPort", "8080");
}

## Java代理设置
```java
// HTTP 代理,只能代理 HTTP 请求
System.setProperty("http.proxyHost", "127.0.0.1");
System.setProperty("http.proxyPort", "9876");

// HTTPS 代理,只能代理 HTTPS 请求
System.setProperty("https.proxyHost", "127.0.0.1");
System.setProperty("https.proxyPort", "9876");

// 同时支持代理 HTTP/HTTPS 请求
System.setProperty("proxyHost", "127.0.0.1");
System.setProperty("proxyPort", "9876");

// SOCKS 代理,支持 HTTP 和 HTTPS 请求
// 注意:如果设置了 SOCKS 代理就不要设 HTTP/HTTPS 代理
System.setProperty("socksProxyHost", "127.0.0.1");
System.setProperty("socksProxyPort", "1080");

Java通过JVM启动设置代理

1
-DproxyHost=127.0.0.1 -DproxyPort=9876

参考

坚持原创技术分享,您的支持将鼓励我继续创作!
0%