requests ignores no_proxy which contains a IPv6 CIDR

Abierto
#6,313 1 comentario 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
3/5
Tiempo estimado
1-2 días
Aptitud para principiantes
48/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Estancado
Stack tecnológico
python
Área
networking

Línea de trabajo

Comienza en requests.utils.should_bypass_proxies y reproduce el caso de CIDR IPv6 informado usando los comandos del issue. Traza cómo se comparan las entradas de no_proxy con las URL IPv6 y, a continuación, verifica que una dirección dentro de 1:2:3::/64 omita el proxy, manteniendo el comportamiento existente del CIDR IPv4.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

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

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

IPv6 CIDR ignored

Reproduction Steps

as above

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: https://github.com/urllib3/urllib3/issues/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
}

Lenguaje dominante
Python
Estrellas
54.7k
Forks
10.8k
Merge medio
18 min
PR fusionados (30 d)
1

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de psf/requests

Todos los issues de psf/requests

Issues similares

Más issues de Python

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.