Skip to main content

Supports both TCP and UDP client with the implementation of SOCKS5 and SOCKS4 protocol

Project description

socks-client

The socks-client package provides a core proxy client functionality for Python. Supports SOCKS4 proxy and SOCKS5 proxy and provides sync and async APIs. You probably don't need to use socks-client directly.

Features

  • Supports both TCP and UDP client with the implementation of SOCKS5 and SOCKS4 protocol
  • Supports username/password authentication and no authentication
  • Driven by the python standard library, no third-party dependencies

Installation

Install with pip if Python version 3.7.0 or higher is available.

pip install socks-client

Usage

Async TCP Client

import socks_client.tcp_async as socks
async def main():
    tcp_socks = socks.socksocket(proxy_type=socks.SOCKS5, proxy_host="10.233.7.205", proxy_port=1080, username="my_username", password="my_password", rdns=False)
    await tcp_socks.settimeout(5)
    sock = await tcp_socks.connect(dest_host="ip.sb", dest_port=80)
    reader, writer = await asyncio.open_connection(host=None, port=None, sock=sock)
    request = (b"GET / HTTP/1.1\r\n" b"Host: ip.sb\r\n" b"User-Agent: curl/7.64.0\r\n\r\n")
    writer.write(request)
    response = await asyncio.wait_for(reader.read(1024), timeout=1)

Sync TCP Client

import socks_client.tcp_sync as socks
def tcp_client_through_socks(proxy_host, proxy_port, target_host, target_port):
    tcp_socks = socks.socksocket()
    tcp_socks.setproxy(socks.SOCKS5, proxy_host, proxy_port, rdns=False, username="my_username", password="my_password")
    tcp_socks.settimeout(5)
    tcp_socks.connect_ex((target_host, target_port))
    request = b"GET / HTTP/1.1\r\nHost: ip.sb\r\nUser-Agent: curl/7.64.0\r\n\r\n"
    tcp_socks.send(request)
    response_headers = tcp_socks.recv(4096).decode()

Async UDP Client

import socks_client.udp_async as socks
async def udp_client_through_socks(proxy_host, proxy_port, target_host, target_port, message):
    await socks.setdefaultproxy(socks.SOCKS5, proxy_host, proxy_port, rdns=True, username="my_username", password="my_password")
    socket.socket = socks.socksocket
    udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    await udp_socket.settimeout(5)
    await udp_socket.sendto(message.encode(), (target_host, target_port))
    response, server_address = await udp_socket.recvfrom(1024)

Sync UDP Client

import socks_client.udp_sync as socks
def udp_client_through_socks(proxy_host, proxy_port, target_host, target_port, message):
    socks.setdefaultproxy(socks.SOCKS5, proxy_host, proxy_port, rdns=False, username="my_username", password="my_password")
    socket.socket = socks.socksocket
    udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    udp_socket.settimeout(5)
    udp_socket.sendto(message.encode(), (target_host, target_port))
    response, server_address = udp_socket.recvfrom(1024)

Reference

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

socks-client-1.0.0.tar.gz (12.0 kB view details)

Uploaded Source

File details

Details for the file socks-client-1.0.0.tar.gz.

File metadata

  • Download URL: socks-client-1.0.0.tar.gz
  • Upload date:
  • Size: 12.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.2

File hashes

Hashes for socks-client-1.0.0.tar.gz
Algorithm Hash digest
SHA256 329407c5c642c142b1ea84751f42fc79745b15e6b0e5382e56cca4f58ce3684e
MD5 7baf0786bd1cf5638ad0278193cc6905
BLAKE2b-256 7eaf55ce2d0f472bca05591492a10243e817863376a844c4a61dc4333f40993b

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page