Mitmproxy拦截修改请求

本页内容


拦截模式能修改http请求值和返回值,以便我们快速的去修改模拟数据,在测试软件的过程中经常会用到。

开启拦截模式

mitmproxy 的一个强大功能是对请求的拦截。拦截的请求将被暂停发往服务器,以便用户可以在将请求发送到服务器之前修改(或丢弃)请求。mitmproxy 的set intercept命令配置拦截。该命令默认绑定到快捷方式i

通常不需要拦截所有请求,因为它会不断中断您的浏览。因此,mitmproxy 期望一个流过滤器表达式作为第一个参数set intercept来选择性地拦截请求。在下面的教程中,我们使用流过滤器~u <regex>,它通过匹配请求 URL 上的正则表达式来过滤流。

按下i然后输入httpbin再输入回车。即可进入针对URL中带有httpbin关键词的拦截模式。此时我们再次输入

 curl   -x http://localhost:8080 http://www.httpbin.org/get\?from\=terminal

修改请求数据

这时候会发现该命令一直在执行中,这是因为该请求已经被拦截。我们按回车进入拦截详情。然后再按e选择对我们想要的数据进行修改。

Mitmproxy修改拦截请求数据.png

可以看出我们可以修改http请求的所有字段内容,选择要修改的内容项后,按回车进入修改修改完成后按q退出。 一直退回到Flows流列表界面后,按a把请求发送到服务端。

修改服务端返回数据

请求发送到服务端后我们发现curl命令仍然没有返回,这是因为mitmproxy对返回继续了拦截,如果我们想要修改返回值内容的话可以按回车进入flow detail中的response进行修改。如果不修改,按a把返回值发送到curl。

此页面最后编辑于2022年8月7日 (星期日) 17:26。