[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-71465":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":20,"compositeScore":21,"rankGlobal":10,"rankLanguage":10,"license":22,"archived":23,"fork":23,"defaultBranch":24,"hasWiki":23,"hasPages":23,"topics":25,"createdAt":10,"pushedAt":10,"updatedAt":34,"readmeContent":35,"aiSummary":36,"trendingCount":16,"starSnapshotCount":16,"syncStatus":37,"lastSyncTime":38,"discoverSource":39},71465,"wireproxy","windtf\u002Fwireproxy","windtf","Wireguard client that exposes itself as a socks5 proxy","",null,"Go",5643,388,34,73,0,18,25,55,54,38.77,"ISC License",false,"master",[26,27,28,29,30,31,32,33],"golang","network","proxy","socks5","socks5-proxy","vpn","wireguard","wireguard-tunnel","2026-06-12 02:02:52","# wireproxy\n\n[![ISC licensed](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flicense-ISC-blue)](.\u002FLICENSE)\n[![Build status](https:\u002F\u002Fgithub.com\u002Focteep\u002Fwireproxy\u002Factions\u002Fworkflows\u002Fbuild.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002Focteep\u002Fwireproxy\u002Factions)\n[![Documentation](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fgodoc-wireproxy-blue)](https:\u002F\u002Fpkg.go.dev\u002Fgithub.com\u002Focteep\u002Fwireproxy)\n\nA wireguard client that exposes itself as a socks5\u002Fhttp proxy or tunnels.\n\n# What is this\n\n`wireproxy` is a completely userspace application that connects to a wireguard peer,\nand exposes a socks5\u002Fhttp proxy or tunnels on the machine. This can be useful if you need\nto connect to certain sites via a wireguard peer, but can't be bothered to setup a new network\ninterface for whatever reasons.\n\n# Sponsor\n\n\u003Ca href=\"https:\u002F\u002Fproxy-seller.com\u002F?partner=1Z1IPV519ZG31Q\">\u003Cimg src=\".\u002Fassets\u002Fproxy-seller.png\" width=\"300\" alt=\"Proxy-Seller\">\u003C\u002Fa>\n\nUse coupon **WIREPROXY** - 15% discount on IPv4, IPv6, ISP, and residential proxies, and 10% off mobile proxies.\n\n[Proxy-Seller](https:\u002F\u002Fproxy-seller.com\u002F?partner=1Z1IPV519ZG31Q) has been in the market since 2014.\n\nThey provide IPv4, IPv6, ISP, Residential, and Mobile proxies that support both HTTP(S) and SOCKS5 connection protocols. Additionally, they offer a mobile panel to create your own rotating mobile proxies, and provide easy-to-setup equipment with worldwide shipping. After setting up your own mobile proxies, Proxy-Seller can help you rent them out if the location needs it, allowing you to receive a percentage of the sales. The service offers flexible residential proxy solutions for individuals and businesses, with competitive rates starting at $3.5 per 1GB and a low-cost trial option for $1.99.\n\nTheir loyal support team is available to address any issues individually at any time of the day or night. Many customers appreciate this level of support, as well as their very affordable prices, starting from $0.70 per IP.\n\nProxy-Seller provides proxies for a wide range of use cases, including web scraping, gaming, social media management, multi-accounting, ad verification, market research, e-commerce monitoring, SEO tracking, and automation tasks.\n\n**Outstanding Features:**\n\n1. Mobile panel for your own proxy farms\n2. Residential, SOCKS5, HTTPS, mobile, and datacenter proxies\n3. Auto-renewal feature for proxies\n\n**Important:** If any technical issues arise, your proxies can be replaced with proxies from other countries, even if those locations are more expensive. Alternatively, support can add a few extra days to your existing proxy package.\n\n# Why you might want this\n\n- You simply want to use wireguard as a way to proxy some traffic.\n- You don't want root permission just to change wireguard settings.\n\nCurrently, I'm running wireproxy connected to a wireguard server in another country,\nand configured my browser to use wireproxy for certain sites. It's pretty useful since\nwireproxy is completely isolated from my network interfaces, and I don't need root to configure\nanything.\n\nUsers who want something similar but for Amnezia VPN can use [this fork](https:\u002F\u002Fgithub.com\u002Fartem-russkikh\u002Fwireproxy-awg)\nof wireproxy by [@artem-russkikh](https:\u002F\u002Fgithub.com\u002Fartem-russkikh).\n\n# Feature\n\n- TCP static routing for client and server\n- SOCKS5\u002FHTTP proxy (currently only CONNECT is supported)\n\n# TODO\n\n- UDP Support in SOCKS5\n- UDP static routing\n\n# Usage\n\n```bash\n.\u002Fwireproxy [-c path to config]\n```\n\n```bash\nusage: wireproxy [-h|--help] [-c|--config \"\u003Cvalue>\"] [-s|--silent]\n                 [-d|--daemon] [-i|--info \"\u003Cvalue>\"] [-v|--version]\n                 [-n|--configtest]\n\n                 Userspace wireguard client for proxying\n\nArguments:\n\n  -h  --help        Print help information\n  -c  --config      Path of configuration file\n                    Default paths: \u002Fetc\u002Fwireproxy\u002Fwireproxy.conf, $HOME\u002F.config\u002Fwireproxy.conf\n  -s  --silent      Silent mode\n  -d  --daemon      Make wireproxy run in background\n  -i  --info        Specify the address and port for exposing health status\n  -v  --version     Print version\n  -n  --configtest  Configtest mode. Only check the configuration file for\n                    validity.\n```\n\n# Build instruction\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Focteep\u002Fwireproxy\ncd wireproxy\nmake\n```\n\n# Install\n\n```bash\ngo install github.com\u002Fwindtf\u002Fwireproxy\u002Fcmd\u002Fwireproxy@v1.0.9 # or @latest\n```\n\n# Use with VPN\n\nInstructions for using wireproxy with Firefox container tabs and auto-start on MacOS can be found [here](\u002FUseWithVPN.md).\n\n# Sample config file\n\n```ini\n# The [Interface] and [Peer] configurations follow the same semantics and meaning\n# of a wg-quick configuration. To understand what these fields mean, please refer to:\n# https:\u002F\u002Fwiki.archlinux.org\u002Ftitle\u002FWireGuard#Persistent_configuration\n# https:\u002F\u002Fwww.wireguard.com\u002F#simple-network-interface\n[Interface]\nAddress = 10.200.200.2\u002F32 # The subnet should be \u002F32 and \u002F128 for IPv4 and v6 respectively\n# MTU = 1420 (optional)\nPrivateKey = uCTIK+56CPyCvwJxmU5dBfuyJvPuSXAq1FzHdnIxe1Q=\n# PrivateKey = $MY_WIREGUARD_PRIVATE_KEY # Alternatively, reference environment variables\nDNS = 10.200.200.1\n\n[Peer]\nPublicKey = QP+A67Z2UBrMgvNIdHv8gPel5URWNLS4B3ZQ2hQIZlg=\n# PresharedKey = UItQuvLsyh50ucXHfjF0bbR4IIpVBd74lwKc8uIPXXs= (optional)\nEndpoint = my.ddns.example.com:51820\n# PersistentKeepalive = 25 (optional)\n\n# TCPClientTunnel is a tunnel listening on your machine,\n# and it forwards any TCP traffic received to the specified target via wireguard.\n# Flow:\n# \u003Can app on your LAN> --> localhost:25565 --(wireguard)--> play.cubecraft.net:25565\n[TCPClientTunnel]\nBindAddress = 127.0.0.1:25565\nTarget = play.cubecraft.net:25565\n\n# TCPServerTunnel is a tunnel listening on wireguard,\n# and it forwards any TCP traffic received to the specified target via local network.\n# Flow:\n# \u003Can app on your wireguard network> --(wireguard)--> 172.16.31.2:3422 --> localhost:25545\n[TCPServerTunnel]\nListenPort = 3422\nTarget = localhost:25545\n\n# STDIOTunnel is a tunnel connecting the standard input and output of the wireproxy\n# process to the specified TCP target via wireguard.\n# This is especially useful to use wireproxy as a ProxyCommand parameter in openssh\n# For example:\n#    ssh -o ProxyCommand='wireproxy -c myconfig.conf' ssh.myserver.net\n# Flow:\n# Piped command -->(wireguard)--> ssh.myserver.net:22\n[STDIOTunnel]\nTarget = ssh.myserver.net:22\n\n# Socks5 creates a socks5 proxy on your LAN, and all traffic would be routed via wireguard.\n[Socks5]\nBindAddress = 127.0.0.1:25344\n\n# Socks5 authentication parameters, specifying username and password enables\n# proxy authentication.\n#Username = ...\n# Avoid using spaces in the password field\n#Password = ...\n\n# http creates a http proxy on your LAN, and all traffic would be routed via wireguard.\n[http]\nBindAddress = 127.0.0.1:25345\n\n# HTTP authentication parameters, specifying username and password enables\n# proxy authentication.\n#Username = ...\n# Avoid using spaces in the password field\n#Password = ...\n\n# Specifying certificate and key enables HTTPS\n#CertFile = ...\n#KeyFile = ...\n```\n\nAlternatively, if you already have a wireguard config, you can import it in the\nwireproxy config file like this:\n\n```ini\nWGConfig = \u003Cpath to the wireguard config>\n\n# Same semantics as above\n[TCPClientTunnel]\n...\n\n[TCPServerTunnel]\n...\n\n[Socks5]\n...\n```\n\nHaving multiple peers is also supported. `AllowedIPs` would need to be specified\nsuch that wireproxy would know which peer to forward to.\n\n```ini\n[Interface]\nAddress = 10.254.254.40\u002F32\nPrivateKey = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX=\n\n[Peer]\nEndpoint = 192.168.0.204:51820\nPublicKey = YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY=\nAllowedIPs = 10.254.254.100\u002F32\nPersistentKeepalive = 25\n\n[Peer]\nPublicKey = ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ=\nAllowedIPs = 10.254.254.1\u002F32, fdee:1337:c000:d00d::1\u002F128\nEndpoint = 172.16.0.185:44044\nPersistentKeepalive = 25\n\n\n[TCPServerTunnel]\nListenPort = 5000\nTarget = service-one.servicenet:5000\n\n[TCPServerTunnel]\nListenPort = 5001\nTarget = service-two.servicenet:5001\n\n[TCPServerTunnel]\nListenPort = 5080\nTarget = service-three.servicenet:80\n\n[UDPProxyTunnel]\nBindAddress = 127.0.0.1:53\nTarget = 1.1.1.1:53\nInactivityTimeout = 30 # If its set to 0, it will never timeout\n\n[Resolve]\n# Set DNS Resovle Strategy\n# `ipv4`: Prioritize A records.\n# `ipv6`: Prioritize AAAA records       .\n# `auto` (Default): If the WireGuard interface has IPv4 address only, it's equivalent to `ipv4`, otherwise it's equivalent to `ipv6`.\nResolveStrategy = auto \n```\n\nWireproxy can also allow peers to connect to it:\n\n```ini\n[Interface]\nListenPort = 5400\n...\n\n[Peer]\nPublicKey = YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY=\nAllowedIPs = 10.254.254.100\u002F32\n# Note there is no Endpoint defined here.\n```\n\n# Health endpoint\n\nWireproxy supports exposing a health endpoint for monitoring purposes.\nThe argument `--info\u002F-i` specifies an address and port (e.g. `localhost:9080`), which exposes a HTTP server that provides health status metric of the server.\n\nCurrently two endpoints are implemented:\n\n`\u002Fmetrics`: Exposes information of the wireguard daemon, this provides the same information you would get with `wg show`. [This](https:\u002F\u002Fwww.wireguard.com\u002Fxplatform\u002F#example-dialog) shows an example of what the response would look like.\n\n`\u002Freadyz`: This responds with a json which shows the last time a pong is received from an IP specified with `CheckAlive`. When `CheckAlive` is set, a ping is sent out to addresses in `CheckAlive` per `CheckAliveInterval` seconds (defaults to 5) via wireguard. If a pong has not been received from one of the addresses within the last `CheckAliveInterval` seconds (+2 seconds for some leeway to account for latency), then it would respond with a 503, otherwise a 200.\n\nFor example:\n\n```ini\n[Interface]\nPrivateKey = censored\nAddress = 10.2.0.2\u002F32\nDNS = 10.2.0.1\nCheckAlive = 1.1.1.1, 3.3.3.3\nCheckAliveInterval = 3\n\n[Peer]\nPublicKey = censored\nAllowedIPs = 0.0.0.0\u002F0\nEndpoint = 149.34.244.174:51820\n\n[Socks5]\nBindAddress = 127.0.0.1:25344\n```\n\n`\u002Freadyz` would respond with\n\n```text\n\u003C HTTP\u002F1.1 503 Service Unavailable\n\u003C Date: Thu, 11 Apr 2024 00:54:59 GMT\n\u003C Content-Length: 35\n\u003C Content-Type: text\u002Fplain; charset=utf-8\n\u003C\n{\"1.1.1.1\":1712796899,\"3.3.3.3\":0}\n```\n\nAnd for:\n\n```ini\n[Interface]\nPrivateKey = censored\nAddress = 10.2.0.2\u002F32\nDNS = 10.2.0.1\nCheckAlive = 1.1.1.1\n```\n\n`\u002Freadyz` would respond with\n\n```text\n\u003C HTTP\u002F1.1 200 OK\n\u003C Date: Thu, 11 Apr 2024 00:56:21 GMT\n\u003C Content-Length: 23\n\u003C Content-Type: text\u002Fplain; charset=utf-8\n\u003C\n{\"1.1.1.1\":1712796979}\n```\n\nIf nothing is set for `CheckAlive`, an empty JSON object with 200 will be the response.\n\nThe peer which the ICMP ping packet is routed to depends on the `AllowedIPs` set for each peers.\n\n# Stargazers over time\n\n[![Stargazers over time](https:\u002F\u002Fstarchart.cc\u002Focteep\u002Fwireproxy.svg)](https:\u002F\u002Fstarchart.cc\u002Focteep\u002Fwireproxy)\n","wireproxy 是一个 Wireguard 客户端，它以 SOCKS5\u002FHTTP 代理或隧道的形式对外提供服务。该项目使用 Go 语言编写，其核心功能是让用户能够通过 Wireguard 连接到远程对等节点，并将该连接作为本地的代理服务器使用，而无需创建新的网络接口或获取 root 权限。这种设计特别适用于需要通过特定 Wireguard 节点访问某些网站但不想或无法配置复杂网络设置的情况。由于 wireproxy 完全运行在用户空间内，因此对于希望简化网络配置流程同时保证安全性的个人开发者和小团队来说是一个理想的选择。",2,"2026-06-11 03:37:52","high_star"]