Como configurar um proxy para urllib
Neste artigo, exploraremos como configurar um proxy para Python3 urllib, uma biblioteca interna usada para fazer solicitações HTTP. Forneceremos um trecho de código que demonstra como definir um servidor proxy e um número de porta, criar um objeto ProxyHandler e usá-lo para fazer solicitações por meio do proxy.
Para configurar um proxy para Python3 urllib, você pode usar a classe
urllib.request.ProxyHandler
para definir o servidor proxy e o número da porta e, em seguida, usar esse objeto para criar um abridor
objeto que será utilizado para fazer requisições através do proxy.Aqui está um trecho de código de exemplo que mostra como configurar um proxy usando urllib:
from urllib import request
# Defina o servidor proxy e o número da porta
proxy_server = 'http://yourproxyserver.com'
proxy_port = '8080'
# Crie um objeto ProxyHandler com o servidor proxy e a porta
proxy_handler = request.ProxyHandler(
{
'http': f'{proxy_server}:{proxy_port}',
'https': f'{proxy_server}:{proxy_port}'
}
)
# Crie um objeto abridor com o ProxyHandler
opener = request.build_opener(proxy_handler)
# Use o abridor para fazer uma solicitação por meio do proxy
response = opener.open('http://example.com')
# Imprimir a resposta
print(response.read())
Neste exemplo, substitua
http://yourproxyserver.com
pela URL do seu servidor proxy e 8080 pelo número da porta que seu servidor proxy está usando. Em seguida, substitua http://example.com
pela URL do site que você deseja acessar por meio do proxy.Se você não tiver seu próprio proxy, poderá obtê-lo no pacote do provedor Proxy Port.
Instalar pacote:
$ pip install proxyport2
Defina a
API_KEY
e chame a função get_proxy
:from proxyport2 import set_api_key, get_proxy
set_api_key('<API_KEY>')
print(get_proxy())
Obtenha uma chave API gratuitamente consultando as instruções detalhadas.
Aqui está um exemplo de como você pode combinar as etapas 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())
Às vezes, você pode encontrar erros de tempo limite como este:
TimeoutError: The read operation timed out
Proxies públicos não são muito confiáveis e não duram muito. Para superar esses obstáculos, você precisa tentar novas tentativas:
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)
Se você planeja fazer scraping de várias páginas, considere usar uma estrutura de web scraping como Scrapy em vez do urllib de baixo nível.