Proxy Port logo
How-to Guías prácticas > Cómo configurar un proxy para urllib

Cómo configurar un proxy para urllib

En este artículo, exploraremos cómo configurar un proxy para Python3 urllib, una biblioteca integrada que se utiliza para realizar solicitudes HTTP. Proporcionaremos un fragmento de código que demuestra cómo definir un servidor proxy y un número de puerto, crear un objeto ProxyHandler y usarlo para realizar solicitudes a través del proxy.

Para configurar un proxy para Python3 urllib, puede usar la clase urllib.request.ProxyHandler para definir el servidor proxy y el número de puerto, y luego usar este objeto para crear un opener objeto que se utilizará para realizar solicitudes a través del proxy.

Aquí hay un fragmento de código de ejemplo que muestra cómo configurar un proxy usando urllib:
from urllib import request

# Definir el servidor proxy y el número de puerto
proxy_server = 'http://yourproxyserver.com'
proxy_port = '8080'

# Cree un objeto ProxyHandler con el servidor proxy y el puerto
proxy_handler = request.ProxyHandler(
    {
        'http': f'{proxy_server}:{proxy_port}',
        'https': f'{proxy_server}:{proxy_port}'
    }
)

# Cree un objeto de apertura con ProxyHandler
opener = request.build_opener(proxy_handler)

# Use el abridor para hacer una solicitud a través del proxy
response = opener.open('http://example.com')

# Imprime la respuesta
print(response.read())

            
        
En este ejemplo, reemplace http://yourproxyserver.com con la URL de su servidor proxy y 8080 con el número de puerto que utiliza su servidor proxy. Luego reemplace http://example.com con la URL del sitio web al que desea acceder a través del proxy.

Si no tiene su propio proxy, puede obtener uno del paquete del proveedor de Proxy Port.
Paquete de instalación:
$ pip install proxyport2

            
Configure API_KEY y llame a la función get_proxy:
from proxyport2 import set_api_key, get_proxy

set_api_key('<API_KEY>')

print(get_proxy())


        
Obtenga una clave de API de forma gratuita consultando las instrucciones detalladas.
Aquí hay un ejemplo de cómo puede combinar los pasos anteriores:
from urllib import request

from proxyport2 import set_api_key, get_proxy


set_api_key('<API_KEY>')

proxy = get_proxy()
proxy_handler = request.ProxyHandler(
    {'http': proxy, 'https': proxy})

opener = request.build_opener(proxy_handler)
response = opener.open('https://example.com', timeout=5)

print(response.read())


        
No olvide reemplazar <API_KEY> con su actual Clave de API.

A veces, puede encontrar errores de tiempo de espera como este:
TimeoutError: The read operation timed out

            
Los proxies públicos no son muy confiables y no duran mucho. Para superar estos obstáculos, debe intentar reintentos:
from urllib import request

from proxyport2 import set_api_key, get_proxy


set_api_key('<API_KEY>')

for i in range(10):
    proxy = get_proxy()
    proxy_handler = request.ProxyHandler(
        {'http': proxy, 'https': proxy})
    opener = request.build_opener(proxy_handler)

    try:
        response = opener.open('https://example.com', timeout=5)
        print(response.read())
        break
    except Exception as e:
        print(e)


        
Si planea raspar desde varias páginas, debería considerar usar un marco de raspado web como Scrapy en lugar del urllib de bajo nivel.
Proxy para raspar
Más