如何用Python实现浏览器中YouTube URL自动替换为invidio.us?
实现思路与方案
以下是几种用Python实现该需求的可行思路,附具体实现方向:
1. 本地HTTP代理拦截重定向
这是最灵活的方案,通过Python代理拦截浏览器的HTTP请求,判断目标为YouTube时自动替换域名到invidio.us。
核心工具:使用
mitmproxy库(专门用于HTTP/HTTPS代理拦截),或自行基于aiohttp/http.server实现轻量代理。实现步骤:
- 安装依赖:
pip install mitmproxy - 编写代理脚本(示例):
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") - 启动代理:
mitmproxy -s your_script.py - 浏览器设置代理为
localhost:8080,并安装mitmproxy的CA证书以支持HTTPS拦截。
- 安装依赖:
优缺点:仅影响设置了代理的浏览器,不修改系统配置;但需要手动配置浏览器代理,首次需信任证书。
2. Hosts文件+本地重定向服务
通过修改系统Hosts文件将YouTube域名指向本地,再用Python起一个轻量Web服务处理重定向。
核心工具:Flask/FastAPI(快速搭建Web服务),系统Hosts文件。
实现步骤:
- 安装依赖:
pip install flask - 编写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) - 修改系统Hosts文件:添加
127.0.0.1 youtube.com www.youtube.com(需管理员权限) - 启动Flask服务,浏览器输入YouTube URL时会自动被重定向。
- 安装依赖:
优缺点:系统级生效,所有访问YouTube的请求都会被重定向;但需修改Hosts文件,可能与其他服务冲突,且80端口需管理员权限。
3. 系统URL协议关联脚本
通过注册系统URL关联,让打开YouTube链接时自动调用Python脚本完成URL转换与跳转。
核心工具:Python的
webbrowser库,系统URL关联配置(Windows注册表/macOS plist/Linux desktop文件)。实现步骤:
- 编写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]) - 配置系统URL关联:
- Windows:修改注册表,将
http://youtube.com的默认打开方式设为该Python脚本。 - macOS:通过
Info.plist文件注册URL handler,关联youtube域名。 - Linux:创建
.desktop文件,设置MimeType为x-scheme-handler/http并指定脚本路径。
- Windows:修改注册表,将
- 编写Python转换脚本:
优缺点:适合点击外部链接的场景,可配合浏览器扩展补充地址栏输入的拦截;但系统配置步骤较繁琐,不同平台操作差异大。
内容的提问来源于stack exchange,提问作者NarwahlsMeow
相关产品推荐
相关产品推荐

