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)
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 329407c5c642c142b1ea84751f42fc79745b15e6b0e5382e56cca4f58ce3684e |
|
MD5 | 7baf0786bd1cf5638ad0278193cc6905 |
|
BLAKE2b-256 | 7eaf55ce2d0f472bca05591492a10243e817863376a844c4a61dc4333f40993b |