diff --git a/README.md b/README.md deleted file mode 100644 index bc4b628..0000000 --- a/README.md +++ /dev/null @@ -1,72 +0,0 @@ -# aiosocks -SOCKS proxy client for asyncio and aiohttp (python 3.5+) - -# 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() -``` diff --git a/README.rst b/README.rst new file mode 100644 index 0000000..9a39304 --- /dev/null +++ b/README.rst @@ -0,0 +1,79 @@ +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: + return await resp.text() + + + if __name__ == '__main__': + loop = asyncio.get_event_loop() + loop.run_until_complete() + loop.close() \ No newline at end of file diff --git a/setup.py b/setup.py index 1eb4086..134c2d5 100644 --- a/setup.py +++ b/setup.py @@ -32,6 +32,6 @@ setup( url='https://github.com/nibrag/aiosocks', description='SOCKS proxy client for asyncio and aiohttp', - long_description=open("README.md").read(), + long_description=open("README.rst").read(), packages=['aiosocks'] )