我想要一个不安全站点的反向代理(使用mitmproxy / mitmdump)。我希望代理在非标准端口(非443)上运行,并且只能通过https访问。这是我最近得到的:
mitmdump -p 2112 --mode reverse:http://localhost:41781 --set block_global=false --certs full.pem
当我通过https:https://localhost:2112
访问它时,此方法有效。问题是,也可以通过http:http://localhost:2112
来访问它。
如何禁用它并使其只能通过https访问?
答案 0 :(得分:0)
我必须同意斯特芬。尝试使用nginx,f5或其他工具,因为它们更适合用作反向代理。虽然,如果您确实想坚持使用mitm
,则应该有一个名为http2的选项,该选项采用布尔值来禁用诸如--no-http2
这样的http访问。所以您的命令应该看起来像这样
mitmdump -p 2112 --mode reverse:http://localhost:41781 --no-http2 --set block_global=false --certs full.pem
答案 1 :(得分:0)
(必须:如果需要生产级反向代理,请使用Apache / nginx /...)
Mitmproxy当前始终支持HTTP和HTTPS以简化设置(由于配置错误,我们有很多错误报告)。如果要禁用HTTP,可以编写一个检测flow.request.scheme == "http"
的插件,然后调用flow.kill()
或设置flow.response = mitmproxy.http.HTTPResponse.make(<redirect data here>)
。最后,您还可以确保在mitmproxy的response
钩子中设置HSTS标头。