使用 mitmproxy 将 URL 更改为另一个 URL

2023-11-25

我正在尝试使用 mitmproxy 和 Python 将一个页面重定向到另一个页面。我可以毫无问题地与 mitmproxy 一起运行内联脚本,但在将 URL 更改为另一个 URL 时我遇到了困难。就像如果我访问 google.com 它会重定向到 stackoverflow.com

def response(context, flow):
        print("DEBUG")
        if flow.request.url.startswith("http://google.com/"):
            print("It does contain it")
            flow.request.url = "http://stackoverflow/"

这在理论上应该有效。我懂了http://google.com/在 mitmproxy 的 GUI 中(作为 GET)但是print("It does contain it")永远不会被解雇。

当我尝试把flow.request.url = "http://stackoverflow.com"就在print("DEBUG")它也不会起作用。

我究竟做错了什么?我也尝试过if "google.com" in flow.request.url检查 URL 是否包含google.com但这也行不通。

Thanks


下列mitmproxy脚本将

  1. 将请求重定向自mydomain.com to newsite.mydomain.com
  2. 更改请求方法路径(应该是这样的/getjson?到一个新的 `/getxml
  3. 更改目标主机方案
  4. 更改目标服务器端口
  5. 覆盖请求头Host假装自己是起源

    import mitmproxy
    from mitmproxy.models import HTTPResponse
    from netlib.http import Headers
    def request(flow):
    
        if flow.request.pretty_host.endswith("mydomain.com"):
                mitmproxy.ctx.log( flow.request.path )
                method = flow.request.path.split('/')[3].split('?')[0]
                flow.request.host = "newsite.mydomain.com"
                flow.request.port = 8181
                flow.request.scheme = 'http'
                if method == 'getjson':
                    flow.request.path=flow.request.path.replace(method,"getxml")
                flow.request.headers["Host"] = "newsite.mydomain.com"
    
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 mitmproxy 将 URL 更改为另一个 URL 的相关文章

随机推荐