SOCKS Proxy¶
The aiorpcx package includes a SOCKS proxy client. It understands
the SOCKS4, SOCKS4a and SOCKS5 protocols.
Exceptions¶
-
exception
aiorpcx.SOCKSError¶ The base class of SOCKS exceptions. Each raised exception will be an instance of a derived class.
-
exception
aiorpcx.SOCKSProtocolError¶ A subclass of
SOCKSError. Raised when the proxy does not follow theSOCKSprotocol.
-
exception
aiorpcx.SOCKSFailure¶ A subclass of
SOCKSError. Raised when the proxy refuses or fails to make a connection.
Authentication¶
Currently the only supported authentication method is with a username
and password. Usernames can be used by all SOCKS protocols, but only
SOCKS5 uses the password.
Protocols¶
When creating a SocksProxy object, a protocol must be
specified and be one of the following.
-
class
aiorpcx.SOCKS4¶ An abstract class representing the
SOCKS4protocol.
-
class
aiorpcx.SOCKS4a¶ An abstract class representing the
SOCKS4aprotocol.
-
class
aiorpcx.SOCKS5¶ An abstract class representing the
SOCKS5protocol.
Proxy¶
You can create a SOCKSProxy object directly, but using one
of its auto-detection class methods is likely more useful.
-
class
aiorpcx.SOCKSProxy(address, protocol, auth)¶ An object representing a SOCKS proxy. The address is a Python socket address typically a (host, port) pair for IPv4, and a (host, port, flowinfo, scopeid) tuple for IPv6.
The protocol is one of
SOCKS4,SOCKS4aandSOCKS5.auth is a
SOCKSUserAuthobject orNone.After construction,
host,portandpeernameare set toNone.-
classmethod
auto_detect_address(address, auth, *, loop=None, timeout=5.0)¶ Try to detect a SOCKS proxy at address.
Protocols
SOCKS5,SOCKS4aandSOCKS4are tried in order. If a SOCKS proxy is detected return aSOCKSProxyobject, otherwiseNone. Returning a proxy object only means one was detected, not that it is functioning - for example, it may not have full network connectivity.auth is a
SOCKSUserAuthobject orNone.If testing any protocol takes more than timeout seconds, it is timed out and taken as not detected.
This class method is a coroutine.
-
classmethod
auto_detect_host(host, ports, auth, *, loop=None, timeout=5.0)¶ Try to detect a SOCKS proxy on host on one of the ports.
Call
auto_detect_address()for each(host, port)pair until a proxy is detected, and return it, otherwiseNone.auth is a
SOCKSUserAuthobject orNone.If testing any protocol on any port takes more than timeout seconds, it is timed out and taken as not detected.
This class method is a coroutine.
-
create_connection(protocol_factory, host, port, *, resolve=False, loop=None, ssl=None, family=0, proto=0, flags=0, timeout=30.0)¶ Connect to (host, port) through the proxy in the background. When successful, the coroutine returns a
(transport, protocol, address)triple, and sets the proxy attributepeername.- If resolve is
True, host is resolved locally rather than by the proxy. family, proto, flags are the optional address family, protocol and flags passed to loop.getaddrinfo() to get a list of remote addresses. If given, these should all be integers from the correspondingsocketmodule constants. - ssl is as documented for loop.create_connection().
If successfully connected the
_addressmember of the protocol is set. If resolve isTrueit is set to the successful address, otherwise(host, port).If connecting takes more than timeout seconds an
asyncio.TimeoutErrorexception is raised.This method is a coroutine.
- If resolve is
-
host¶ Set on a successful
create_connection()to the host passed to the proxy server. This will be the resolved address if its resolve argument wasTrue.
-
port¶ Set on a successful
create_connection()to the host passed to the proxy server.
-
peername¶ Set on a successful
create_connection()to the result ofsocket.getpeername()on the socket connected to the proxy.
-
classmethod