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
pypi:https://pypi.org/project/socks-client/
Usage
Async TCP Client
import socks_client.tcp_async as socks
async def tcp_client_through_socks(proxy_host, proxy_port, target_host, target_port):
tcp_socks = socks.socksocket(
proxy_type=socks.SOCKS5,
proxy_host=proxy_host,
proxy_port=proxy_port,
username="my_username",
password="my_password",
rdns=False,
)
await tcp_socks.settimeout(5)
sock = await tcp_socks.connect(dest_host=target_host, dest_port=target_port)
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\n" b"Host: ip.sb\r\n" b"User-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)
print("Response from server:", response.decode())
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-2.0.1.tar.gz
(16.2 kB
view details)
File details
Details for the file socks-client-2.0.1.tar.gz
.
File metadata
- Download URL: socks-client-2.0.1.tar.gz
- Upload date:
- Size: 16.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8b114d8d67377b12edb68e4390a791667cc5384944a31f6da3a1c5fa7754fbf1 |
|
MD5 | cf751f12fdc36259bd285eabfc9f7c1d |
|
BLAKE2b-256 | 2806f14442b293b1bafa04dc41ce8686b6359b3b42a6da335605962e2367dbe7 |