Anyproxy代理工具

前言

在Win或Mac平台我们可以使用CharlesFiddler进行抓包,但是Liunx环境下,该如何进行抓包呢?这里推荐一款阿里的开源工具anyproxy可以比较好的解决这个问题。

 

Anyproxy

简介

特性

  • 基于Node.js,开放二次开发能力,允许自定义请求处理逻辑
  • 支持Https的解析
  • 提供GUI界面,用以观察请求

安装使用

安装环境:Ubuntu Server 14.04

安装Nodejs

1
2
sudo curl -sL https://deb.nodesource.com/setup_4.x | sudo -E bash -
sudo apt-get install -y nodejs

安装完成后检查是否安装成功

1
2
3
4
mgtv@ubuntu:~$ nodejs -v
v8.15.0
mgtv@ubuntu:~$ npm -v
6.6.0

Tips:对于Debian或者Ubuntu系统,在安装AnyProxy之前,可能还需要安装 nodejs-legacy

1
sudo apt-get install nodejs-legacy

安装AnyProxy

安装命令

1
npm install -g anyproxy

启动

1
2
3
mgtv@ubuntu:~$ anyproxy
[AnyProxy Log][2019-01-20 15:34:59]: Http proxy started on port 8001
[AnyProxy Log][2019-01-20 15:34:59]: web interface started on port 8002
  • 默认端口号8001,
    anyproxy启动后将终端http代理服务器配置为ip:8001即可
  • 访问http://ip:8002 ,web界面上能看到所有的请求信息。ip默认是127.0.0.1 如果是使用其他机器访问可以输入部署了anyproxy的机器实际地址。

页面打开效果如下:

image

修改端口

如果想修改默认的启动端口如1080端口启动,可以使用如下命令

1
anyproxy --port 1080

其他参数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
mgtv@ubuntu:~$ anyproxy --help

Usage: anyproxy [options]


Options:

-V, --version output the version number
-p, --port [value] proxy port, 8001 for default
-w, --web [value] web GUI port, 8002 for default
-r, --rule [value] path for rule file,
-l, --throttle [value] throttle speed in kb/s (kbyte / sec)
-i, --intercept intercept(decrypt) https requests when root CA exists
-s, --silent do not print anything into terminal
-c, --clear clear all the certificates and temp files
--ws-intercept intercept websocket
--ignore-unauthorized-ssl ignore all ssl error
-h, --help output usage information

设备代理

代理HTTP

将设备连接Wifi网络,然后设置代理服务器地址

image

代理设置完成之后,在手机上进行操作,在Web后台即可查看抓包结果

image

代理HTTPS

AnyProxy默认不对https请求做处理,如需看到明文信息,需要配置CA证书

解析https请求的原理是中间人攻击(man-in-the-middle),用户必须信任AnyProxy生成的CA证书,才能进行后续流程

在Web后台点击菜单RootCA 用设备扫描二维码下载安装证书,或者下载证书到本地然后安装到设备。安装完成后即可抓https请求

运行时需要添加参数-i

1
anyproxy -i

image

参考资料