SOCKS proxy client for asyncio and aiohttp
Project description
Features
SOCKS4, SOCKS4a and SOCKS5 version
SocksConnector for aiohttp
SOCKS “CONNECT” command
TODO
UDP associate
TCP port binding
Usage
direct usage
import asyncio
from aiosocks import (
Socks4Addr, Socks5Addr, Socks4Auth, Socks5Auth, create_connection
)
async def connect():
socks5_addr = Socks5Addr('127.0.0.1', 1080)
socks4_addr = Socks4Addr('127.0.0.1', 1080)
socks5_auth = Socks5Auth('login', 'pwd')
socks4_auth = Socks4Auth('ident')
dst = ('github.com', 80)
# socks5 connect
transport, protocol = await create_connection(
lambda: Protocol, proxy=socks5_addr, proxy_auth=socks5_auth, dst=dst)
# socks4 connect
transport, protocol = await create_connection(
lambda: Protocol, proxy=socks4_addr, proxy_auth=socks4_auth, dst=dst)
# socks4 without auth and local domain name resolving
transport, protocol = await create_connection(
lambda: Protocol, proxy=socks4_addr, proxy_auth=None, dst=dst, remote_resolve=False)
if __name__ == '__main__':
loop = asyncio.get_event_loop()
loop.run_until_complete(connect())
loop.close()
aiohttp usage
import asyncio
import aiohttp
from aiosocks import Socks5Addr, Socks5Auth
from aiosocks.connector import SocksConnector
async def load_github_main():
addr = Socks5Addr('127.0.0.1', 1080)
auth = Socks5Auth('proxyuser1', password='pwd')
conn = SocksConnector(proxy=addr, proxy_auth=auth, remote_resolve=False)
with aiohttp.ClientSession(connector=conn) as ses:
async with session.get('http://github.com/') as resp:
if resp.status == 200:
return await resp.text()
if __name__ == '__main__':
loop = asyncio.get_event_loop()
loop.run_until_complete()
loop.close()
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
aiosocks-0.1.2.tar.gz
(6.1 kB
view hashes)