Browse Source

Added more examples

main
nibrag 9 years ago
parent
commit
b9ea70db83
1 changed files with 53 additions and 21 deletions
  1. +53
    -21
      README.rst

+ 53
- 21
README.rst View File

@@ -27,30 +27,33 @@ direct usage
.. code-block:: python .. code-block:: python


import asyncio import asyncio
from aiosocks import ( import aiosocks
Socks4Addr, Socks5Addr, Socks4Auth, Socks5Auth, create_connection
)
async def connect(): async def connect():
socks5_addr = Socks5Addr('127.0.0.1', 1080) socks5_addr = aiosocks.Socks5Addr('127.0.0.1', 1080)
socks4_addr = Socks4Addr('127.0.0.1', 1080) socks4_addr = aiosocks.Socks4Addr('127.0.0.1', 1080)
socks5_auth = Socks5Auth('login', 'pwd') socks5_auth = aiosocks.Socks5Auth('login', 'pwd')
socks4_auth = Socks4Auth('ident') socks4_auth = aiosocks.Socks4Auth('ident')
dst = ('github.com', 80) dst = ('github.com', 80)
# socks5 connect # socks5 connect
transport, protocol = await create_connection( transport, protocol = await aiosocks.create_connection(
lambda: Protocol, proxy=socks5_addr, proxy_auth=socks5_auth, dst=dst) lambda: Protocol, proxy=socks5_addr, proxy_auth=socks5_auth, dst=dst)
# socks4 connect # socks4 connect
transport, protocol = await create_connection( transport, protocol = await aiosocks.create_connection(
lambda: Protocol, proxy=socks4_addr, proxy_auth=socks4_auth, dst=dst) lambda: Protocol, proxy=socks4_addr, proxy_auth=socks4_auth, dst=dst)
# socks4 without auth and local domain name resolving # socks4 without auth and local domain name resolving
transport, protocol = await create_connection( transport, protocol = await aiosocks.create_connection(
lambda: Protocol, proxy=socks4_addr, proxy_auth=None, dst=dst, remote_resolve=False) lambda: Protocol, proxy=socks4_addr, proxy_auth=None, dst=dst, remote_resolve=False)

# use socks protocol
transport, protocol = await aiosocks.create_connection(
None, proxy=socks4_addr, proxy_auth=None, dst=dst)
if __name__ == '__main__': if __name__ == '__main__':
@@ -58,6 +61,25 @@ direct usage
loop.run_until_complete(connect()) loop.run_until_complete(connect())
loop.close() loop.close()


error handling
^^^^^^^^^^^^^^

.. code-block:: python

try:
transport, protocol = await aiosocks.create_connection(
lambda: Protocol, proxy=socks5_addr, proxy_auth=socks5_auth, dst=dst)
except aiosocks.SocksConnectionError:
# connection error
except aiosocks.LoginAuthenticationFailed:
# auth failed
except aiosocks.NoAcceptableAuthMethods:
# All offered SOCKS5 authentication methods were rejected
except (aiosocks.InvalidServerVersion, aiosocks.InvalidServerReply):
# something wrong
except aiosocks.SocksError:
# something other

aiohttp usage aiohttp usage
^^^^^^^^^^^^^ ^^^^^^^^^^^^^


@@ -65,19 +87,29 @@ aiohttp usage


import asyncio import asyncio
import aiohttp import aiohttp
from aiosocks import Socks5Addr, Socks5Auth import aiosocks
from aiosocks.connector import SocksConnector from aiosocks.connector import SocksConnector

async def load_github_main(): async def load_github_main():
addr = Socks5Addr('127.0.0.1', 1080) addr = aiosocks.Socks5Addr('127.0.0.1', 1080)
auth = Socks5Auth('proxyuser1', password='pwd') auth = aiosocks.Socks5Auth('proxyuser1', password='pwd')
# remote resolve
# conn = SocksConnector(proxy=addr, proxy_auth=auth, remote_resolve=True)

# or locale resolve
conn = SocksConnector(proxy=addr, proxy_auth=auth, remote_resolve=False) conn = SocksConnector(proxy=addr, proxy_auth=auth, remote_resolve=False)
try:
with aiohttp.ClientSession(connector=conn) as ses: with aiohttp.ClientSession(connector=conn) as ses:
async with session.get('http://github.com/') as resp: async with session.get('http://github.com/') as resp:
if resp.status == 200: if resp.status == 200:
print(await resp.text()) print(await resp.text())
except aiohttp.ProxyConnectionError:
# connection problem
except aiosocks.SocksError:
# communication problem
if __name__ == '__main__': if __name__ == '__main__':


||||||
x
 
000:0
Loading…
Cancel
Save