你正在使用mitmproxy的mitmdump工具,并试图将downstream_port
参数传递给你的tiktok_response_interceptor.py
脚本。在你的方法中,你为每个不同的downstream_port
创建了不同的脚本文件,这并不是一种可扩展或可维护的方法。
一种更好的方法是使用命令行参数或环境变量来动态地将downstream_port
传递给你的脚本。这样,你就可以在启动mitmdump时使用不同的端口,而无需为每个端口创建新的脚本文件。
下面是一个使用命令行参数的例子:
在tiktok_response_interceptor.py
中,你可以使用sys.argv
来获取命令行参数:
import sys
def main(downstream_port):
# 你的代码,使用downstream_port
print(f"拦截器正在监听端口: {downstream_port}")
if __name__ == "__main__":
if len(sys.argv) != 2:
print("Usage: python tiktok_response_interceptor.py <downstream_port>")
sys.exit(1)
downstream_port = int(sys.argv[1])
main(downstream_port)
然后,在启动mitmdump时,你可以将downstream_port
作为命令行参数传递给你的脚本:
def start_mitmdump(upstream_address, downstream_port):
mitmdump(args=[
"-q", "-s", os.path.join('tiktok', 'tiktok_response_interceptor.py'),
"--mode", f"upstream:{upstream_address}",
"-p", downstream_port,
f"--add-option", f"script_args={downstream_port}"
])
注意,--add-option
和script_args
选项用于将参数传递给mitmproxy的脚本。mitmproxy会将这个参数作为一个元组传递给脚本的__init__
函数,所以你可能需要稍微修改你的脚本来处理这个元组。
这样,你就可以使用相同的脚本文件,通过改变命令行参数来监听不同的downstream_port
了。
python start_mitmdump.py upstream_address 9092
python start_mitmdump.py upstream_address 9093
python start_mitmdump.py upstream_address 9094
这样,你就不需要为每个不同的downstream_port
创建新的脚本文件了。