🚀 Big News: Socket Acquires Coana to Bring Reachability Analysis to Every Appsec Team.Learn more
Socket
DemoInstallSign in
Socket

pywssocks

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

pywssocks

A forward and reverse socks over websocket server and client implementation in Python.

1.4.3
PyPI
Maintainers
1

GitHub Actions Workflow Status Codecov Python Version PyPI - Version PyPI - Downloads Docker Pulls

Pywssocks

Pywssocks is a SOCKS proxy implementation over WebSocket protocol.

Overview

This tool allows you to securely expose SOCKS proxy services under Web Application Firewall (WAF) protection (forward socks), or enable clients to connect and serve as SOCKS proxy servers when they don't have public network access (reverse socks).

Main Diagram

For golang version, please check zetxtech/wssocks.

Features

  • Both client and server modes, supporting command-line usage or library integration.
  • Forward and reverse proxy capabilities.
  • Round-robin load balancing for reverse proxy.
  • SOCKS proxy authentication support.
  • IPv6 over SOCKS5 support.
  • UDP over SOCKS5 support.

Potential Applications

  • Distributed HTTP backend.
  • Bypassing CAPTCHA using client-side proxies.
  • Secure intranet penetration, using CDN network.

Usage

As a tool

Forward Proxy:

# Server (WebSockets at port 8765, as network connector)
pywssocks server -t example_token

# Client (SOCKS5 at port 1080)
pywssocks client -t example_token -u ws://localhost:8765 -p 1080

Reverse Proxy:

# Server (WebSockets at port 8765, SOCKS at port 1080)
pywssocks server -t example_token -p 1080 -r

# Client (as network connector)
pywssocks client -t example_token -u ws://localhost:8765 -r

As a library

Forward Proxy:

import asyncio
from pywssocks import WSSocksServer, WSSocksClient

# Server
server = WSSocksServer(
    ws_host="0.0.0.0",
    ws_port=8765,
)
token = server.add_forward_token()
print(f"Token: {token}")
asyncio.run(server.start())

# Client
client = WSSocksClient(
    token="<token>",
    ws_url="ws://localhost:8765",
    socks_host="127.0.0.1",
    socks_port=1080,
)
asyncio.run(client.start())

Reverse Proxy:

import asyncio
from pywssocks import WSSocksServer, WSSocksClient

# Server
server = WSSocksServer(
    ws_host="0.0.0.0",
    ws_port=8765,
    socks_host="127.0.0.1",
    socks_port_pool=range(1024, 10240),
)
token, port = server.add_reverse_token()
print(f"Token: {token}\nPort: {port}")
asyncio.run(server.start())

# Client
client = WSSocksClient(
    token="<token>",
    ws_url="ws://localhost:8765",
    reverse=True,
)
asyncio.run(client.start())

Installation

Pywssocks requires python >= 3.8, and can be installed by:

pip install pywssocks

Pywssocks is also available via docker:

docker run --rm -it jackzzs/pywssocks --help

Documentation

Visit the documentation: https://pywssocks.zetx.tech

License

Pywssocks is open source under the MIT license.

FAQs

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts