Exemple #1
0
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
    )
Exemple #2
0
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)
Exemple #3
0
 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)
Exemple #4
0
    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)
Exemple #5
0
 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)
Exemple #6
0
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