##
#
#   Copyright (C) 2002-2022 MlgmXyysd All Rights Reserved.
#
##

##
#
#   Genshin Impact script for mitmproxy
#
#   https://github.com/MlgmXyysd/
#
#   *Original fiddler script from https://github.lunatic.moe/fiddlerscript
#
#   Environment requirement:
#     - mitmdump from mitmproxy
#
#   @author MlgmXyysd
#   @version 1.0
#
##

from mitmproxy import ctx, http

class MlgmXyysd_Genshin_Impact_Proxy:

    def request(self, flow: http.HTTPFlow) -> None:
        
        # This can also be replaced with another IP address.
        REMOTE_HOST = "localhost"
        
        LIST_DOMAINS = [
            "api-os-takumi.mihoyo.com",
            "hk4e-api-os-static.mihoyo.com",
            "hk4e-sdk-os.mihoyo.com",
            "dispatchosglobal.yuanshen.com",
            "osusadispatch.yuanshen.com",
            "account.mihoyo.com",
            "log-upload-os.mihoyo.com",
            "dispatchcntest.yuanshen.com",
            "devlog-upload.mihoyo.com",
            "webstatic.mihoyo.com",
            "log-upload.mihoyo.com",
            "hk4e-sdk.mihoyo.com",
            "api-beta-sdk.mihoyo.com",
            "api-beta-sdk-os.mihoyo.com",
            "cnbeta01dispatch.yuanshen.com",
            "dispatchcnglobal.yuanshen.com",
            "cnbeta02dispatch.yuanshen.com",
            "sdk-os-static.mihoyo.com",
            "webstatic-sea.mihoyo.com",
            "webstatic-sea.hoyoverse.com",
            "hk4e-sdk-os-static.hoyoverse.com",
            "sdk-os-static.hoyoverse.com",
            "api-account-os.hoyoverse.com",
            "hk4e-sdk-os.hoyoverse.com"
        ]
        
        if flow.request.url.startswith("http://overseauspider.yuanshen.com:8888/log"):
            ctx.log.info("Block overseauspider.yuanshen.com")
            flow.response = http.HTTPResponse.make(404)
        elif flow.request.host in LIST_DOMAINS:
            ctx.log.info("Redirect " + flow.request.host)
            flow.request.host = REMOTE_HOST

addons = [
	MlgmXyysd_Genshin_Impact_Proxy()
]