尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

electron-anyproxy规则开发实战:8个官方示例规则逐行解析(改协议/改路径/改状态码/本地响应)

electron-anyproxy规则开发实战:8个官方示例规则逐行解析(改协议/改路径/改状态码/本地响应) electron-anyproxy规则开发实战8个官方示例规则逐行解析改协议/改路径/改状态码/本地响应【免费下载链接】electron-anyproxy A http/https proxy client, using to analyze and mock.项目地址: https://gitcode.com/gh_mirrors/el/electron-anyproxyelectron-anyproxy规则开发是掌握这个 http/https 代理客户端抓包分析 mock 工具的核心技能。本文精选官方rule_sample目录下的 8 个示例规则逐行拆解改请求数据、改请求头、改路径、改协议、改响应内容、改响应头、改状态码、返回本地响应八种最常用玩法让你 30 分钟内从零写出自己的第一条拦截规则。所有示例都可用一条 curl 命令直接验证非常适合新手边看边练。一、先搞懂electron-anyproxy 的规则到底长什么样在深入 electron-anyproxy 规则开发之前先建立整体认知规则就是一个普通的 Node.js 模块文件导出包含beforeSendRequest请求发出前触发和beforeSendResponse响应返回前触发两个钩子函数的对象。beforeSendRequest(requestDetail)拦截请求可改协议、路径、Header、Body或直接返回本地响应beforeSendResponse(requestDetail, responseDetail)拦截响应可改状态码、响应头、响应体甚至人为延迟规则是怎么被加载的electron-anyproxy 通过 lib/ruleLoader.js 加载规则支持两种方式本地路径直接指向本机某个.js文件远程 URL以http开头时会先下载到本地缓存再加载对应cacheRemoteFile函数默认规则文件是 lib/rule_default.js。开发时建议把示例复制到rule_sample/目录中逐个修改测试。最方便的测试姿势curl 代理端口官方示例统一使用httpbin.org作为测试目标代理端口默认8001测试命令格式如下curl http://httpbin.org/user-agent --proxy http://127.0.0.1:8001每条规则改完后用对应 curl 命令请求一次对比返回结果即可验证效果。二、请求侧拦截4 个示例规则逐行解析请求侧的四条规则都挂在beforeSendRequest钩子上核心套路一致先判断 URL再修改requestDetail.requestOptions最后返回新配置。1. 修改 POST 请求体sample_modify_request_data.js文件位置rule_sample/sample_modify_request_data.js*beforeSendRequest(requestDetail) { if (requestDetail.url.indexOf(http://httpbin.org/post) 0) { return { requestData: i-am-anyproxy-modified-post-data }; } }逐行解读用indexOf(...) 0做前缀匹配命中目标站点直接返回requestData字段把原始 POST 数据整体替换成新内容验证命令与预期结果curl -H Content-Type: text/plain -X POST -d original post data http://httpbin.org/post --proxy http://127.0.0.1:8001 # 预期响应{ data: i-am-anyproxy-modified-post-data } 应用场景mock 提交表单、伪造登录参数、替换上报数据。2. 修改请求头sample_modify_request_header.js文件位置rule_sample/sample_modify_request_header.jsconst newRequestOptions requestDetail.requestOptions; newRequestOptions.headers[User-Agent] AnyProxy/0.0.0; return { requestOptions: newRequestOptions };逐行解读先浅拷贝requestOptions引用再修改其中的headers对象将User-Agent改为自定义值最后把新配置通过requestOptions返回curl http://httpbin.org/user-agent --proxy http://127.0.0.1:8001 应用场景模拟不同终端 UA、绕过简单的 UA 校验、注入鉴权头。3. 修改请求路径sample_modify_request_path.js文件位置rule_sample/sample_modify_request_path.jsnewRequestOptions.path /user-agent; newRequestOptions.method GET; return { requestOptions: newRequestOptions };逐行解读改path把任意路径统一重定向到/user-agent同时把method强制改为GET防止 POST 请求被重定向后语义出错curl http://httpbin.org/any-path --proxy http://127.0.0.1:8001 # 预期响应{ user-agent: curl/7.43.0 } 应用场景灰度分流、接口临时切换、AB 测试。4. 修改请求协议sample_modify_request_protocol.js文件位置rule_sample/sample_modify_request_protocol.jsconst newOption requestDetail.requestOptions; newOption.port 443; return { protocol: https, requestOptions: newOption };逐行解读把端口改为443并返回顶层字段protocol: https注意协议字段是独立返回项不在requestOptions里这是新手最容易踩的坑curl http://httpbin.org/get?show_env1 --proxy http://127.0.0.1:8001 # 预期响应{ X-Forwarded-Protocol: https } 应用场景强制 HTTPS 访问、规避明文传输、测试协议降级风险。三、响应侧拦截3 个示例规则逐行解析响应侧规则挂在beforeSendResponse钩子上签名多一个responseDetail改的是responseDetail.response。5. 修改响应数据sample_modify_response_data.js文件位置rule_sample/sample_modify_response_data.jssummary() { return a rule to modify response; }, *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); }); } }逐行解读本示例额外展示了summary()方法用于给规则写说明文字用全等匹配精确命中 URL然后对body做字符串拼接返回一个 PromisesetTimeout延迟 5 秒——演示了异步响应的写法curl http://httpbin.org/user-agent --proxy http://127.0.0.1:8001 # 预期响应尾部多出-- AnyProxy Hacked! -- 应用场景篡改接口返回值、模拟弱网延迟、注入异常数据。6. 修改响应头sample_modify_response_header.js文件位置rule_sample/sample_modify_response_header.jsconst newResponse responseDetail.response; newResponse.header[X-Proxy-By] AnyProxy; return { response: newResponse };逐行解读直接往response.header对象里塞一个新字段注意这里是header单数返回{ response: newResponse }即可生效curl -I http://httpbin.org/user-agent --proxy http://127.0.0.1:8001 # 预期响应头新增X-Proxy-By: AnyProxy 应用场景注入 CORS 头、调试缓存策略、模拟服务端标识。7. 修改响应状态码sample_modify_response_statuscode.js文件位置rule_sample/sample_modify_response_statuscode.jsconst newResponse responseDetail.response; newResponse.statusCode 404; return { response: newResponse };逐行解读修改statusCode字段将 httpbin.org 下所有请求的响应码强制改为 404配合curl -I只看响应头验证效果最直观curl -I http://httpbin.org/user-agent --proxy http://127.0.0.1:8001 # 预期响应HTTP/1.1 404 Not Found 应用场景模拟服务异常、测试前端错误分支、演练降级逻辑。四、终极玩法直接用本地响应不再访问真实服务器8. 返回本地响应sample_use_local_response.js文件位置rule_sample/sample_use_local_response.jsconst localResponse { statusCode: 200, header: { Content-Type: application/json }, body: {hello: this is local response} }; if (requestDetail.url.indexOf(http://httpbin.org) 0) { return { response: localResponse }; }逐行解读构造一个完整的响应对象状态码 响应头 响应体命中 URL 后直接return { response: localResponse }请求根本不会发往真实服务器curl http://httpbin.org/user-agent --proxy http://127.0.0.1:8001 # 预期响应{hello: this is local response} 这是 electron-anyproxy mock 功能的灵魂完全离线拦截接口、造假的接口数据、前端联调利器。配合客户端侧边栏的 Mock 功能一起使用效果更佳。五、electron-anyproxy 规则开发避坑清单把 8 个示例串起来总结几条高频踩坑点帮你少走弯路URL 匹配建议用前缀匹配indexOf(url) 0比全等更灵活官方多数示例都这么写改请求用requestOptions改协议用顶层protocol二者不是同一个字段别放错位置响应字段叫header单数和请求头的headers不一样写错不会报错但不会生效返回值格式固定请求侧返回{ requestOptions }/{ requestData }/{ response }响应侧返回{ response }支持异步需要延迟或请求外部数据时返回 Promise 即可参考示例 5不 return 就不拦截钩子函数默认放行只有 return 了修改结果才会生效六、下一步怎么玩想快速上手可以把整个rule_sample/目录当作你的练习场先复制一份改改 URL 和返回值再用 curl 验证。熟悉后可以尝试组合技——比如改路径 改状态码 返回本地响应三合一实现一个完整的接口模拟器。更进阶的方向包括远程规则热加载参考 lib/ruleLoader.js 的requireModule、结合客户端界面可视化配置规则、以及把常用规则沉淀成团队共享的规则库。掌握本文的 8 个示例你的 electron-anyproxy 规则开发之路就已经迈过了最难的入门门槛剩下的就是按需组合、持续积累。【免费下载链接】electron-anyproxy A http/https proxy client, using to analyze and mock.项目地址: https://gitcode.com/gh_mirrors/el/electron-anyproxy创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表