ARTICLE DETAIL

资讯详情

深耕商务建站与企业官网运营的一线实战洞察。

electron-anyproxy数据拦截实战:修改请求头、请求体、响应头与响应体的完整教程

electron-anyproxy数据拦截实战:修改请求头、请求体、响应头与响应体的完整教程 electron-anyproxy数据拦截实战修改请求头、请求体、响应头与响应体的完整教程【免费下载链接】electron-anyproxy A http/https proxy client, using to analyze and mock.项目地址: https://gitcode.com/gh_mirrors/el/electron-anyproxyelectron-anyproxy是一款基于 AnyProxy 构建的 HTTP/HTTPS 代理客户端主打数据拦截能力。无论你是前端开发、接口调试人员还是测试工程师都可以借助它轻松完成修改请求头、修改请求体、修改响应头、修改响应体四大拦截操作还能实现接口 Mock 与网速模拟。本文从零开始用最少的代码带你跑通一次完整的数据拦截实战。一、electron-anyproxy 是什么为什么需要数据拦截在日常开发中我们常遇到这些场景场景传统做法用 electron-anyproxy接口还没写好前端要联调干等后端拦截请求直接返回本地 Mock 数据想测试异常返回让后端改代码拦截响应临时修改状态码和响应体排查线上用户-Agent 差异抓包改代码重发拦截请求篡改请求头发送验证弱网表现断网模拟内置网速限制模拟各种网段而 electron-anyproxy 的数据拦截全部通过规则文件完成规则文件就是一个普通的 JavaScript 模块结构简单、热加载方便新手也能在 5 分钟内上手。二、快速上手三步启动数据拦截工具第一步安装并启动先获取项目代码并安装依赖git clone https://gitcode.com/gh_mirrors/el/electron-anyproxy npm install npm run start启动后默认监听8001端口主界面支持网络抓包、规则配置、网络模拟和数据 Mock 四个功能模块还内置中英文界面。第二步配置系统代理将系统代理或浏览器代理指向127.0.0.1:8001。抓取 HTTPS 流量时需要先安装工具生成的根证书并信任它否则只能看到 HTTPS 握手而无法解密内容。第三步准备你的第一个规则文件规则文件导出若干钩子函数最核心的是这两个beforeSendRequest在请求发出前执行用来改请求请求头、请求体、路径、协议beforeSendResponse在响应返回给客户端前执行用来改响应响应头、响应体、状态码项目在rule_sample/目录下提供了 8 个可直接运行的官方示例下文实战均以此为基础对应源码可参考 lib/rule_default.js 中的默认规则结构与 lib/requestHandler.js 的调用时机。三、实战一修改请求头User-Agent 篡改参考示例rule_sample/sample_modify_request_header.js把发往 httpbin.org 的请求 User-Agent 改成自定义值*beforeSendRequest(requestDetail) { if (requestDetail.url.indexOf(http://httpbin.org) 0) { const newRequestOptions requestDetail.requestOptions; newRequestOptions.headers[User-Agent] AnyProxy/0.0.0; return { requestOptions: newRequestOptions }; } }验证方式curl http://httpbin.org/user-agent --proxy http://127.0.0.1:8001返回的 user-agent 即为篡改后的值。修改任意请求头都是同样的套路拿到requestDetail.requestOptions.headers改完原样返回。四、实战二修改请求体POST 数据改写参考示例rule_sample/sample_modify_request_data.js拦截 POST 请求并替换请求体内容*beforeSendRequest(requestDetail) { if (requestDetail.url.indexOf(http://httpbin.org/post) 0) { return { requestData: i-am-anyproxy-modified-post-data }; } }注意返回的键名是requestData而不是requestOptions。请求体会在发出前被整体替换适合做参数注入、敏感信息脱敏等测试。五、实战三修改响应头注入自定义标识参考示例rule_sample/sample_modify_response_header.js在响应头中加入自定义字段*beforeSendResponse(requestDetail, responseDetail) { if (requestDetail.url.indexOf(http://httpbin.org/user-agent) 0) { const newResponse responseDetail.response; newResponse.header[X-Proxy-By] AnyProxy; return { response: newResponse }; } }这里用到的是第二个钩子beforeSendResponse修改的对象是responseDetail.response。常用于注入缓存策略、调试标识或 CORS 头。六、实战四修改响应体内容替换与延迟返回参考示例rule_sample/sample_modify_response_data.js在响应体末尾追加内容并模拟 5 秒延迟*beforeSendResponse(requestDetail, responseDetail) { if (requestDetail.url http://httpbin.org/user-agent) { const newResponse responseDetail.response; newResponse.body -- AnyProxy Hacked! --; return new Promise((resolve) { setTimeout(() resolve({ response: newResponse }), 5000); }); } }响应体修改是接口 Mock、故障注入、A/B 文案替换的基石。钩子函数支持返回 Promise意味着你可以在拦截时做异步操作比如读取本地文件后替换响应内容。七、进阶玩法状态码、本地响应与协议切换除了四大拦截rule_sample/还藏着三个高频技巧修改状态码sample_modify_response_statuscode.jsnewResponse.statusCode 404一键模拟接口报错返回本地响应sample_use_local_response.js在beforeSendRequest中直接返回response字段请求根本不会发出去后端没写好也能联调协议与路径改写sample_modify_request_protocol.js、sample_modify_request_path.js把 HTTP 改成 HTTPS或把任意路径重定向到指定接口非常适合灰度测试和链路演练。八、数据拦截原理浅析electron-anyproxy 的数据拦截发生在 lib/requestHandler.js 的请求处理链中先完整收集请求体组装出requestDetail调用用户规则的beforeSendRequest拿到远程响应后再调用beforeSendResponse让规则做最后加工最终把结果写回客户端。整条链路清晰规则返回null即不干预返回对象则覆盖对应字段这也是「规则文件很简单」的根本原因。九、常见问题与排查建议HTTPS 请求看不到内容检查是否已安装并信任根证书必要时可在代理设置中开启强制代理 HTTPS。改了规则不生效确认规则文件已正确加载且 URL 匹配条件写对可用summary()方法给规则命名便于在界面中识别。响应数据是乱码多数是压缩内容未解压示例中的 gzip 处理可参考 lib/requestHandler.js 中的解压逻辑。只想拦截特定域名所有示例都用了url.indexOf(...) 0做白名单匹配照抄即可。写在最后至此你已经掌握了 electron-anyproxy 数据拦截的四大核心操作修改请求头、修改请求体、修改响应头、修改响应体以及状态码伪造、本地 Mock、协议切换等进阶玩法。把rule_sample/里的 8 个示例跑一遍再结合自己的项目写一个规则文件你就能真正把抓包与拦截变成日常开发的得力工具。【免费下载链接】electron-anyproxy A http/https proxy client, using to analyze and mock.项目地址: https://gitcode.com/gh_mirrors/el/electron-anyproxy创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表
PREV
查看更多资讯
NEXT
返回资讯列表