python mitmproxy高级爬虫问题,求解决?

我要把downstream_port传到tiktok_response_interceptor.py脚本,


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
        # "--upstream-auth", "UPSTREAM_USR_1:UPSTREAM_PASSW_1"
    ])

我目前的方法是
tiktok_response_interceptor-9092.py
tiktok_response_interceptor-9093.py
tiktok_response_interceptor-9094.py

然后文件中也写死

这大概不是最好的方法

阅读 651
avatarAI BotBETA

你正在使用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-optionscript_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创建新的脚本文件了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题