Metadata-Version: 1.0
Name: aiosocks
Version: 0.1.2
Summary: SOCKS proxy client for asyncio and aiohttp
Home-page: https://github.com/nibrag/aiosocks
Author: Nail Ibragimov
Author-email: ibragwork@gmail.com
License: Apache 2
Description: 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()
Platform: UNKNOWN
