chrome 如何匹配所有的下载链接?
我有一个流量少延迟低的香港节点,和一个流量多延迟高的美国节点,平常使用香港节点来浏览网页,下载文件时就通过 SwitchyOmega 手动切换到美国节点节省流量,非常麻烦。
SwitchyOmega 支持根据规则切换代理,但我想不到怎样的规则适用于所有的下载链接。
我的需求是凡是会导致 chorme 有下载行为的链接,就自动使用美国节点下载。
比如 chrome 遇到没有后缀的 http 链接时,会判断如果是文本文件就直接在 chrome 中显示文本的内容,如果是二进制文件就直接下载,所以不能简单的通过有无后缀来判断是否要切换代理。
再比如遇到一些特定后缀的文件就直接下载,例如 .zip .iso .tar.gz ,但我不知道具体有多少种
还有 github 的下载链接是通过添加 response-content-type=application%2Foctet-stream 参数告知 chrome 这是一个下载请求
etc...
我感觉这可能需要自己写一个插件来实现,请教大佬这要怎么实现?
----------------------- 以下是精选回复-----------------------
答:怎么看都只能写个下载管理器的插件才能实现的,
答:根据文件类型后缀检测?
答:有些下载地址是先情求得到 cdn 的 key,然后才 302 条转到目标地址下载,而这个 key 会检测 IP 的,如果 IP 不一样下载会失败。
答:应该是是 response 的 content type 在影响,感觉没有比尝试发一个请求更靠谱的办法
答:自己写规则来实现,因为你需要的响应头是已经请求回来的数据了。
比如 github 的下载 直接把 https://github-releases.githubusercontent.com/ 加入规则即可 其他的也同理
至于你想的那种需求,只能是下载管理器的实现,或者拦截响应头,如果是特定名单,就断开链接,重新走到其他方式下载,自己内建代理下载,
但是 考虑到某些下载链接有防盗链,一次性有效等问题,也不合适,比如某些论坛收费附件可能导致二次收费。
答:1. 监听下载事件 chrome.downloads.onCreated,获取 finalUrl
2. 把 finalUrl 添加到 pac 脚本里
3. chrome.proxy.settings.set ,把刚刚修改的 pac 脚本设置生效
答:文档:
https://developer.chrome.com/docs/extensions/reference/downloads/#event-onCreated
https://developer.chrome.com/docs/extensions/reference/proxy/
可能还需要 storage 保存当前下载未完成的 url,等下载完成后再从 pac 中移除
https://developer.chrome.com/docs/extensions/reference/storage/
答:感谢各位回复,我研究了一下插件编写觉得太麻烦就放弃了,我现在 SwitchyOmega 中建立 2 个自动切换的代理,一个默认使用香港节点,一个默认使用美国节点。
默认使用香港节点的把一些耗流量的 url 配置成使用美国节点
默认使用美国节点的把一些需要低延迟的 url 配置成使用香港节点
能凑合用
答:担心流量被过度消耗的时候就切换到默认为美国节点的自动切换配置,觉得打开网页慢的时候就切换成默认使用香港节点的自动切换配置。
我的美国节点只是延迟低一些,打开网页也没有特别慢
答:可以考虑用轻量下载器接管 chrome 下载比较省心 比如 ndm,或者老牌 idm
0条评论