Python requests ipv6 proxy

Saved searches

Use saved searches to filter your results more quickly

You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

requests ignores no_proxy which contains a IPv6 CIDR #6313

requests ignores no_proxy which contains a IPv6 CIDR #6313

Comments

python requests supports a no_proxy environment variable with a IPv4 CIDR e.g.

+ export http_proxy no_proxy + http_proxy=http://localhost + python -c 'import requests.utils ; print(requests.utils.should_bypass_proxies("http://1.2.3.4", None))' False + no_proxy=1.2.3.0/24 + python -c 'import requests.utils ; print(requests.utils.should_bypass_proxies("http://1.2.3.4", None))' True 

but doesn’t support a IPv6 CIDR e.g.

+ http_proxy=http://localhost + python -c 'import requests.utils ; print(requests.utils.should_bypass_proxies("http://[1:2:3::4]", None))' False + no_proxy=1:2:3::/64 + python -c 'import requests.utils ; print(requests.utils.should_bypass_proxies("http://[1:2:3::4]", None))' False 

Expected Result

For proxy to be bypassed if a the url matches the IPv6 CIDR in no_proxy

Actual Result

Reproduction Steps

System Information

[derekh@laptop ~]$ python -m requests.help
/usr/lib/python3.11/site-packages/requests/help.py:24: DeprecationWarning: ‘urllib3.contrib.pyopenssl’ module is deprecated and will be removed in a future release of urllib3 2.x. Read more in this issue: urllib3/urllib3#2680
from urllib3.contrib import pyopenssl
«chardet»: «version»: «5.1.0»
>,
«charset_normalizer»: «version»: «2.1.0»
>,
«cryptography»: «version»: «37.0.2»
>,
«idna»: «version»: «3.3»
>,
«implementation»: «name»: «CPython»,
«version»: «3.11.1»
>,
«platform»: «release»: «6.0.13-300.fc37.x86_64»,
«system»: «Linux»
>,
«pyOpenSSL»: «openssl_version»: «30000050»,
«version»: «21.0.0»
>,
«requests»: «version»: «2.28.1»
>,
«system_ssl»: «version»: «30000050»
>,
«urllib3»: «version»: «1.26.12»
>,
«using_charset_normalizer»: false,
«using_pyopenssl»: true
>
Читайте также:  Python client server thread

The text was updated successfully, but these errors were encountered:

Источник

Почему возникает ошибка запроса через прокси с IPv6?

Здравствуйте, не могу понять как решить проблему. Я купил приватный прокси, который находится в Германии. У этого прокси IPv6 и используется SOCKS5. Сайт на который я делаю запрос поддерживает IPv6.

