V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
kgdb00
V2EX  ›  前端开发

chrome 如何匹配所有的下载链接?

  •  
  •   kgdb00 · 47 天前 · 306 次点击
    这是一个创建于 47 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我有一个流量少延迟低的香港节点,和一个流量多延迟高的美国节点,平常使用香港节点来浏览网页,下载文件时就通过 SwitchyOmega 手动切换到美国节点节省流量,非常麻烦。

    SwitchyOmega 支持根据规则切换代理,但我想不到怎样的规则适用于所有的下载链接。

    我的需求是凡是会导致 chorme 有下载行为的链接,就自动使用美国节点下载。

    比如 chrome 遇到没有后缀的 http 链接时,会判断如果是文本文件就直接在 chrome 中显示文本的内容,如果是二进制文件就直接下载,所以不能简单的通过有无后缀来判断是否要切换代理。

    再比如遇到一些特定后缀的文件就直接下载,例如 .zip .iso .tar.gz ,但我不知道具体有多少种

    还有 github 的下载链接是通过添加 response-content-type=application%2Foctet-stream 参数告知 chrome 这是一个下载请求

    etc...

    我感觉这可能需要自己写一个插件来实现,请教大佬这要怎么实现?

    AoEiuV020
        1
    AoEiuV020   47 天前   ❤️ 1
    怎么看都只能写个下载管理器的插件才能实现的,
    Xushet
        2
    Xushet   47 天前 via Android   ❤️ 1
    根据文件类型后缀检测?
    ahhui
        3
    ahhui   47 天前   ❤️ 1
    有些下载地址是先情求得到 cdn 的 key,然后才 302 条转到目标地址下载,而这个 key 会检测 IP 的,如果 IP 不一样下载会失败。
    hsfzxjy
        4
    hsfzxjy   47 天前 via Android   ❤️ 1
    应该是是 response 的 content type 在影响,感觉没有比尝试发一个请求更靠谱的办法
    InDom
        5
    InDom   47 天前   ❤️ 1
    自己写规则来实现,因为你需要的响应头是已经请求回来的数据了。

    比如 github 的下载 直接把 https://github-releases.githubusercontent.com/ 加入规则即可 其他的也同理

    至于你想的那种需求,只能是下载管理器的实现,或者拦截响应头,如果是特定名单,就断开链接,重新走到其他方式下载,自己内建代理下载,

    但是 考虑到某些下载链接有防盗链,一次性有效等问题,也不合适,比如某些论坛收费附件可能导致二次收费。
    ch2
        6
    ch2   47 天前   ❤️ 1
    1. 监听下载事件 chrome.downloads.onCreated,获取 finalUrl
    2. 把 finalUrl 添加到 pac 脚本里
    3. chrome.proxy.settings.set ,把刚刚修改的 pac 脚本设置生效
    kgdb00
        8
    kgdb00   47 天前
    感谢各位回复,我研究了一下插件编写觉得太麻烦就放弃了,我现在 SwitchyOmega 中建立 2 个自动切换的代理,一个默认使用香港节点,一个默认使用美国节点。

    默认使用香港节点的把一些耗流量的 url 配置成使用美国节点
    默认使用美国节点的把一些需要低延迟的 url 配置成使用香港节点

    能凑合用
    kgdb00
        9
    kgdb00   47 天前
    担心流量被过度消耗的时候就切换到默认为美国节点的自动切换配置,觉得打开网页慢的时候就切换成默认使用香港节点的自动切换配置。

    我的美国节点只是延迟低一些,打开网页也没有特别慢
    kgdb00
        10
    kgdb00   47 天前
    @kgdb00 我的美国节点只是延迟高一些
    VZEXEZVzzz
        11
    VZEXEZVzzz   47 天前 via iPhone
    可以考虑用轻量下载器接管 chrome 下载比较省心 比如 ndm,或者老牌 idm
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1398 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 23:52 · PVG 07:52 · LAX 15:52 · JFK 18:52
    ♥ Do have faith in what you're doing.