You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python实现浏览器中YouTube URL自动替换为invidio.us?

实现思路与方案

以下是几种用Python实现该需求的可行思路,附具体实现方向:

1. 本地HTTP代理拦截重定向

这是最灵活的方案,通过Python代理拦截浏览器的HTTP请求,判断目标为YouTube时自动替换域名到invidio.us。

  • 核心工具:使用mitmproxy库(专门用于HTTP/HTTPS代理拦截),或自行基于aiohttp/http.server实现轻量代理。

  • 实现步骤:

    1. 安装依赖:pip install mitmproxy
    2. 编写代理脚本(示例):
      from mitmproxy import http
      
      def request(flow: http.HTTPFlow) -> None:
          # 拦截所有YouTube域名的请求
          if "youtube.com" in flow.request.host or "www.youtube.com" in flow.request.host:
              # 替换域名,保留原路径和查询参数
              flow.request.url = flow.request.url.replace("youtube.com", "invidio.us")
      
    3. 启动代理:mitmproxy -s your_script.py
    4. 浏览器设置代理为localhost:8080,并安装mitmproxy的CA证书以支持HTTPS拦截。
  • 优缺点:仅影响设置了代理的浏览器,不修改系统配置;但需要手动配置浏览器代理,首次需信任证书。

2. Hosts文件+本地重定向服务

通过修改系统Hosts文件将YouTube域名指向本地,再用Python起一个轻量Web服务处理重定向。

  • 核心工具:Flask/FastAPI(快速搭建Web服务),系统Hosts文件。

  • 实现步骤:

    1. 安装依赖:pip install flask
    2. 编写Flask重定向服务:
      from flask import Flask, redirect, request
      
      app = Flask(__name__)
      
      @app.route('/', defaults={'path': ''})
      @app.route('/<path:path>')
      def redirect_to_invidious(path):
          # 拼接完整的invidio.us URL,保留原查询参数
          query_params = request.query_string.decode('utf-8')
          target_url = f"https://invidio.us/{path}"
          if query_params:
              target_url += f"?{query_params}"
          return redirect(target_url, code=302)
      
      if __name__ == "__main__":
          # 以80端口启动(需管理员权限)
          app.run(host='0.0.0.0', port=80)
      
    3. 修改系统Hosts文件:添加127.0.0.1 youtube.com www.youtube.com(需管理员权限)
    4. 启动Flask服务,浏览器输入YouTube URL时会自动被重定向。
  • 优缺点:系统级生效,所有访问YouTube的请求都会被重定向;但需修改Hosts文件,可能与其他服务冲突,且80端口需管理员权限。

3. 系统URL协议关联脚本

通过注册系统URL关联,让打开YouTube链接时自动调用Python脚本完成URL转换与跳转。

  • 核心工具:Python的webbrowser库,系统URL关联配置(Windows注册表/macOS plist/Linux desktop文件)。

  • 实现步骤:

    1. 编写Python转换脚本:
      import sys
      import webbrowser
      
      def convert_and_open(url):
          if "youtube.com" in url:
              # 替换域名并打开新链接
              new_url = url.replace("youtube.com", "invidio.us")
              webbrowser.open(new_url)
      
      if __name__ == "__main__":
          # 接收系统传递的URL参数
          if len(sys.argv) > 1:
              convert_and_open(sys.argv[1])
      
    2. 配置系统URL关联:
      • Windows:修改注册表,将http://youtube.com的默认打开方式设为该Python脚本。
      • macOS:通过Info.plist文件注册URL handler,关联youtube域名。
      • Linux:创建.desktop文件,设置MimeType为x-scheme-handler/http并指定脚本路径。
  • 优缺点:适合点击外部链接的场景,可配合浏览器扩展补充地址栏输入的拦截;但系统配置步骤较繁琐,不同平台操作差异大。


内容的提问来源于stack exchange,提问作者NarwahlsMeow

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 16:48:19