import requests responce = requests.get('https://yandex.ru/internet/', proxies=) print(responce.text)
Traceback (most recent call last): File "C:\Users\Dmitry\AppData\Local\Programs\Python\Python36-32\lib\site-packages\socks.py", line 851, in connect negotiate(self, dest_addr, dest_port) File "C:\Users\Dmitry\AppData\Local\Programs\Python\Python36-32\lib\site-packages\socks.py", line 497, in _negotiate_SOCKS5 self, CONNECT, dest_addr) File "C:\Users\Dmitry\AppData\Local\Programs\Python\Python36-32\lib\site-packages\socks.py", line 578, in _SOCKS5_request raise SOCKS5Error(": ".format(status, error)) socks.SOCKS5Error: 0x05: Connection refused During handling of the above exception, another exception occurred: Traceback (most recent call last): File "C:\Users\Dmitry\AppData\Local\Programs\Python\Python36-32\lib\site-packages\urllib3\contrib\socks.py", line 88, in _new_conn **extra_kw File "C:\Users\Dmitry\AppData\Local\Programs\Python\Python36-32\lib\site-packages\socks.py", line 262, in create_connection raise err File "C:\Users\Dmitry\AppData\Local\Programs\Python\Python36-32\lib\site-packages\socks.py", line 252, in create_connection sock.connect((remote_host, remote_port)) File "C:\Users\Dmitry\AppData\Local\Programs\Python\Python36-32\lib\site-packages\socks.py", line 100, in wrapper return function(*args, **kwargs) File "C:\Users\Dmitry\AppData\Local\Programs\Python\Python36-32\lib\site-packages\socks.py", line 855, in connect raise GeneralProxyError("Socket error", error) socks.GeneralProxyError: Socket error: 0x05: Connection refused During handling of the above exception, another exception occurred: Traceback (most recent call last): File "C:\Users\Dmitry\AppData\Local\Programs\Python\Python36-32\lib\site-packages\urllib3\connectionpool.py", line 601, in urlopen chunked=chunked) File "C:\Users\Dmitry\AppData\Local\Programs\Python\Python36-32\lib\site-packages\urllib3\connectionpool.py", line 346, in _make_request self._validate_conn(conn) File "C:\Users\Dmitry\AppData\Local\Programs\Python\Python36-32\lib\site-packages\urllib3\connectionpool.py", line 850, in _validate_conn conn.connect() File "C:\Users\Dmitry\AppData\Local\Programs\Python\Python36-32\lib\site-packages\urllib3\connection.py", line 284, in connect conn = self._new_conn() File "C:\Users\Dmitry\AppData\Local\Programs\Python\Python36-32\lib\site-packages\urllib3\contrib\socks.py", line 110, in _new_conn "Failed to establish a new connection: %s" % error urllib3.exceptions.NewConnectionError: : Failed to establish a new connection: 0x05: Connection refused During handling of the above exception, another exception occurred: Traceback (most recent call last): File "C:\Users\Dmitry\AppData\Local\Programs\Python\Python36-32\lib\site-packages\requests\adapters.py", line 440, in send timeout=timeout File "C:\Users\Dmitry\AppData\Local\Programs\Python\Python36-32\lib\site-packages\urllib3\connectionpool.py", line 639, in urlopen _stacktrace=sys.exc_info()[2]) File "C:\Users\Dmitry\AppData\Local\Programs\Python\Python36-32\lib\site-packages\urllib3\util\retry.py", line 388, in increment raise MaxRetryError(_pool, url, error or ResponseError(cause)) urllib3.exceptions.MaxRetryError: SOCKSHTTPSConnectionPool(host='yandex.ru', port=443): Max retries exceeded with url: /internet/ (Caused by NewConnectionError(': Failed to establish a new connection: 0x05: Connection refused',)) During handling of the above exception, another exception occurred: Traceback (most recent call last): File "C:/Users/Dmitry/Desktop/GitHub/Python/Test/main.py", line 4, in proxies=) File "C:\Users\Dmitry\AppData\Local\Programs\Python\Python36-32\lib\site-packages\requests\api.py", line 72, in get return request('get', url, params=params, **kwargs) File "C:\Users\Dmitry\AppData\Local\Programs\Python\Python36-32\lib\site-packages\requests\api.py", line 58, in request return session.request(method=method, url=url, **kwargs) File "C:\Users\Dmitry\AppData\Local\Programs\Python\Python36-32\lib\site-packages\requests\sessions.py", line 508, in request resp = self.send(prep, **send_kwargs) File "C:\Users\Dmitry\AppData\Local\Programs\Python\Python36-32\lib\site-packages\requests\sessions.py", line 618, in send r = adapter.send(request, **kwargs) File "C:\Users\Dmitry\AppData\Local\Programs\Python\Python36-32\lib\site-packages\requests\adapters.py", line 508, in send raise ConnectionError(e, request=request) requests.exceptions.ConnectionError: SOCKSHTTPSConnectionPool(host='yandex.ru', port=443): Max retries exceeded with url: /internet/ (Caused by NewConnectionError(': Failed to establish a new connection: 0x05: Connection refused',))

Помогите разобраться в чем ошибка и как ее исправить?

Источник

Блог

Как подключиться к веб-сайту с помощью прокси ipv6 https

#python #proxy #ipv6

#python #прокси #ipv6

Вопрос:

 import requests import socket from unittest.mock import patch orig_getaddrinfo = socket.getaddrinfo def getaddrinfoIPv6(host, port, family=0, type=0, proto=0, flags=0): return orig_getaddrinfo(host=host, port=port, family=socket.AF_INET6, type=type, proto=proto, flags=flags) with patch('socket.getaddrinfo', side_effect=getaddrinfoIPv6): r = requests.get('http://icanhazip.com') print(r.text) 

Вместо использования прокси ipv4 для подключения к веб-сайту я хотел бы подключиться с помощью прокси ipv6 https. Я просмотрел Google в поисках ответов и не нашел ни одного (насколько я понимаю)… Ближайший, который я нашел, это … (не использует прокси ipv6, вместо этого использует мой собственный ipv6). Я открыт для использования чего-либо помимо запросов для этого, однако запросы предпочтительнее. Я попытаюсь продолжить позже.

Ответ №1:

 import requests from requests.packages.urllib3.exceptions import InsecureRequestWarning requests.packages.urllib3.disable_warnings(InsecureRequestWarning) proxy = "http":"http://username:password@[2604:0180:2:3b5:9ebc:64e9:166c:d9f9]", "https":"https://username:password@[2604:0180:2:3b5:9ebc:64e9:166c:d9f9]"> url = "https://icanhazip.com" r = requests.get(url, proxies=proxy, verify=False) print(r.content) 

Если приведенный выше код не работает

 import requests proxy = "http": "http://userame:password@168.235.109.30:18117", "https":"https://userame:password@168.235.109.30:18117"> url = "https://icanhazip.com" r = requests.get(url, proxies=proxy) print(r.content) 

Это мой текущий провайдер для моего прокси ipv6 https, однако они используют ipv6 поверх ipv4 для своих клиентов, поэтому этот код работает, а приведенный выше код — нет (при использовании того же провайдера) Если вы используете провайдера, который поддерживает ipv6 сам по себе, тогда код вверху должен работать для вас.

Ответ №2:

Вы можете использовать https://proxyturk.net / Пример команды curl:

 curl -m 90 -x http://proxyUsername:proxyPassword@93.104.200.99:20000 http://api6.ipify.org 

Вы увидите пример результата:

 2a13:c206:2021:1522:9c5a:3ed5:156b:c1d0 

Источник

Оцените статью