我正在本地主机上开发一个 Web 应用程序。它需要一些手动测试,包括表单提交。一切都通过纯 HTTP 而不是 HTTPS 完成。
我想使用mitmproxy
或mitmdump
记录并重播我的表单提交。我不想代理所有网络流量,只想代理请求,比如说localhost:3000
。
理想情况下,我会在 上启动代理localhost:8080
,localhost:8080
使用浏览器发出请求,并让其将该请求转发给localhost:3000
。但另一个工作流程也可以。
如何使用mitmproxy
或记录并重播到本地主机的表单提交mitmdump
?
答案1
Mitmproxy 4 在预期用途方面走了一条不同的道路。以前,我只是用它来启动一个日志反向代理,但最近,开发方向是将 mitmproxy 安装为系统代理,然后监听来自系统的流量(包括 https 流量),然后根据你的需要过滤流量。
虽然我无法代理或在代理模式下看到本地主机流量,但幸运的是,反向代理模式仍然有效(即使文档很难找到/理解):
mitmproxy --mode reverse:http://localhost:3000/ -p 8080 --set keep_host_header=true
它以反向模式监听,并http://localhost:3000
在您的浏览器访问时作为上游进行联系http://localhost:8080/
。使用域时,发送主机标头也很重要(通常当我听到这个问题时,这是下一个问题)。
现在,您要做的就是点击,http://localhost:8080
然后您就会看到流量。
如果您替换mitmproxy
,mitmweb
那么将使用 webui 而不是终端 ui。
答案2
理想情况下,我会在 localhost:8080 上启动代理,用浏览器请求 localhost:8080,然后让它将该请求转发到 localhost:3000
您可以通过在反向代理模式下运行 mitmproxy 来实现此目的:http://mitmproxy.org/doc/modes.html
您可以通过-w outfile
在 mitmproxy UI(键盘快捷键)中指定或手动保存流来记录 HTTP 请求w
。
r
您可以通过按下或自动重播上一步中保存的对话来 在 mitmproxy UI 中重播请求:http://mitmproxy.org/doc/features/clientreplay.html