An attempt at adding UDP support to aiosocks. Untested due to lack of server support.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
nibrag 0064efbab2 create_connection may return socks protocol 10 years ago
aiosocks create_connection may return socks protocol 10 years ago
tests Added test case for aiohttp SocksConnector 10 years ago
.gitignore Update .gitignore 10 years ago
LICENSE.txt Create LICENSE.txt 10 years ago
README.rst Fixed: wrong run_until_complete calling 10 years ago
setup.py Use rst format for readme 10 years ago

README.rst

SOCKS proxy client for asyncio and aiohttp
==========================================

Features
--------
- SOCKS4, SOCKS4a and SOCKS5 version
- SocksConnector for aiohttp
- SOCKS "CONNECT" command

TODO
----
- UDP associate
- TCP port binding

Usage
-----
direct usage
^^^^^^^^^^^^

.. code-block:: python

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
^^^^^^^^^^^^^

.. code-block:: python

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:
print(await resp.text())


if __name__ == '__main__':
loop = asyncio.get_event_loop()
loop.run_until_complete(load_github_main())
loop.close()