HTTP/HTTPS, Socks5代理服务器, 并可以将网络请求记录保存到后台数据库.
帮助安全测试人员更加便捷的发现(客户端/APP/网页)中隐藏的接口或资源。
同时支持流量handle回放数据功能,
在HTTP Header中插入 移动/联通/电信 营业厅的免流量域名头, 实现免流量代理上网。
支持场景
记录字段如下
![github github]()
yum在Python2.7环境下无法使用,需要让它使用python2.6.6的环境
需要修改MYSQL配置调优的全局配置文件max_allowed_packet, 允许插入的数据大小为64M.
Open Max file option:
守护进程方式启动
会有如下图片提示, 点击右上角安装, 使证书状态变为绿色生效
安装界面
![install_pem]()
成功后的界面
![install_pem_succ]()
在Finder中双击运行mitmproxy-ca.pem
进入钥匙串访问工具, 选择mitmproxy的证书![key_manager key_manager]()
选择始终信任该证书, 即可生效, 便能成功捕捉所有HTTPS的流量![key_trust key_trust]()
首先启动wyproxy代理服务器, 设置代理类型为socks5
设置iPhone的无线配置, 代理处填上你的HTTPD服务器地址
http://s5.wuyun.org/s5.pac
![enable_s5 enable_s5]()
这样iPhone上面, 所有的流量,全都会经过wyproxy的socks5代理了
停止1080端口的服务
运行socks5服务, 监听1081端口
停止1081端口的服务
https://github.com/ring04h/wyproxy
https://raw.githubusercontent.com/ring04h/wyproxy2/master/src/goproxy/ca.pem
帮助安全测试人员更加便捷的发现(客户端/APP/网页)中隐藏的接口或资源。
同时支持流量handle回放数据功能,
在HTTP Header中插入 移动/联通/电信 营业厅的免流量域名头, 实现免流量代理上网。
支持场景
- iPhone App
- iPad App
- Mac OS X App
- Android APP
帮助说明
$ python wyproxy.py -h
usage: wyproxy.py [-h] [-d] [-stop] [-restart] [-pid] [-p] [-m] [-us]
wyproxy v 1.0 ( Proxying And Recording HTTP/HTTPs and Socks5)
optional arguments:
-h, --help show this help message and exit
-d, --daemon start wyproxy with daemond
-stop, --stop stop wyproxy daemond
-restart, --restart restart wyproxy daemond
-pid , --pidfile wyproxy daemond pidfile name
-p , --port wyproxy bind port
-m , --mode wyproxy mode (HTTP/HTTPS, Socks5, Transparent)
-us, --unsave Do not save records to MySQL server

