1. 项目概述:AnyProxy的核心定位
AnyProxy是一款基于Node.js开发的高扩展性HTTP/HTTPS代理工具,它本质上是一个中间人(MITM)代理服务器。与常见的抓包工具不同,AnyProxy不仅支持请求/响应的查看和修改,还能通过规则脚本实现高度定制化的流量处理逻辑。我在实际项目中用它处理过移动端API调试、接口自动化测试、数据采集预处理等多种场景,其模块化设计让二次开发变得异常灵活。
这个工具最吸引我的特点是它对HTTPS流量的完整解析能力。通过安装根证书,AnyProxy可以解密HTTPS流量(需客户端信任证书),这在分析加密通信时非常有用。不过要注意,这种能力必须合法合规使用,仅限授权环境下的调试和分析。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 核心功能解析
2.1 流量拦截与修改
AnyProxy的核心工作原理是在客户端和目标服务器之间建立代理通道。启动后会监听指定端口(默认8001),客户端需要配置代理指向该端口。当流量经过时,AnyProxy会依次触发以下处理流程:
- 请求拦截阶段:可以修改请求头、URL参数甚至请求体内容。我常用这个特性来:
- 模拟不同设备类型的User-Agent
- 注入测试用的认证Token
- 重定向特定请求到Mock服务
javascript复制// 示例:修改所有请求的User-Agent
module.exports = {
*beforeSendRequest(requestDetail) {
const newRequest = requestDetail.request;
newRequest.headers['User-Agent'] = 'Mozilla/5.0 (CustomAgent)';
return { request: newRequest };
}
};
2.2 HTTPS解密机制
HTTPS处理是AnyProxy的杀手锏功能,其实现依赖两个关键机制:
- 动态证书生成:当客户端首次访问HTTPS站点时,AnyProxy会动态生成该域名的证书
- 证书链信任:需要提前在客户端安装AnyProxy的根证书(位于
~/.anyproxy/certificates)
重要提示:生产环境使用HTTPS解密必须获得相关方明确授权,个人开发测试时也要注意证书的保管,避免安全风险。
2.3 规则脚本系统
AnyProxy的规则脚本采用CommonJS模块格式,通过实现特定生命周期钩子来实现自定义逻辑。主要钩子包括:
| 钩子名称 | 触发时机 | 典型应用场景 |
|---|
