fix(server-replay): 在重放耗尽后应用额外请求策略
作者: coygeek创建于 2026年8月10日更新于 2026年8月10日
□ 总结
目标储存库:`mitmproxy/mitmproxy'。
当服务器重放配置没有“ 服务器 replay reuse” 时, 消耗最后的可重放响应会空出重放地图 。 之后的每一个请求都会绕过"server replay extra",包括一个不再有可回放响应的相同请求,并被允许到达上游服务器.
这与该选项的有文件记载的合同相矛盾:在回放时没有找到可回放的响应的‘server replay extra'控制请求. 它还使`404 ' 等数字政策在最后保存的响应被消耗之后不再静静地适用。
□ 复制步骤
以下仅使用回回转源和mitmproxy的显式代理模式.
- 将此保存为`起源地.py':
从 http.server 导入 BaseHTTP RequestHandler, ThreadingHTTPServer 中
从 pathlib 导入路径
类 Handler( BaseHTTP RequestHandler) :
def do GET( 自定义):
以 Path ("ground.log"). open ("a",编码="utf-8") 为日志 :
log.write( self. path + “\n” )
b “原生反应\n”
自定义( 200)
自动. send header ("Content- Length", str (len( body)))
自定义.end headers ()
自我.wfile.write( body) (中文(简体) ).
def 日志 message( 自,格式, *args) :
通过
线索 HTTPServer ( ("127. 0.0. 1", 18080), Hander. serve forever ()).
- 从一个终端开始源头:
嘘 : > 来源.log python3 来源.py
3. 在第二个终端,记录一个请求并停止录音代理:
嘘
轻轻地弹出
- 听 - 主持人 127.0.0.1 o
- 听着 18081 \
- 保存- 流文件 1. mitm
-- flow-detail 0( D)
记录 pid=$!
睡觉 1
卷起-正极-正极-正极 http://127.0.0.1:18081\
http://127.0.0.1:18080/记录
杀死“ $record pid”
等待“ $record pid ”
wc - l 来源.log
来源计为"一".
- 启动服务器重放 404 策略,懒惰上游连接,默认不可重用重放行为:
嘘 轻轻地弹出
- 听 - 主持人 127.0.0.1 o -听着 18082 \ \
- 服务器重放1.mitm
--server- replay-tra 404 \ - 设置连接 战略=懒惰?
- 不服务器 - 重播 - 新鲜? -- flow-detail 0( D) 重放 pid=$( $) ! 睡觉 1
5. 发送记录的请求一次,并检查原产地:
嘘
卷起 -- noproxy " --output / dev/null -- write-out '{http code}\n}'\
- 代理 http://127.0.0.1:18082\
http://127.0.0.1:18080/记录
wc - l 来源.log
答复是重播的 " 200 " ,来源计数仍然是 " 1 " 。
- 第二次发出同一请求:
嘘 卷起 -- noproxy " --output / dev/null -- write-out '{http code}\n}'\
- 代理 http://127.0.0.1:18082\ http://127.0.0.1:18080/记录 wc - l 来源.log
杀死“ $ replay pid ” 等待“$replay pid”
□ 预期行为
第二回放请求不再有可回放的响应,所以
. . . . . . .
内容来源: mitmproxy/mitmproxy