IDM 扩展老劫持下载、下载文件名乱码?我写了个小扩展让它按需开关
用 Windows 的同学大概都用过 IDM(Internet Download Manager)。这玩意儿让人又爱又恨:
- 爱它:在各种冷门或莫名其妙的网站上,它的浮动条嗅探音视频是真的好使,随便一点就能把切片或流媒体拉下来。而且它的多线程下载速度比浏览器和基于 Aria2 的下载工具要快。为了这个功能,浏览器的 IDM Integration Module 扩展就必须常驻开启。
- 恨它:IDM 的扩展实在太霸道了。它会监听并强行劫持 Chrome 的下载事件。如果你平时和我一样会用到其他带下载功能的扩展,比如用 SingleFile 保存网页、用油猴脚本/扩展批量抓 Pixiv 插画、推特原图或者采集图片,IDM 就横插一脚。结果就是:其他扩展设置的指定存储目录失效、自定义的文件名变成哈希乱码,最后还会全被一股脑扔进浏览器的默认下载路径。
更头疼的是,IDM 主程序的排除机制太难用了,看似一堆规则,却连 blob:、data: 这种内存临时对象都不认——你想给抓图站放行?门都没有。以前为了抓某站图片,我得先手动去关 IDM,抓完再开,一天折腾好几次。
既然 IDM 自己管不住自己,那我就只能在它”捣乱”前把它关掉。扩展市场里倒是有能按规则启停扩展的管理器,但都是综合性的,就为了管一个 IDM 去装个大家伙,属实没必要。于是抽空写了一个没啥技术含量的超轻量级的 Chrome 扩展(Manifest V3),专门用来按需控制 IDM 的启停。
这个小扩展解决了什么?
它通过 Chrome 的 management API 管理 IDM 扩展的开关,实现了以下功能:
规则匹配:打开特定网站时自动关闭 IDM 扩展

在选项页里可以填入由其他扩展负责批量抓取或存档的域名(如 pixiv.net、x.com 等,我都有更专业更好用的下载扩展/脚本,没必要调用 IDM 下载)。只要浏览器中有任意标签页打开了这些网址,扩展就会在后台静默禁用 IDM,保证抓图/打包扩展正常走浏览器原生下载机制并保留文件名与路径。当关掉所有相关标签页后,IDM 会被自动重新开启。说白了,这功能适合固定站点——像 Pixiv、推特这种你常年要抓且你有比 IDM 更好的抓取扩展的地方,配一次规则就再也不用管了。
快捷键与单击切换:应对随手存网页

