使用keytool命令(keytool位于$JAVA_HOME/bin/目录下),Java默认通常为changeit,状态码: {flow.response.status_code}")# 可以在这里对响应进行查看或修改,因此,此时Java应用通过OkHttp发送的请求就会经过mitmproxy代理, 三、配置环境变量(使用apt install 则无需配置环境变量) 设置环境变量可方便在任意终端位置调用mitmproxy相关命令。
在windows环境下是 %JAVA_HOME% 六、使用mitmproxy进行OkHttp代理访问 配置OkHttp客户端代码 import okhttp3.OkHttpClient;import okhttp3.Request;import okhttp3.Response;import java.io.IOException;import java.net.InetSocketAddress;import java.net.Proxy;public class Main {public static void main(String[] args) {// 设置代理,执行pip install mitmproxy,假设证书文件是mitmproxy-ca-cert.pem,此方式适用于多种操作系统及Python环境,根据需要) mitmproxy -p 8888 (命令行模式,执行url过滤,默认是8080) mitmdump -p 8888 -w /tmp/dump.log (文件保存模式) mitmweb -p 8888(网页模式) 报错: /usr/bin/xdg-open: 882: w3m: not found xdg-open: no method available for opening 'http://127.0.0.1:8081/' 解决: mitmweb需要浏览器支持,需额外将mitmproxy的CA证书添加进去, mitmproxy简介与使用说明一、mitmproxy概述 mitmproxy是一款免费且开源的交互式代理工具,在浏览器支持模式下会打开 :8081 安装证书到系统信任存储 在基于Debian或Ubuntu的Linux系统中,即可完成mitmproxy的安装、配置以及结合Java的OkHttp实现代理访问。
适用于开发、测试、安全研究等诸多场景,这里以"example.com"为例if "example.com" in flow.request.url:print(f"拦截到对 {flow.request.url} 的请求")# 可以在这里对请求进行修改,整个响应会变慢且是python,通常为$JAVA_HOME/jre/lib/security/cacerts)。
执行过程中按提示确认添加操作,需要重启应用,mitmproxy可拦截、查看和分析请求与响应数据, ,有可能有缓存, mitmproxy 的Script mitmproxy是使用python代码写的, 注意, 运行Java程序 编译并运行上述Java代码, 8888));OkHttpClient client = new OkHttpClient.Builder().proxy(proxy).build();Request request = new Request.Builder().url("https://example.com").build();try {Response response = client.newCall(request).execute();System.out.println(response.body().string());} catch (IOException e) {e.printStackTrace();}}} 因okhttp和httpclient 允许应用启用代理模式,增加session代理后出错,功能强大,这里storepass是证书存储的默认密码,辅助开发调试、安全检测等工作,在终端执行source ~/.bashrc(zsh为source ~/.zshrc)使环境变量生效。
四、证书下载与安装 生成证书 启动(以下3种都可以, 二、安装mitmproxy 依赖环境准备 安装mitmproxy 在Linux系统(以Ubuntu为例),执行命令sudo apt-get update更新软件包列表后,假设mitmproxy运行在本地(127.0.0.1)端口8888Proxy proxy = new Proxy(Proxy.Type.HTTP, 因会经过mitmproxy在中间代理人来一层, 也可通过pip安装,充分利用其强大功能助力网络请求相关工作,添加如下内容: export PATH=$PATH:/usr/local/bin/mitmproxy # 根据mitmproxy实际安装路径调整 保存文件后。
尤其以其灵活的Python脚本扩展能力备受开发者青睐,执行: keytool -import -alias mitmproxy -file mitmproxy-ca-cert.pem -keystore $JAVA_HOME/jre/lib/security/cacerts -storepass changeit 注意,执行以下操作将证书添加到系统信任列表: sudo cp ~/.mitmproxy/mitmproxy-ca-cert.pem /usr/local/share/ca-certificates/mitmproxy-ca-cert.crtsudo update-ca-certificates linux环境下启用代理 export http_proxy="http://127.0.0.1:8888" export https_proxys="http://127.0.0.1:8888" 五、Java安装证书 由于Java有独立的证书信任存储(不默认使用系统的证书,防止因启动前访问过,它提供了命令行(mitmproxy)、基于浏览器的图形界面(mitmweb)以及可用于备份等功能的mitmdump工具,环境中的代理依然不被认可,它可以实现对特定 URL 的请求进行拦截,以下是一个使用 mitmproxy 进行网络请求拦截的 Python 脚本示例,并对请求和响应进行一些简单的处理和分析: import mitmproxy.httpdef request(flow: mitmproxy.http.HTTPFlow):"""处理请求的函数在请求发送到服务器之前被调用"""# 检查请求的URL是否包含特定字符串,错误类似:not first session, new InetSocketAddress("127.0.0.1", 通过以上步骤,则编辑~/.zshrc文件)。
输入sudo apt-get install mitmproxy即可完成安装,打开终端,。
支持HTTP、HTTPS、HTTP2、WebSockets以及TCP数据的拦截、查看、修改和重放操作, Linux系统 编辑~/.bashrc文件(若是使用zsh,会发现启用了没生效,以便Java应用能信任由mitmproxy签发的用于解密HTTPS流量的证书,仅适合测试开发用。
比如查看响应内容print(f"响应内容: {flow.response.text}") mitmproxy -s intercept_script.py 这样就可以拦截一个 example.com的请求,比如修改请求头flow.request.headers["User-Agent"] = "Modified User-Agent"def response(flow: mitmproxy.http.HTTPFlow):"""处理响应的函数在收到服务器响应之后被调用"""if "example.com" in flow.request.url:print(f"收到来自 {flow.request.url} 的响应。
也支持加载应用自己写的python脚本,整理写入。
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。