{"id":13775824,"url":"https://github.com/ring04h/wyproxy","last_synced_at":"2025-09-12T15:35:38.958Z","repository":{"id":79828087,"uuid":"68079317","full_name":"ring04h/wyproxy","owner":"ring04h","description":"proxying and recording HTTP/HTTPs/Socks5 proxy flow, save to MYSQL database. ","archived":false,"fork":false,"pushed_at":"2017-01-06T15:07:29.000Z","size":1254,"stargazers_count":490,"open_issues_count":6,"forks_count":190,"subscribers_count":30,"default_branch":"master","last_synced_at":"2025-05-25T14:04:51.807Z","etag":null,"topics":["proxy-server","python","socks"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ring04h.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2016-09-13T06:03:04.000Z","updated_at":"2025-01-03T21:51:35.000Z","dependencies_parsed_at":"2023-09-14T13:03:21.176Z","dependency_job_id":null,"html_url":"https://github.com/ring04h/wyproxy","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ring04h/wyproxy","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ring04h%2Fwyproxy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ring04h%2Fwyproxy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ring04h%2Fwyproxy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ring04h%2Fwyproxy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ring04h","download_url":"https://codeload.github.com/ring04h/wyproxy/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ring04h%2Fwyproxy/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274831643,"owners_count":25357883,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-12T02:00:09.324Z","response_time":60,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["proxy-server","python","socks"],"created_at":"2024-08-03T17:01:51.574Z","updated_at":"2025-09-12T15:35:38.894Z","avatar_url":"https://github.com/ring04h.png","language":"Python","readme":"# wyproxy\nproxying and recording HTTP/HTTPs/Socks5 proxy flow, save to MYSQL database. \nhttps://github.com/ring04h/wyproxy2 (Golang high performance version)   \n\nHTTP/HTTPS, Socks5代理服务器, 并可以将网络请求记录保存到后台数据库.   \n     \n帮助安全测试人员更加便捷的发现(客户端/APP/网页)中隐藏的接口或资源。     \n\n同时支持流量handle回放数据功能,    \n在HTTP Header中插入 移动/联通/电信 营业厅的免流量域名头, 实现免流量代理上网。   \n   \n演示服务器：http://s5.wuyun.org:5000   \n\n支持场景    \n- iPhone App\n- iPad App\n- Mac OS X App\n- Android APP\n\n## 帮助说明    \n\n```bash\n$ python wyproxy.py -h\nusage: wyproxy.py [-h] [-d] [-stop] [-restart] [-pid] [-p] [-m] [-us]\n\nwyproxy v 1.0 ( Proxying And Recording HTTP/HTTPs and Socks5)\n\noptional arguments:\n  -h, --help           show this help message and exit\n  -d, --daemon         start wyproxy with daemond\n  -stop, --stop        stop wyproxy daemond\n  -restart, --restart  restart wyproxy daemond\n  -pid , --pidfile     wyproxy daemond pidfile name\n  -p , --port          wyproxy bind port\n  -m , --mode          wyproxy mode (HTTP/HTTPS, Socks5, Transparent)\n  -us, --unsave        Do not save records to MySQL server\n\n```\n\n记录字段如下   \n\n![github](https://raw.githubusercontent.com/ring04h/wyproxy/master/doc/screenshot/captrue.png \"github\")   \n\n- method    (HTTP/HTTPS/OPTIONS)\n- scheme    (http/https/ftp)\n- host      (www.wuyun.org)\n- port      (80/8080)\n- url       (https://www.wuyun.org/foo/bar.php?id=1)\n- path      (/foo/bar.php)\n- extension (php)\n- query     (id=1)\n- headers   (response headers)\n- content   (response contnet)\n- request_headers  (reqeust client headers)\n- request_content  (request data: liked post data)\n- status_code      (200/404/403)\n- date_start       (unix timestamp)\n- date_end         (unix timestamp)\n\n## 环境要求\n- CentOS 6.4\n- Python 2.7\n- Mysql Server\n\n### 开发环境依赖\n```bash\n$ yum install python-devel libxml2-devel libxslt-devel libjpeg-turbo-devel libffi-devel mysql-devel\n```\n\n### 编译安装Python2.7环境\n```\n$ wget https://www.python.org/ftp/python/2.7.8/Python-2.7.8.tgz\n$ tar zvxf Python-2.7.8.tgz\n$ cd Python-2.7.8\n$ ./configure\n$ make\n$ make install\n$ mv /usr/bin/python /usr/bin/python2.6.6  \n$ ln -s /usr/local/bin/python2.7 /usr/bin/python\n```\n重启bash终端, 就拥有新的Python2.7环境了\n\n### 安装新的Python2.7环境下的pip\nhttps://pip.pypa.io/en/latest/installing/\n```bash\n$ wget https://bootstrap.pypa.io/get-pip.py --no-check-certificate\n$ python get-pip.py\n```\n\nyum在Python2.7环境下无法使用，需要让它使用python2.6.6的环境\n```bash\n$ vim /usr/bin/yum # 修改第一行的程序执行环境\n#!/usr/bin/python   -\u003e    #!/usr/bin/python2.6.6\n```\n\n### 获取代码\n```bash\n$ yum install git\n$ mkdir src\n$ cd ./src\n$ git clone https://github.com/ring04h/wyproxy.git\n```\n\n### 安装python依赖库\n```\n$ pip install -r requirements.txt\n```\n\n### 安装MYSQL数据库\n```bash\n$ yum install mysql-server\n$ service mysqld start\n$ mysql -uroot -p \u003c wyproxy.sql\n```\n\n### 性能优化\nMYSQL配置调优, 有时候网页的content内容size大于1M,    \n需要修改MYSQL配置调优的全局配置文件max_allowed_packet, 允许插入的数据大小为64M.   \n   \n```bash\n$ vim /etc/my.cnf\n[mysqld] # 位置\nmax_allowed_packet = 64M\n```\n   \nOpen Max file option:    \n\n```bash\n$ echo ulimit -HSn 65536 \u003e\u003e /etc/rc.local\n$ echo ulimit -HSn 65536 \u003e\u003e ~/.bash_profile\n```\n\n### 开发环境\n\n或者你可以配置和启动一个virtualenv环境来独立运行wyproxy.   \n\n```bash\n$ virtualenv --no-site-packages wyproxy\n$ cd wyproxy\n$ source bin/activate\n```\n\n### 启动wyproxy\n\u003e 如果不想将代理记录保存到数据库, 必须指定 -us 或者 --unsave 参数\n   \n普通方式启动   \n\n```bash\n$ python wyproxy.py -p 8080 -m socks5 --unsave\n```   \n\n守护进程方式启动\n\n```bash\n$ python wyproxy.py -p 8080 -m socks5 --unsave -d\n```\n\n### 支持HTTPS, 需要配置客户端 SSL 证书\n#### iPhone 移动端, 使用Safari浏览器打开\nhttps://raw.githubusercontent.com/ring04h/wyproxy/master/ssl/mitmproxy-ca.pem    \n会有如下图片提示, 点击右上角安装, 使证书状态变为绿色生效\n\n安装界面    \n    \n![install_pem](https://raw.githubusercontent.com/ring04h/wyproxy/master/doc/screenshot/install_pem.png)\n\n成功后的界面   \n\n![install_pem_succ](https://raw.githubusercontent.com/ring04h/wyproxy/master/doc/screenshot/install_pem_succ.png)   \n\n#### Mac OS X 安装配置 SSL 证书 并信任\n```bash\n$ wget https://raw.githubusercontent.com/ring04h/wyproxy/master/ssl/mitmproxy-ca.pem\n```\n在Finder中双击运行mitmproxy-ca.pem\n\n进入钥匙串访问工具, 选择mitmproxy的证书\n![key_manager](https://raw.githubusercontent.com/ring04h/wyproxy/master/doc/screenshot/key_manager.png \"key_manager\")   \n   \n选择始终信任该证书, 即可生效, 便能成功捕捉所有HTTPS的流量\n![key_trust](https://raw.githubusercontent.com/ring04h/wyproxy/master/doc/screenshot/key_trust.png \"key_trust\")   \n\n### iPhone配置全局Socks5代理支持   \n用代理自动配置文件pac给iPhone和iPad设备添加socks代理    \n\n首先启动wyproxy代理服务器, 设置代理类型为socks5    \n    \n```\n$ python wyproxy.py -p 8080 -m socks5 -d\n```\n    \n找一台开启了HTTPD服务的服务器, 新建一个.pac文件, 内容如下    \n    \n```pac\nfunction FindProxyForURL(url, host)\n{\n    if (isInNet(host, \"192.168.199.0\", \"255.255.255.0\"))\n        return \"DIRECT\";\n\n    return \"SOCKS 106.75.147.67:8080\";\n}\n```\n     \n设置iPhone的无线配置, 代理处填上你的HTTPD服务器地址    \nhttp://s5.wuyun.org/s5.pac   \n\n![enable_s5](https://raw.githubusercontent.com/ring04h/wyproxy/master/doc/screenshot/enable_s5.png \"enable_s5\")   \n    \n这样iPhone上面, 所有的流量，全都会经过wyproxy的socks5代理了\n\n## 使用技巧\n### 在单服务器运行多个代理服务\n运行socks5服务, 监听1080端口   \n   \n```bash\n$ python wyproxy.py -p 1080 -m socks5 -pid /tmp/1080.pid -d\nwyproxy daemon starting...\nwyProxy daemon started successfully \n2016-09-14 17:11:20,333 [INFO] wyproxy is starting...\n2016-09-14 17:11:20,334 [INFO] Listening: 0.0.0.0:1080 socks5\n2016-09-14 17:11:20,390 [INFO] wyproxy started successfully...\n```\n\n停止1080端口的服务   \n   \n```bash\n$ python wyproxy.py -stop -pid /tmp/1080.pid\nwyproxy daemon stopping...\nwyproxy daemon stopped successfully\n```\n   \n运行socks5服务, 监听1081端口   \n   \n```bash\n$ python wyproxy.py -p 1081 -m socks5 -pid /tmp/1081.pid -d\nwyproxy daemon starting...\nwyProxy daemon started successfully \n2016-09-14 17:11:27,564 [INFO] wyproxy is starting...\n2016-09-14 17:11:27,566 [INFO] Listening: 0.0.0.0:1081 socks5\n2016-09-14 17:11:27,583 [INFO] wyproxy started successfully...\n```\n\n停止1081端口的服务   \n   \n```bash\n$ python wyproxy.py -stop -pid /tmp/1081.pid\nwyproxy daemon stopping...\nwyproxy daemon stopped successfully\n```\n   \n# PPTP VPN support\n## wyproxy代理服务器设置\n做NAT代理转发,必须启动代理服务器的模式为 transparent   \n   \n```shell\n$ python wyproxy.py -p 8080 -m transparent -d\n```\n   \n## 安装pptp服务器\n安装PPP, PPTP   \n```\n# yum install -y ppp\n# rpm -ivh http://static.ucloud.cn/pptpd-1.3.4-2.el6.x86_64.rpm\n```\n注：32位请安装i686版本，将上面链接中的“x86_64”改为“i686”即可，请根据自己的OS安装相应的版本。   \n\n```shell   \n# 编辑pptp.conf，在最后加入以下两行代码\n$ vim /etc/pptpd.conf\nlocalip 10.8.0.1   \nremoteip 10.8.0.10-100   \n\n# 编辑options.pptpd，在最后加入以下两行代码   \n$ vim /etc/ppp/options.pptpd\nms-dns 8.8.8.8\nms-dns 8.8.4.4\n\n# 编辑chap-secrets，account为wyproxy登录帐号，1234qwer为登录密码，其他默认 \n$ vim /etc/ppp/chap-secrets\n# client      server    secret          IP addresses\nwyproxy       pptpd       1234qwer          *\n\n# 编辑sysctl.conf，开启网络转发功能\n$ vim /etc/sysctl.conf\nnet.ipv4.ip_forward = 1\n$ sysctl -p\n\n# 配置NAT\n$ iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE \n$ iptables-save \u003e /etc/sysconfig/iptables\n\n# 启动PPTP服务\n$ service pptpd start\n\n# 设置为开机启动\n$ chkconfig pptpd on\n$ chkconfig iptables on\n```\n\n## 设置iptables防火墙转发   \n   \n```bash\n$ 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\n$ 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\n$ iptables-save \u003e /etc/sysconfig/iptables\n$ service iptables restart\n```\n\n## 参考\n* https://docs.ucloud.cn/software/vpn/pptp4centos\n","funding_links":[],"categories":["\u003ca id=\"d03d494700077f6a65092985c06bf8e8\"\u003e\u003c/a\u003e工具"],"sub_categories":["\u003ca id=\"57b8e953d394bbed52df2a6976d98dfa\"\u003e\u003c/a\u003eSocks"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fring04h%2Fwyproxy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fring04h%2Fwyproxy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fring04h%2Fwyproxy/lists"}