我正在尝试使用mitmproxy记录每个http站点,但是我的内联脚本正在发出此错误 TypeError:request()缺少1个必需的位置参数:'flow'这是预览我的代码。我确实正确设置了我的代理,并且http:和内联脚本位于同一目录下的httplogs.txt文件,但我不明白这个函数有什么问题。
import sys
def request(context,flow):
f = open('httplogs.txt', 'a+')
f.write(flow.request.url + '\n')
f.close()
答案 0 :(得分:3)
假设您使用的是更新的(2017年1月)版本
<强> TL;博士 强>
从方法签名中删除context
7个月前,mitmproxy从 响应 方法中删除 上下文 :
https://github.com/mitmproxy/mitmproxy/commit/c048ae1d5b652ad4778917e624ace217e1ecfd91
因此更新的示例脚本在此处:
https://github.com/mitmproxy/mitmproxy/blob/1.0.x/examples/simple/add_header.py
def response(flow):
flow.response.headers["newheader"] = "foo"
答案 1 :(得分:0)
谢谢,修好了!
这是我更新的记录请求片段&amp;响应标题:
def response(flow):
print("")
print("="*50)
#print("FOR: " + flow.request.url)
print(flow.request.method + " " + flow.request.path + " " + flow.request.http_version)
print("-"*50 + "request headers:")
for k, v in flow.request.headers.items():
print("%-20s: %s" % (k.upper(), v))
print("-"*50 + "response headers:")
for k, v in flow.response.headers.items():
print("%-20s: %s" % (k.upper(), v))
print("-"*50 + "request headers:")