Java Proxy

本地服务启用

docker 快速启动, 以下是docker-compose.yml的内容

 1version: '3.8'
 2
 3services:
 4  mitmproxy:
 5    image: clibing/alpine-mitmproxy
 6    container_name: mitmproxy
 7    ports:
 8      - "19090:8080" # 代理的端口
 9      - "19091:8081" # 代理的web管理, 默认监听0.0.0.0, 通过web可以进行请求的查看、数据的篡改 
10    volumes:
11      - './ca:/workspace/home/.mitmproxy:rw' # 将生成的证书挂外保存,防止容器重启重新创建证书,关联的证书都需要同步更新,耗时浪费时间

证书的导入

浏览器(以firefox为例)

  1. Firefox –> 偏好设置 –> 网络设置 –> 选择手动配置代理
1http代理: 0.0.0.0  端口为: 19090

其他默认即可

  1. 打开浏览器输入 http://mitm.it/ 选择对应的操作系统

macos导入

打开上述的pem文件

修改证书需要管理员密码

jdk导入

1sudo $JAVA_HOME/bin/keytool -import -trustcacerts  \
2-alias mitmproxycert                                 \
3-keystore $JAVA_HOME/jre/lib/security/cacerts   \
4-file `pwd`/mitmproxy-ca-cert.pem

这是需要输入两次密码,第一个密码为sudo需要的密码,第二个密码为jdk的密码,默认为changeit,然后会提示确认信息,输入

上图因为sudo已经执行过了,sudo没有要求输入

移动端下载

  1. 配置代理服务ip,port
  2. 访问http://mitm.it
  3. 下载证书,安装pem。

java

  1. 关键代码
1    static {
2        // http proxy
3        System.setProperty("http.proxyHost", "127.0.0.1"); // PROXY_HOST:代理的IP地址
4        System.setProperty("http.proxyPort", "18080");
5        // https proxy
6        System.setProperty("https.proxyHost", "127.0.0.1"); // PROXY_HOST:代理的IP地址
7        System.setProperty("https.proxyPort", "19090");
8    }
  1. java.net.url默认支持

  2. httpclient、okhttp的配置稍后增加

数据的检查

打开浏览器输入: http://{第一步部署的服务ip}:19091 即可查看请求的详细信息、可以篡改数据

参考文档

  1. https://blog.csdn.net/weixin_45905437/article/details/103465382