node抓包工具AnyProxy
# 安装AnyProxy

全局安装AnyProxy模块
```shell
npm i -g anyproxy
```
![image](https://user-images.githubusercontent.com/17243165/35212908-b9a4fd38-ff96-11e7-8e2c-ddfd105a6290.png)

# 配置

生成证书
```shell
anyproxy-ca
```
![image](https://user-images.githubusercontent.com/17243165/35212854-82b7bc66-ff96-11e7-944c-38e7b784bc0e.png)


以代理https的方式启动
```shell
anyproxy -i
```
![image](https://user-images.githubusercontent.com/17243165/35212883-a25f1fd2-ff96-11e7-8773-efe1d3fc23e1.png)

在浏览器打开[链接](http://localhost:8002/)
```shell
http://localhost:8002/
```
![image](https://user-images.githubusercontent.com/17243165/35213473-b70ae086-ff98-11e7-8e48-1572e96e6bbc.png)

# 安装证书

## 配置代理
用的是[Charles](https://www.charlesproxy.com/)，具体可以参考网上其他文章，当然这个我后来也没配置，直接在手机的代理设置好PC的IP和默认的8001端口就可以了

## PC端

本地双击直接安装`rootCA.crt`
```shell
C:\Users\Administrator\.anyproxy\certificates\rootCA.crt
```
## 手机端

扫描`http://localhost:8002/`界面下的`RootCA`二维码下载到手机
- 在手机直接安装证书(但有可能提示：无法安装该证书 因为无法读取)
- 打开设置->更多设置->系统安全->从存储设备（SD卡）安装->选择文件（有可能会提示警告，或者要你设置密码才能安装）

这里有一点要注意，如果是IOS10+，安装完证书之后要在`设置->通用->关于本机->证书信任设置`，打开对应的针对根证书启用完全信任，才可以抓包成功

# 定义规则

新建rule.js文件
```js
module.exports = {
    summary: 'a rule to hack response',
    * beforeSendResponse(requestDetail, responseDetail) {
        if (requestDetail.url === 'http://httpbin.org/user-agent') {
            const newResponse = responseDetail.response;
            newResponse.body += '- AnyProxy Hacked! Wscats Test~';
            return new Promise((resolve, reject) => {
                setTimeout(() => { // delay
                    resolve({
                        response: newResponse
                    });
                }, 5000);
            });
        }
    },
};
```
在终端执行一下命令，在手机端打开`http://httpbin.org/user-agent`链接测试，代理https请求记得加上`--intercept`参数
```js
anyproxy --intercept --rule rule.js
```
![image](https://user-images.githubusercontent.com/17243165/35216134-87f0f494-ffa1-11e7-829a-e8843af6af6c.png)

然后在浏览器打开链接`http://localhost:8002/`可以看到页面会有一下内容，证明配置规则成功
```js
{
  "user-agent": "Mozilla/5.0 (Linux; U; Android 6.0.1; zh-cn; Redmi 4A Build/MMB29M) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/53.0.2785.146 Mobile Safari/537.36 XiaoMi/MiuiBrowser/9.3.10"
}
- AnyProxy Hacked! Wscats Test~
```

# 参考文档

[AnyProxy](http://anyproxy.io/cn/)