- method (HTTP/HTTPS/OPTIONS)
- scheme (http/https/ftp)
- host (www.wuyun.org)
- port (80/8080)
- url (https://www.wuyun.org/foo/bar.php?id=1)
- path (/foo/bar.php)
- extension (php)
- query (id=1)
- headers (response headers)
- content (response contnet)
- request_headers (reqeust client headers)
- request_content (request data: liked post data)
- status_code (200/404/403)
- date_start (unix timestamp)
- date_end (unix timestamp)
环境要求
- CentOS 6.4
- Python 2.7
- Mysql Server
开发环境依赖
$ yum install python-devel libxml2-devel libxslt-devel libjpeg-turbo-devel libffi-devel mysql-devel
编译安装Python2.7环境
$ wget https://www.python.org/ftp/python/2.7.8/Python-2.7.8.tgz
$ tar zvxf Python-2.7.8.tgz
$ cd Python-2.7.8
$ ./configure
$ make
$ make install
$ mv /usr/bin/python /usr/bin/python2.6.6
$ ln -s /usr/local/bin/python2.7 /usr/bin/python
重启bash终端, 就拥有新的Python2.7环境了安装新的Python2.7环境下的pip
https://pip.pypa.io/en/latest/installing/$ wget https://bootstrap.pypa.io/get-pip.py --no-check-certificate
$ python get-pip.py
$ vim /usr/bin/yum #修改第一行的程序执行环境
#!/usr/bin/python -> #!/usr/bin/python2.6.6
获取代码
$ yum install git
$ mkdir src
$ cd ./src
$ git clone https://github.com/ring04h/wyproxy.git
安装python依赖库
$ pip install -r requirements.txt
安装MYSQL数据库
$ yum install mysql-server
$ service mysqld start
$ mysql -uroot -p < wyproxy.sql
性能优化
MYSQL配置调优, 有时候网页的content内容size大于1M,需要修改MYSQL配置调优的全局配置文件max_allowed_packet, 允许插入的数据大小为64M.
$ vim /etc/my.cnf
[mysqld] #位置
max_allowed_packet = 64M
$ echoulimit -HSn 65536 >> /etc/rc.local
$ echoulimit -HSn 65536 >>~/.bash_profile
开发环境
或者你可以配置和启动一个virtualenv环境来独立运行wyproxy.$ virtualenv --no-site-packages wyproxy
$ cd wyproxy
$ source bin/activate
启动wyproxy
如果不想将代理记录保存到数据库, 必须指定--unsave参数。普通方式启动
$ python wyproxy.py -p 8080 -m socks5 --unsave
$ python wyproxy.py -p 8080 -m socks5 --unsave -d
支持HTTPS, 需要配置客户端 SSL 证书
iPhone 移动端, 使用Safari浏览器打开
https://raw.githubusercontent.com/ring04h/wyproxy/master/ssl/mitmproxy-ca.pem会有如下图片提示, 点击右上角安装, 使证书状态变为绿色生效
安装界面

成功后的界面

Mac OS X 安装配置 SSL 证书 并信任
$ wget https://raw.githubusercontent.com/ring04h/wyproxy/master/ssl/mitmproxy-ca.pem
进入钥匙串访问工具, 选择mitmproxy的证书

选择始终信任该证书, 即可生效, 便能成功捕捉所有HTTPS的流量

iPhone配置全局Socks5代理支持
用代理自动配置文件pac给iPhone和iPad设备添加socks代理首先启动wyproxy代理服务器, 设置代理类型为socks5
$ python wyproxy.py -p 8080 -m socks5 -d
找一台开启了HTTPD服务的服务器, 新建一个.pac文件, 内容如下functionFindProxyForURL(url, host)
{
if (isInNet(host, "192.168.199.0", "255.255.255.0"))
return"DIRECT";
return"SOCKS 106.75.147.67:8080";
}
http://s5.wuyun.org/s5.pac

这样iPhone上面, 所有的流量,全都会经过wyproxy的socks5代理了
使用技巧
在单服务器运行多个代理服务
运行socks5服务, 监听1080端口$ python wyproxy.py -p 1080 -m socks5 -pid /tmp/1080.pid -d
wyproxy daemon starting...
wyProxy daemon started successfully
2016-09-14 17:11:20,333 [INFO] wyproxy is starting...
2016-09-14 17:11:20,334 [INFO] Listening: 0.0.0.0:1080 socks5
2016-09-14 17:11:20,390 [INFO] wyproxy started successfully...
$ python wyproxy.py -stop -pid /tmp/1080.pid
wyproxy daemon stopping...
wyproxy daemon stopped successfully
$ python wyproxy.py -p 1081 -m socks5 -pid /tmp/1081.pid -d
wyproxy daemon starting...
wyProxy daemon started successfully
2016-09-14 17:11:27,564 [INFO] wyproxy is starting...
2016-09-14 17:11:27,566 [INFO] Listening: 0.0.0.0:1081 socks5
2016-09-14 17:11:27,583 [INFO] wyproxy started successfully...
$ python wyproxy.py -stop -pid /tmp/1081.pid
wyproxy daemon stopping...
wyproxy daemon stopped successfully
设置iptables防火墙转发
$ iptables -t nat -A PREROUTING -s 10.8.0.0/24 -i ppp+ -p tcp -m multiport --dports 80,81,82,83,88,8000,8001,8002,8080,8081,8090 -j DNAT --to-destination 10.8.0.1:8080
$ iptables -t nat -A PREROUTING -s 10.8.0.0/24 -i ppp+ -p tcp -m multiport --dports 443,8443 -j DNAT --to-destination 10.8.0.1:8080
$ iptables-save > /etc/sysconfig/iptables
$ service iptables restart
参考
from https://github.com/ring04h/wyproxy
-------
wyproxy2,wyproxy的golang version
帮助
WYproxy Python Versionhttps://github.com/ring04h/wyproxy
说明
学习Golang,基于goproxy库,顺便造了一个稳定的轮子。使用帮助
yum install golang
cd /root/
git clone https://github.com/ring04h/wyproxy2
mv ./wyproxy2/ ./golang/
export GOPATH="/root/golang"
go build wyproxy.go
安装信任证书
iPhone使用safari浏览器打开https://raw.githubusercontent.com/ring04h/wyproxy2/master/src/goproxy/ca.pem
启动代理服务器
cd /root/golang/
#使用自定义的数据库配置信息
export WYDSN='root:@tcp(localhost:3306)/wyproxy?charset=utf8'
./wyproxy -addr 0.0.0.0:9999
使用代理功能
curl --proxy http://s5.wuyun.org:9999 www.ip.cn
from https://github.com/ring04h/wyproxy2