Skip to main content

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


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)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page