
被401困住的一上午Header Editor让我把改请求头变成了顺手的事【免费下载链接】HeaderEditorManage browsers requests, include modify the request headers, response headers, response body, redirect requests, cancel requests项目地址: https://gitcode.com/gh_mirrors/he/HeaderEditor那天上午九点我的浏览器里一片飘红。开发环境的页面加载一次控制台就蹦出一串 401团队下午要给客户演示而后端同事还在开会。问题的根源说出来有点可笑接口需要一个Authorization认证头而我的本地代码里没有。就加一个请求头这么点事我却在浏览器、代码、代理工具之间折腾了四十分钟——改代码要重启项目、手动在控制台里加又不持久、找个现成的代理工具又杀鸡用牛刀。说白了这不是一个改不了的问题而是一个没有顺手工具的问题。然后同事从抽屉里翻出他用了很多年的一个浏览器扩展名字朴素得不像话Header Editor。它到底干了什么一句话就能说清它在你和服务器之间给每一个进出的网络请求留了一扇可以随时打开的门。改请求头、改响应头、改响应体、把请求重定向到别处、甚至干脆取消某个请求——都在这扇门的范围内。官方文档里有一句我很喜欢的大实话HE本身并不具备任何功能它只是提供了管理和编写规则的能力。翻译成人话就是它不替你决定要改什么而是给你一套写规则的环境。规则写得越细它执行得越准。这正是它和那些一键伪装 UA的小插件最本质的区别——后者是别人替你写好的规则前者是让你自己写。如果你愿意可以把每次网络请求想象成一个快递包裹。Header Editor 就是那个在门口检查包裹的人能改标签、能拆开重写里面的内容、能改派送地址也能直接拒收。第一站给开发接口戴上身份牌我的第一个需求很简单让所有发往本地开发接口的请求自动带上认证头。操作路径比想象中短得多点击浏览器右上角的 HE 图标打开管理面板点右下角的添加按钮新建一条规则匹配条件填网址前缀http://localhost:3000/api/执行动作选修改请求头加一行Authorization: Bearer dev-token-xxx保存规则立即生效不用重启浏览器从那一刻起只要 URL 以这个前缀开头请求就会自动戴上身份牌。四十分钟没解决的事三十秒办完了。顺带说一句这个匹配条件比你想的灵活。它支持好几种匹配方式而且可以组合使用匹配类型说明典型用法网址前缀以某个前缀开头只命中本地开发接口域名含子域名的完整域名针对某个站点生效网址包含查询参数的完整地址精确锁定某个接口正则表达式标准 JS 正则匹配一类 URL 模式请求方法GET/POST/PUT 等只处理写操作资源类型网页、图片、脚本等只处理静态资源记住两个小规则勾了多个匹配条件得全部满足才生效而排除规则正好相反——只要命中任意一条排除这条规则就绕道走。第二站跨域报错从等后端改变成自己改下午场景换了。前端页面要请求一个第三方接口被 CORS 拦得死死的。搁以前这种问题只能客客气气地找后端配合再排期、再上线来回一两天。现在我自己动手新建一条规则动作选修改响应头加上Access-Control-Allow-Origin: *之类的头保存刷新报错没了。这里有个容易踩的坑官方 FAQ 专门提过开发者工具里不会显示修改后的响应头但这不代表没生效。你可以拿content-type改成text/plain做实验页面立刻变成纯文本但开发者工具里显示的仍然是text/html。所以判断规则有没有起作用别只看 Network 面板。再送你一个小技巧想把某个头删掉不用专门设删除操作把它的值写成_header_editor_remove_即可自 3.0.5 起一直有效。第三站网页变脸——连响应体都能改对你没看错响应体也能改。我拿它做过一件很无聊但很好玩的事把页面里所有的 baidu 替换成 Google。规则里选修改响应体自定义函数里写一行return val.replace(/baidu/g, Google);页面刷新全部替换成功。这个能力在调试时格外好用——比如临时替换某个接口返回的字段值验证前端逻辑都不用动服务器。两个提醒一是默认按 UTF-8 解码遇到非 UTF-8 编码的老站点需要在规则里手动指定编码二是 Chrome 下启用修改响应体时浏览器会提示Header Editor 已开始调试此浏览器这是它调用了chrome.debuggerAPI 所致不想要这个提示可以在选项里关掉该功能。第四站顺手把烦人的请求拦在门外用了一阵子后我整理出几个高频场景全是一个规则解决一类烦恼的典型反防盗链把图片请求的Referer改成允许的来源防盗链图片立刻能显示加速访问把加载缓慢的公共库请求重定向到国内镜像页面秒开强制 HTTPS一条正则把所有 http 请求重定向到 https屏蔽跟踪直接取消加载某些统计、广告脚本前两个靠重定向请求后一个靠取消请求。取消的姿势有两种普通规则里把目标头改成_header_editor_remove_或者自定义函数里返回_header_editor_cancel_自 4.0.3 起支持。比如下面这个函数凡是带utm_source的跟踪链接直接不放行if (val.includes(utm_source)) { return _header_editor_cancel_; }第五站让规则学会临场发挥普通规则改的是静态值但如果你的认证令牌每两小时轮换一次呢完整版支持自定义函数可以在规则里写 JS动态生成请求头。比如这样生成一个带时间戳的令牌const ts Date.now(); return Bearer token- ts - Math.random().toString(36).slice(2);有几个细节值得知道函数里改的是传入的对象JS 引用传递直接改val就能生效不用返回文档也诚恳地建议——能用普通规则完成的就别上自定义函数规则越简单越容易排查问题。这个功能目前只用于重定向、改请求头、改响应头这三类动作。规则多了以后分组、优先级、云同步规则攒到几十条就该好好管理了。我的做法是按环境分组本地调试一组、测试环境一组、生产环境一组按项目再分。哪组要临时停用一键关掉就行。规则的优先级决定执行顺序高优先级的先跑。比如安全头这类规则我永远放最高优先级确保它最先执行。换电脑、换浏览器、或者想分享给同事时导入和导出功能一键搞定。从 4.0.5 起还多了云同步——但它不是存在 HE 自己的服务器上而是借道浏览器自带的同步Firefox Sync、Chrome Sync 这类你的规则躺在浏览器厂商的服务器里容量大约 100KB规则特别多的话可能传不上去这时候还是老老实实走导入导出。完整版还是精简版一道选择题Header Editor 分两个版本安装前值得花三十秒搞清楚能力完整版 (Full)精简版 (Lite)改请求头 / 响应头 / 重定向 / 取消✅✅修改响应体✅✅DNR 高性能模式Firefox 有✅自定义函数✅❌排除规则里用正则✅Chrome/Edge 下 ❌精简版跑的是 declarativeNetRequest 模式性能更好、更省资源适合绝大多数日常使用完整版多出来的自定义函数和排除正则是给玩得深的人准备的。官方建议也很直接没什么特殊需求就用 Lite。另外注意Edge 目前只有完整版Firefox 上两个版本都有。一个值得记住的边界用了大半年我也摸清了它的边界讲出来免得你踩同样的坑有些特殊 URL 是扩展无权修改的比如 Chrome 的扩展商店页面规则对它们一律无效伪装 UA 只能影响服务器的判断页面里用 JS 本地判断的伪装不了隐私模式下规则默认不生效需要在扩展详情页里单独开启允许在隐身模式下运行改响应体多少会影响一点访问速度和资源占用不是必需就别全站开启至于隐私这件事它的承诺很干脆100% 免费、没有广告、不收集任何数据、规则全部存在本地。代码完全开源GPL v2.0不放心的话随时可以去翻。想自己折腾源码的仓库在这里git clone https://gitcode.com/gh_mirrors/he/HeaderEditor核心逻辑集中在src/pages/background/request-handler/目录构建命令在package.json里build:chrome_v2、build:chrome_v3分别对应完整版和精简版一看就懂。最后想说的一点你每天可能发出几千个网络请求但真正过手看过其中几个Header Editor 给我的感觉不是多了一个多厉害的工具而是它把浏览器到底听谁的这个问题的答案重新放回了我手里。它不替你决定改什么但把改的能力交给你——至于你要不要用、用得多深那是你自己的另一道题了。【免费下载链接】HeaderEditorManage browsers requests, include modify the request headers, response headers, response body, redirect requests, cancel requests项目地址: https://gitcode.com/gh_mirrors/he/HeaderEditor创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考