async def open_connection(proxy_url=None, host=None, port=None, *, proxy_type=ProxyType.SOCKS5, proxy_host='127.0.0.1', proxy_port=1080, username=None, password=None, rdns=True, loop=None, **kwargs): if host is None or port is None: raise ValueError('host and port must be specified') # pragma: no cover if loop is None: loop = asyncio.get_event_loop() if proxy_url is not None: proxy_type, proxy_host, proxy_port, username, password \ = parse_proxy_url(proxy_url) proxy = Proxy.create( proxy_type=proxy_type, host=proxy_host, port=proxy_port, username=username, password=password, rdns=rdns, loop=loop ) sock = await proxy.connect(host, port) # noinspection PyTypeChecker return await asyncio.open_connection( host=None, port=None, sock=sock, **kwargs )
def get_transport_for_socks_proxy(verify, http2, local_address, proxy_url, limit, retries): # support socks5h (requests compatibility): # https://requests.readthedocs.io/en/master/user/advanced/#socks # socks5:// hostname is resolved on client side # socks5h:// hostname is resolved on proxy side rdns = False socks5h = 'socks5h://' if proxy_url.startswith(socks5h): proxy_url = 'socks5://' + proxy_url[len(socks5h):] rdns = True proxy_type, proxy_host, proxy_port, proxy_username, proxy_password = parse_proxy_url( proxy_url) verify = get_sslcontexts(proxy_url, None, True, False, http2) if verify is True else verify return AsyncProxyTransportFixed( proxy_type=proxy_type, proxy_host=proxy_host, proxy_port=proxy_port, username=proxy_username, password=proxy_password, rdns=rdns, loop=get_loop(), verify=verify, http2=http2, local_address=local_address, max_connections=limit.max_connections, max_keepalive_connections=limit.max_keepalive_connections, keepalive_expiry=limit.keepalive_expiry, retries=retries, **TRANSPORT_KWARGS)
def from_url(cls, url, **kwargs): proxy_type, host, port, username, password = parse_proxy_url(url) return cls(proxy_type=proxy_type, host=host, port=port, username=username, password=password, **kwargs)
def from_urls(cls, urls: Iterable[str], **kwargs): infos = [] for url in urls: proxy_type, host, port, username, password = parse_proxy_url(url) proxy_info = ProxyInfo(proxy_type=proxy_type, host=host, port=port, username=username, password=password) infos.append(proxy_info) return cls(infos, **kwargs)
def _create_session(self): proxy_kwargs = {} if self.proxy_url: proxy_kwargs['proxy_type'],\ proxy_kwargs['host'],\ proxy_kwargs['port'],\ proxy_kwargs['username'],\ proxy_kwargs['password'] = parse_proxy_url(self.proxy_url) connector = ProxyConnector( ttl_dns_cache=self.ttl_dns_cache, verify_ssl=False, **proxy_kwargs, ) else: connector = aiohttp.TCPConnector( ttl_dns_cache=self.ttl_dns_cache, verify_ssl=False, ) return aiohttp.ClientSession(connector=connector)
except Exception as e: logging.critical('INVALID "MANAGER"! PLEASE CHECK YOUR SETTINGS!', exc_info=e) exit(1) TELEGRAPH_TOKEN: Final = __list_parser(os.environ.get('TELEGRAPH_TOKEN')) MULTIUSER: Final = __bool_parser(os.environ.get('MULTIUSER'), default_value=True) # ----- proxy config ----- DEFAULT_PROXY: Final = os.environ.get('SOCKS_PROXY') or os.environ.get('socks_proxy') \ or os.environ.get('HTTP_PROXY') or os.environ.get('http_proxy') \ or os.environ.get('HTTPS_PROXY') or os.environ.get('https_proxy') TELEGRAM_PROXY: Final = os.environ.get('T_PROXY') or DEFAULT_PROXY if TELEGRAM_PROXY: _parsed = parse_proxy_url(TELEGRAM_PROXY.replace('socks5h', 'socks5')) TELEGRAM_PROXY_DICT: Final = { 'proxy_type': _parsed[0], 'addr': _parsed[1], 'port': _parsed[2], 'username': _parsed[3], 'password': _parsed[4], 'rdns': True } TELEGRAPH_PROXY_DICT: Final = { 'proxy_type': _parsed[0], 'host': _parsed[1], 'port': _parsed[2], 'username': _parsed[3], 'password': _parsed[4], 'rdns': True