{"id":21832428,"url":"https://github.com/0x676e67/vproxy","last_synced_at":"2025-04-07T11:06:21.938Z","repository":{"id":209600175,"uuid":"724441943","full_name":"0x676e67/vproxy","owner":"0x676e67","description":"An easy and powerful Rust HTTP/Socks5 Proxy","archived":false,"fork":false,"pushed_at":"2024-05-20T12:59:25.000Z","size":161,"stargazers_count":86,"open_issues_count":1,"forks_count":17,"subscribers_count":4,"default_branch":"main","last_synced_at":"2024-05-20T21:13:23.634Z","etag":null,"topics":["cidr","cidr-subnet","http","http-server","hyper","ipv4","ipv6","network","proxy","rust","server","socks5","socks5-server"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/0x676e67.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":null,"patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"lfx_crowdfunding":null,"custom":["https://github.com/0x676e67/0x676e67/blob/main/SPONSOR.md#sponsor-my-open-source-works"]}},"created_at":"2023-11-28T04:41:03.000Z","updated_at":"2024-08-09T07:40:29.257Z","dependencies_parsed_at":"2024-01-09T06:41:08.160Z","dependency_job_id":"84fd004e-bfcc-4bf6-a86f-4c8e88912b62","html_url":"https://github.com/0x676e67/vproxy","commit_stats":null,"previous_names":["gngpp/v6p","gngpp/vproxy","0x676e67/vproxy"],"tags_count":29,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0x676e67%2Fvproxy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0x676e67%2Fvproxy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0x676e67%2Fvproxy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0x676e67%2Fvproxy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/0x676e67","download_url":"https://codeload.github.com/0x676e67/vproxy/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247640462,"owners_count":20971557,"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","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":["cidr","cidr-subnet","http","http-server","hyper","ipv4","ipv6","network","proxy","rust","server","socks5","socks5-server"],"created_at":"2024-11-27T19:19:56.412Z","updated_at":"2025-04-07T11:06:21.736Z","avatar_url":"https://github.com/0x676e67.png","language":"Rust","funding_links":["https://github.com/0x676e67/0x676e67/blob/main/SPONSOR.md#sponsor-my-open-source-works"],"categories":["Recently Updated","Applications","Rust"],"sub_categories":["[Who Wants to Be a Millionare](https://www.boardgamecapital.com/who-wants-to-be-a-millionaire-rules.htm)","Web Servers"],"readme":"# vproxy\n\n[![CI](https://github.com/0x676e67/vproxy/actions/workflows/ci.yml/badge.svg)](https://github.com/0x676e67/vproxy/actions/workflows/ci.yml)\n[![Crates.io License](https://img.shields.io/crates/l/vproxy)](./LICENSE)\n![Crates.io MSRV](https://img.shields.io/crates/msrv/vproxy)\n[![crates.io](https://img.shields.io/crates/v/vproxy.svg)](https://crates.io/crates/vproxy)\n[![Crates.io Total Downloads](https://img.shields.io/crates/d/vproxy)](https://crates.io/crates/vproxy)\n\n\u003e 🚀 Help me work seamlessly with open source sharing by [sponsoring me on GitHub](https://github.com/0x676e67/0x676e67/blob/main/SPONSOR.md)\n\nA high-performance `HTTP`/`HTTPS`/`SOCKS5` proxy server\n\n## Features\n\n- IPv4/IPv6 priority\n- Configurable concurrency limits\n- Service binding `CIDR` address\n- Specify a `CIDR` subnet range\n- Basic authentication\n- Proxy extensions\n\n## Manual\n\n```shell\n$ vproxy -h\nA high-performance HTTP/HTTPS/SOCKS5 proxy server\n\nUsage: vproxy\n       vproxy \u003cCOMMAND\u003e\n\nCommands:\n  run      Run server\n  start    Start server daemon\n  restart  Restart server daemon\n  stop     Stop server daemon\n  ps       Show server daemon process\n  log      Show server daemon log\n  self     Modify server installation\n  help     Print this message or the help of the given subcommand(s)\n\nOptions:\n  -h, --help     Print help\n  -V, --version  Print version\n\n$ vproxy run -h\nRun server\n\nUsage: vproxy run [OPTIONS] \u003cCOMMAND\u003e\n\nCommands:\n  http    Http server\n  https   Https server\n  socks5  Socks5 server\n  help    Print this message or the help of the given subcommand(s)\n\nOptions:\n      --log \u003cLOG\u003e\n          Log level e.g. trace, debug, info, warn, error [env: VPROXY_LOG=] [default: info]\n  -b, --bind \u003cBIND\u003e\n          Bind address [default: 0.0.0.0:1080]\n  -T, --connect-timeout \u003cCONNECT_TIMEOUT\u003e\n          Connection timeout in seconds [default: 10]\n  -c, --concurrent \u003cCONCURRENT\u003e\n          Concurrent connections [default: 1024]\n  -i, --cidr \u003cCIDR\u003e\n          IP-CIDR, e.g. 2001:db8::/32\n  -r, --cidr-range \u003cCIDR_RANGE\u003e\n          IP-CIDR-Range, e.g. 64\n  -f, --fallback \u003cFALLBACK\u003e\n          Fallback address\n  -h, --help\n          Print help\n```\n\n## Installation\n\n\u003cdetails\u003e\n\n\u003csummary\u003eIf you need more detailed installation and usage information, please check here\u003c/summary\u003e\n\n### Install\n\n- curl\n\n```bash\ncurl https://raw.githubusercontent.com/0x676e67/vproxy/main/.github/install.sh | bash\n```\n\n- wget\n\n```bash\nwget -qO- https://raw.githubusercontent.com/0x676e67/vproxy/main/.github/install.sh | bash\n```\n\n- cargo\n\n```bash\ncargo install vproxy\n```\n\n- Dokcer\n\n```bash\ndocker run --rm -it ghcr.io/0x676e67/vproxy:latest run http\n```\n\n### Note\n\nIf you run the program as root, it will automatically configure the sysctl `net.ipv6.ip_nonlocal_bind=1`, `net.ipv6.conf.all.disable_ipv6`, and `ip route add local 2001:470:e953::/48 dev lo` for you. Otherwise you will need to configure these settings manually.\n\nIf no subnet is configured, the local default network proxy request will be used. When the local machine sets the priority `Ipv4`/`Ipv6` and the priority is `Ipv4`, it will always use `Ipv4` to make requests (if any).\n\n```shell\n# Enable binding to non-local IPv6 addresses\nsudo sysctl net.ipv6.ip_nonlocal_bind=1\n\n# Enable IPv6\nsudo sysctl net.ipv6.conf.all.disable_ipv6=0\n\n# Replace with your IPv6 subnet\nsudo ip route add local 2001:470:e953::/48 dev lo\n\n# Run the server http/socks5\nvproxy run -i 2001:470:e953::/48 http\n\n# Start the daemon (runs in the background), requires sudo\nsudo vproxy start -i 2001:470:e953::/48 http\n\n# Restart the daemon, requires sudo\nsudo vproxy restart\n\n# Stop the daemon, requires sudo\nsudo vproxy stop\n\n# Show daemon log\nvproxy log\n\n# Show daemon status\nvproxy status\n\n# Download and install updates to vproxy\nvproxy self update\n\n# Uninstall vproxy\nvproxy self uninstall\n\n# Test loop request\nwhile true; do curl -x http://127.0.0.1:8100 -s https://api.ip.sb/ip -A Mozilla; done\n...\n2001:470:e953:5b75:c862:3328:3e8f:f4d1\n2001:470:e953:b84d:ad7d:7399:ade5:4c1c\n2001:470:e953:4f88:d5ca:84:83fd:6faa\n2001:470:e953:29f3:41e2:d3f2:4a49:1f22\n2001:470:e953:98f6:cb40:9dfd:c7ab:18c4\n2001:470:e953:f1d7:eb68:cc59:b2d0:2c6f\n\n```\n\n- TTL Extension\n\nAppend `-ttl-` to the username, where TTL is a fixed value (e.g., `username-ttl-2`). The TTL value is the number of requests that can be made with the same IP. When the TTL value is reached, the IP will be changed.\n\n- Session Extension\n\nAppend `-session-id` to the username, where session is a fixed value and ID is an arbitrary random value (e.g., `username-session-123456`). Keep the Session ID unchanged to use a fixed IP.\n\n- Range Extension\n\nAppend `-range-id` to the username, where range is a fixed value and ID is any random value (e.g. `username-range-123456`). By keeping the Range ID unchanged, you can use a fixed CIDR range in a fixed range. in addition, you must set the startup parameter `--cidr-range`, and the length is within a valid range.\n\n### Examples\n\n- Http proxy session with username and password:\n\n```shell\nvproxy run --bind 127.0.0.1:8101 -i 2001:470:70c6::/48 http -u test -p test\n\n$ for i in `seq 1 10`; do curl -x \"http://test-session-123456789:test@127.0.0.1:8101\" https://api6.ipify.org; done\n2001:470:70c6:93ee:9b7c:b4f9:4913:22f5\n2001:470:70c6:93ee:9b7c:b4f9:4913:22f5\n2001:470:70c6:93ee:9b7c:b4f9:4913:22f5\n\n$ for i in `seq 1 10`; do curl -x \"http://test-session-987654321:test@127.0.0.1:8101\" https://api6.ipify.org; done\n2001:470:70c6:41d0:14fd:d025:835a:d102\n2001:470:70c6:41d0:14fd:d025:835a:d102\n2001:470:70c6:41d0:14fd:d025:835a:d102\n```\n\n- Socks5 proxy session with username and password\n\n```shell\nvproxy run --bind 127.0.0.1:8101 -i 2001:470:70c6::/48 socks5 -u test -p test\n\n$ for i in `seq 1 3`; do curl -x \"socks5h://test-session-123456789:test@127.0.0.1:8101\" https://api6.ipify.org; done\n2001:470:70c6:93ee:9b7c:b4f9:4913:22f5\n2001:470:70c6:93ee:9b7c:b4f9:4913:22f5\n2001:470:70c6:93ee:9b7c:b4f9:4913:22f5\n\n$ for i in `seq 1 3`; do curl -x \"socks5h://test-session-987654321:test@127.0.0.1:8101\" https://api6.ipify.org; done\n2001:470:70c6:41d0:14fd:d025:835a:d102\n2001:470:70c6:41d0:14fd:d025:835a:d102\n2001:470:70c6:41d0:14fd:d025:835a:d102\n\n```\n\n- TTL proxy session with username and password\n\n```shell\nvproxy run --bind 127.0.0.1:8101 -i 2001:470:70c6::/48 socks5 -u test -p test\n\n$ for i in `seq 1 3`; do curl -x \"socks5h://test-ttl-2:test@127.0.0.1:8101\" https://api6.ipify.org; done\n2001:470:70c6:93ee:9b7c:b4f9:4913:22f5\n2001:470:70c6:93ee:9b7c:b4f9:4913:22f5\n2001:470:70c6:93ee:9b7c:b4f9:4913:22f6\n\n$ for i in `seq 1 3`; do curl -x \"socks5h://test-ttl-2:test@127.0.0.1:8101\" https://api6.ipify.org; done\n2001:470:70c6:41d0:14fd:d025:835a:d102\n2001:470:70c6:41d0:14fd:d025:835a:d102\n2001:470:70c6:41d0:14fd:d025:835a:d105\n```\n\n\u003c/details\u003e\n\n## Contributing\n\nIf you would like to submit your contribution, please open a [Pull Request](https://github.com/0x676e67/vproxy/pulls).\n\n## Getting help\n\nYour question might already be answered on the [issues](https://github.com/0x676e67/vproxy/issues)\n\n## License\n\n**vproxy** © [0x676e67](https://github.com/0x676e67), Released under the [GPL-3.0](./LICENSE) License.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F0x676e67%2Fvproxy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F0x676e67%2Fvproxy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F0x676e67%2Fvproxy/lists"}