async def test_proxy_chain(url): proxy = ProxyChain([ Proxy.from_url(SOCKS5_IPV4_URL), Proxy.from_url(SOCKS4_URL), Proxy.from_url(HTTP_PROXY_URL), ]) # noinspection PyTypeChecker status_code = await make_request(proxy=proxy, url=url) assert status_code == 200
async def _wrap_create_connection(self, protocol_factory, host, port, *, ssl, **kwargs): proxy = Proxy.create( proxy_type=self._proxy_type, host=self._proxy_host, port=self._proxy_port, username=self._proxy_username, password=self._proxy_password, rdns=self._rdns, loop=self._loop, ) connect_timeout = None timeout = kwargs.get('timeout') if timeout is not None: connect_timeout = getattr(timeout, 'sock_connect', None) stream = await proxy.connect(dest_host=host, dest_port=port, dest_ssl=ssl, timeout=connect_timeout) transport = stream.writer.transport protocol = protocol_factory() transport.set_protocol(protocol) protocol.transport = transport return transport, protocol
async def test_socks5_proxy_with_invalid_credentials(): proxy = Proxy.create( proxy_type=ProxyType.SOCKS5, host=PROXY_HOST_IPV4, port=SOCKS5_PROXY_PORT, username=LOGIN, password=PASSWORD + 'aaa', ) with pytest.raises(ProxyError): await make_request(proxy=proxy, url=TEST_URL_IPV4)
async def test_socks5_proxy_with_invalid_proxy_port(unused_tcp_port): proxy = Proxy.create( proxy_type=ProxyType.SOCKS5, host=PROXY_HOST_IPV4, port=unused_tcp_port, username=LOGIN, password=PASSWORD, ) with pytest.raises(ProxyConnectionError): await make_request(proxy=proxy, url=TEST_URL_IPV4)
async def test_socks5_proxy_with_connect_timeout(): proxy = Proxy.create( proxy_type=ProxyType.SOCKS5, host=PROXY_HOST_IPV4, port=SOCKS5_PROXY_PORT, username=LOGIN, password=PASSWORD, ) with pytest.raises(ProxyTimeoutError): await make_request(proxy=proxy, url=TEST_URL_IPV4, timeout=0.0001)
async def test_socks5_proxy_ipv4_with_auth_none(url, rdns): proxy = Proxy.from_url(SOCKS5_IPV4_URL_WO_AUTH, rdns=rdns) status_code = await make_request(proxy=proxy, url=url) assert status_code == 200
async def test_socks5_proxy_hostname_ipv4(url): proxy = Proxy.from_url(SOCKS5_IPV4_HOSTNAME_URL) status_code = await make_request(proxy=proxy, url=url) assert status_code == 200
async def test_socks5_proxy_ipv4(url, rdns, resolve_host): proxy = Proxy.from_url(SOCKS5_IPV4_URL, rdns=rdns) status_code = await make_request(proxy=proxy, url=url, resolve_host=resolve_host) assert status_code == 200
async def test_http_proxy(url): proxy = Proxy.from_url(HTTP_PROXY_URL) status_code = await make_request(proxy=proxy, url=url) assert status_code == 200
async def test_socks5_proxy_ipv6(url): proxy = Proxy.from_url(SOCKS5_IPV6_URL) status_code = await make_request(proxy=proxy, url=url) assert status_code == 200