我习惯用 SingleFile 扩展把看到的有意思的文章原样抓下来存档,因为这种抓取情况会在随机网站上发生,不适合用规则匹配。所以设计了一个手动快捷启动机制,遇到这种场景,可以直接按快捷键 Alt + Shift + D(快捷键可以在 chrome://extensions/shortcuts 里修改),或者鼠标左键直接点一下固定在工具栏的扩展图标,就能一键关闭 IDM;存档完毕再点一下就能切回去。比手动去 chrome://extensions/ 页面折腾一整套——找到 IDM、关掉、切回存档页、存档、再切回来打开——要方便不少。
图标状态实时反馈
为了不让工具栏多一个毫无信息量的静态图标,扩展在后台用 Canvas 动态渲染图标状态(最近刚学会的技巧,必须用一下):
- 开启状态:绿底 + 白色下载箭头,代表 IDM 正在全局接管。
- 禁用状态:绿底白箭头 + 红色禁止圆环与 45° 斜杠(🚫),悬停图标时,提示还会直接显示是哪个标签页触发了自动禁用。
极简部署与代码结构
整个扩展就 4 个文件:
idm-smart-controller/
├── manifest.json # 扩展必须的声明文件
├── background.js # 标签页监听、动态图标绘制、IDM 状态自动切换
├── options.html # 设置页
└── options.js # 设置保存与同步机制
Chrome/Edge 扩展本地安装方法
- 去「蓝奏云」或者「GitHub Release」下载打包好的扩展
-
把文件解压放在一个本地文件夹内(比如
D:\Extensions\idm-smart-controller,这个文件夹以后别删,删了扩展就失效了)。 -
打开 Chrome 地址栏访问
chrome://extensions/,打开右上角 “开发者模式”。 -
点击 “加载未打包的扩展程序”,选中文件夹即可。
-
右键点击扩展图标 -> “选项”,配置你的抓图/白名单域名。
Firefox 扩展本地安装方法
-
去「蓝奏云」下载打包好的扩展
-
把文件解压放在一个本地文件夹内(比如
D:\Extensions\,这个文件夹以后别删,删了扩展就失效了)。 -
找到 Firefox 的安装目录(默认通常为
C:\Program Files\Mozilla Firefox\) -
在该目录下新建一个名为 distribution 的文件夹:
C:\Program Files\Mozilla Firefox\distribution\,把刚才解压的压缩包里的policies.json文件复制进去 -
打开
policies.json文件,把"install_url": "file:///D:/Extensions/idm-smart-controller-firefox.xpi"改成你实际把xpi文件放置的位置,注意这里用的是/,而不是window是下常见文件路径\ -
重启Firefox浏览器,点击扩展图标 -> “选项”,配置你的抓图/白名单域名。
-
没办法,Firefox规定只有使用企业扩展安装的签名后的扩展才有权限控制其他扩展的开关,所以只能整的如此复杂。
PS:因为最初设计就是为了应对 IDM,所以叫「IDM 智能管理器」,但其实你可以在设置页里选择其他扩展,让「IDM 智能管理器」根据规则管理其他扩展的开关。至于为什么不上架商店——要过审核还得配隐私政策、商店截图,就这么个解决小痛点的小扩展,不值得折腾。你看我连扩展的图标都没做,工具栏图标是直接用代码生成的。
扩展的代码量非常小,纯粹是为了解决浏览器下载扩展间互相打架的”小问题”。如果你也经常被 IDM 乱截胡导致抓图、网页存档时文件名乱码,不妨一试「IDM 智能管理器」这个小扩展。


不凡
2026-09-03 14:46
有个免费开源的多线程下载工具,叫fluxdown,支持windows、linux、MacOS、Android,我从IDM换到fluxdown,界面设计很现代化,用起来很不错,你可以尝鲜下,项目地址:github.com/zerx-lab/FluxDown
去年夏天
2026-09-03 18:04
最近也看到其他人在说这个,刚跑去点了个star回头再试
吴蛋蛋
2026-08-28 15:26
不错,这个太实用了,不要按不听话的禁止键了
wp张
2026-08-24 14:39
IDM不爱用,不仅是因为收费,还有你说的这个拦截范围过大的问题,还有就是不够绿色,在系统里留下太多东西.
后来改用Motrix,结果不知道什么时候开始停更了很久,
之后又换了GhostDownloader,XDown,都不好用,最后换成了FluxDown,就懒得再换了
去年夏天
2026-08-25 08:45
Motrix太重了,aria2本身几M大的东西,Motrix给配一个700MB+的前端,还动不动在移除任务时卡死。
最近Motrix恢复更新了,新版的我还没试过,据说还行,可以试试。
嗯,平心而论是这样的,其实这些下载工具都各有各的问题,无非是什么问题能忍,什么不能忍。
拥抱日出
2026-08-24 11:31
我的IDM绿色版一直跳激活,还NDM了TwT
去年夏天
2026-08-25 08:42
当年就是绿色版不是跳激活就是不升级版本就功能失效,当时其他替代品免费但又稍微不那么好用,于是一怒之下:IDM入正了😂
mekumiki
2026-08-23 18:15
其实可以将逻辑从“浏览器中有指定标签页停用扩展”改成“聚焦于某个标签页才停用,离开标签页自动启用”。
去年夏天
2026-08-23 18:21
这样设计的话:其他扩展进行下载时就不能切换到其他标签页了。比如用户在下载PIxiv的一个图集,那持续几分钟到十几分钟甚至更久的下载过程中,就需要一直盯着这个标签页,因为一旦用户离开pixiv标签页,IDM扩展就被启用了,后续下载就会开始出错。现在这样设计,下载开始后,用户可以切走浏览其他网页,等到下完了(本来下载中就需要保持标签页存在的嘛)关闭pixiv的标签页,IDM扩展就被启动了。
mekumiki
2026-08-23 18:43
确实有这个问题,抓取耗时长的时候(特别是批量抓取),离开标签页IDM还是会启用。最好的方案就只有让扩展跟抓取工具配合,让扩展读取抓取工具的工作状态,在抓取工具下载时保持IDM关闭。但这样也有些霸道,在pixiv抓取工具下载时无法调用IDM.根本问题还是需要解决chrome的bug,我试过Firefox浏览器,完全没有这个问题,但Firefox还是不能完全替代chrome,chrome的社区生态太丰富了。╮(╯_╰)╭ 无奈
去年夏天
2026-08-23 20:02
能感知其他扩展的工作状态是最好的,问题是:其他扩展并不会主动报告工作状态,chrome也不会提供类似的接口。没有实现功能基础,如果非要实现就需要往页面里注入检测JS,一个一个扩展适配过去,复杂度太高了。
吉吉如律令
2026-08-21 16:57
IDM我记得可以设置按下某个快捷键时不调用IDM进行下载。我有时需要下载的文件不支持多线程下载,但下载请求总是被IDM拦截,当时也被烦的不行,所以对这个设置印象很深
去年夏天
2026-08-21 17:07
这就是恶心的地方,他实际是「按快捷键+点击某链接」时,不调用IDM进行下载,对于扩展和脚本发起的下载快捷键无效
acevs
2026-08-21 16:18
idm好久不用。不过下载确实很少了。
去年夏天
2026-08-21 17:11
现在确实,大部分时候都在线直接看了
石樱灯笼
2026-08-21 14:35
收费流氓软件。
一直理解不了为什么这么多人用。
去年夏天
2026-08-21 14:57
就和 WinRAR 为什么怎么多人用有点像吧。
石樱灯笼
2026-08-21 15:05
WinRAR 只是个唠叨软件,不会发疯。
去年夏天
2026-08-21 16:06
IDM 年头久了,留了很多流氓设置:下载完还要合并,磨损SSD;下载记录存在注册表里;加驱,且卸载后不会删除;浏览器扩展在网络层拦截下载。
但是他的替代品在下载能力上没多好甚至更加糟糕,要么系统资源占用比C++写的 IDM 大太多了,要么多次线程重试与分段回退边缘场景比 IDM 容易撞上
CDN/WAF在429后GG,要么浏览器扩展的资源抓取基于前端 JS 实现,不如基于网络层的 IDM 扩展拦截的彻底(猫抓倒是牛逼,但抓取的步骤远不如IDM浮动条操作对小白用户好理解,虽然这个浮动条经常乱出现,或者扩展瞎拦截下载)要么预分配空间,不会动态分片文件,导致有时16个线程下载,15个飞快的跑完后一起围观最慢的那个线程慢慢爬。1线程有难,15线程围观。每次都是越下越慢。石樱灯笼
2026-08-21 17:20
多线程下载放在今天就是个伪命题。
去年夏天
2026-08-21 17:29
只要光速还有限、出海网络还有丢包、服务器有单流 QoS,多线程下载就还是刚需。
就晚上那个丢包率,指望 TCP 自恢复,单线程的速度根本起不来,又没土豪到搞条真内网专线出来,能咋办呢
石樱灯笼
2026-08-21 18:15
「服务器有单流 QoS」,服务器都有单流 QoS 了难道不会有单用户并发数限制么?
多线程本身是为了解决低带宽下TCP窗口展开太慢导致带宽无法有效使用的问题的,TCP窗口协议都更新多少个版本了……我甚至怀疑IDM这破玩意支持HTTP/3不……
去年夏天
2026-08-21 20:34
网站和 CDN 全局单用户/单 IP 限速没人敢设得太死。(除了逼你开会员的收费网盘)
单线程限速,每个 Worker/Socket 自己独立计算维持就行的,性能开销极低;
要精准限制“某用户所有连接的总带宽”,需要额外在多线程间同步用户身份状态,如果是 CDN 就更完蛋了,还要给全球节点维护一个全局的用户身份状态池子,除非非常有利可图不然没啥网站和CDN会费力搞基于用户身份的限速。
移动流量,企业,学校这些,单IP多用户很普遍,导致也不能直接基于IP限制到只允许1,2个线程。你看你的博客,图片至少也给了单IP4个以上的线程限制嘛。
现在的多线程并发更主要是应对丢包后拥塞控制导致的自我降速,HTTP/3 解决的是“队头阻塞”,解决了某个线程丢包导致所有线程都等待的问题,但进入持续状态后,底层 QUIC 还是有拥塞控制的(本质上还是BBRv2/CUBIC的那套逻辑,只是适配性改了改)依然受单线程带宽和丢包限制,面对晚高峰的网络和用户wifi信号穿墙后的丢包,再怎么改,丢包率还是会出现在带宽计算公式的分母上。单 QUIC 无论怎么调整滑动窗口,最大流量都会被拥塞控制算法死死压住。虽然拥塞算法都在尽量提高单线程吞吐量,但单线程的能力还是有限的,无法利用全部带宽。多线程能错峰互补,暴力发包(收包)无耻,但对丢包率有用。
石樱灯笼
2026-08-21 20:38
随你怎么幻想吧
去年夏天
2026-08-21 21:57
行,那我在‘幻想’里继续跑多线程,你要不先把你博客改成严格只允许单线程,来证明一下你的观点?
去年夏天
2026-08-22 00:10
不说理论了,往服务器上装个
iperf3跑一次iperf3 -P 1和-P 8看看区别不就完了,TCP和UDP都看一下。跨域吞吐差几倍是终端里实打实的字节数,实际结果可不会听从幻想。这还是凌晨只有10%不到的丢包,晚高峰20~30%丢包时,单线程的差距会更大。iperf3 -P 1(TCP 单线程)-P 8(TCP 8线程)iperf3 -u -P 1(UDP 单线程)iperf3 -u -P 8(UDP 8线程)刘郎
2026-08-21 12:57
这个问题我到时没遇到 不过这个问题好像可以后台自定义设置吧
去年夏天
2026-08-21 14:19
IDM自定义设置无法排除
blob:、data:这种内存临时对象(会被 IDM 认为语法不合法,而自动忽略),很多扩展和脚本对资源的获取依赖blob:,所以:要么直接关闭IDM的扩展,要么修改其他脚本或扩展,改成别的方式调用下载。比起挨个反馈给其他扩展作者,让他们修改,我还不如直接关了 IDM 的扩展。obaby
2026-08-21 10:10
idm购买的授权吗?
去年夏天
2026-08-21 10:24
嗯,正版的。破解版基本以年为单位,在我要用的时候出各种幺蛾子,所以后来换了正版的
花非花
2026-08-21 08:36
这东西以前的确是经典,但现在已经好多年没用过了;听说后来有个及其相似的免费平替程序
去年夏天
2026-08-21 10:02
其实打着IDM替代的软件挺多的,ABDM、XDM、NDM、FDM、aria2的套壳(比如Motrix啥的)
但是吧免费的缺点也在于此:很少有能无偿维护20年的作者,Motrix更新周期长,XDM停更4年了对中文的支持一坨,NDM的bug多,aria2的套壳们速度上不去,FDM功能太少。
IDM有点像WinRAR、7-Zip了,很老功能也就那样,但是本质工作上出幺蛾子的概率要低
fengc's Blog
2026-08-20 21:56
灵额
去年夏天
2026-08-21 10:11
嘿嘿
龙笑天
2026-08-20 18:24
很赞 火狐浏览器版本有吗
去年夏天
2026-08-20 19:18
没带电脑回来😂明天上班儿再说吧
去年夏天
2026-08-21 11:17
我研究了下Firefox的扩展权限,目前Filefox的扩展安全限制:
1、用户安装的扩展只能控制主题的开关,不能控制其他扩展的开关。(直接加载文件,无法)
2、如果扩展想要这个权限, 需要被企业策略安装(要么改注册表,要么组策略、要么改配置文件)
3、被企业扩展安装的扩展需要Mozilla 官方数字签名(也就是说必须传到扩展商店被审核一次)
太费劲了吧
龙笑天
2026-08-21 11:23
嗯 确实 火狐这限制太变态了…
去年夏天
2026-08-21 11:40
更新了文章加了火狐版的,我本地简单试了下,应该能正常工作。
龙笑天
2026-08-21 13:05
安装上了,就是不在禁止列表的域名时,目标扩展也一直是禁用状态啊
去年夏天
2026-08-21 14:14
1、只要目前有任何标签页打开了禁止列表的域名,IDM扩展都会被禁用
2、关闭打开了禁止列表的标签页后,IDM扩展会被恢复。
3、不过Firefox有个奇怪的机制,被关闭标签页的底层对象销毁是异步延迟完成的,直到新建标签页时,旧标签页才会被实际销毁。
4、So,如果需要即及时恢复,需要循环检查标签页,性能不友好。
龙笑天
2026-08-21 14:16
嗯 了解了 谢谢~