Usando um Proxy com Python Requests

Comentários: 0

Em poucas palavras, os proxies são servidores que servem de camada exterior de ligação aos serviços de rede. Servem de intermediários entre um computador e o sítio do qual um utilizador pretende extrair informações. O pedido do utilizador, em vez de ser enviado diretamente para o sítio em causa, é primeiro dirigido para o proxy, que o envia depois para o servidor final. Assim, o endereço IP do servidor proxy é o que o sítio guarda em vez do endereço do utilizador.

Então, porquê utilizar um proxy?

  • Anonimato:

Por exemplo, se houver necessidade de recolher informações de um sítio sem receio de restrições ou bloqueios. Um proxy ajuda a mascarar o endereço IP do utilizador real, alterando a sua verdadeira identidade digital.

  • Contornar as restrições:

Um proxy de um país específico onde não há restrições pode ser usado. Isso ocorre porque, em certos países, o acesso a alguns programas e sites é limitado ou bloqueado.

  • Balanço de carga:

Se um grande número de solicitações for enviado para um determinado site, é provável que o sistema seja carregado. Consequentemente, há um grande risco de ser bloqueado. O uso de vários proxies ao mesmo tempo permite que os utilizadores distribuam uniformemente os pedidos para o site específico, evitando assim o bloqueio.

Configuração e instalação de Python Requests

Requests é a biblioteca para enviar pedidos HTTP usando Python. Torna simples efetuar pedidos GET e POST. Usar Python Requests sem proxy pode enviar pedidos HTTP, mas não fornece anonimato ou contorna restrições.

1. Instalar o Requests Biblioteca

Para instalar os pedidos, basta introduzir o comando abaixo no terminal:


pip install requests

2. Verificar a instalação

Para verificar se a biblioteca necessária está corretamente configurada, é necessário abrir o ambiente de desenvolvimento Python e executar o comando:


import requests 

print(requests.__version__)

Se tudo tiver sido feito corretamente, o script devolverá o número da versão.

Como utilizar o proxy com Python Requests

Depois de instalarmos a biblioteca requests, podemos começar a executar pedidos HTTP. No entanto, para incorporar um proxy, algumas configurações em Python devem ser feitas.

Vamos examinar os passos a seguir para configurar corretamente um proxy para pedidos em Python. Iremos considerar as configurações de Python Requests com proxies SOCKS separadamente.

1. Configurar o servidor proxy

Usar Python para configurar um proxy é muito fácil para os utilizadores que usam a biblioteca requests. Requer que o endereço do servidor proxy seja passado num dicionário e depois usado ao fazer pedidos HTTP.


proxies = {
    "http": "http://your-proxy-ip:port",
    "https": "http://your-proxy-ip:port",
}

response = requests.get("http://example.com", proxies=proxies)

2. Autenticação de proxy

Ao usar Python Requests, a autenticação proxy é fácil de configurar. Vamos dar uma olhada mais de perto nos detalhes.


proxies = { 
    "http": "http://username:password@your-proxy-ip:port", 
    "https": "http://username:password@your-proxy-ip:port", 
} 

response = requests.get("http://example.com", proxies=proxies)

Os dois novos campos que têm de ser preenchidos são:

  • username - nome de utilizador do proxy;
  • password - palavra-passe do proxy.

3. Utilização de proxies SOCKS

Para os utilizadores que necessitam de um nível mais elevado de anonimato, ou se estiver a trabalhar com sites muito restritos, os proxies HTTP normais poderão não funcionar. Neste caso, os proxies SOCKS podem ser melhores.

Para ativar o suporte de proxy SOCKS, é necessário instalar uma biblioteca adicional utilizando o comando indicado abaixo:


pip install requests[socks]

Uma vez instalado, os Python Requests permitem-lhe configurar um proxy SOCKS que pode ser usado como mostrado no exemplo abaixo.


import requests

proxies = {
    "http": "socks5h://your-proxy-ip:port",
    "https": "socks5h://your-proxy-ip:port",
}

response = requests.get("http://example.com", proxies=proxies)

Se o servidor proxy necessitar de autenticação, inclua-a como indicado abaixo.


proxies = {
    "http": "socks5h://username:password@your-proxy-ip:port",
    "https": "socks5h://username:password@your-proxy-ip:port",
}

Gerenciando Sessões com Proxies em Python Requests

Ao fazer muitas solicitações através de um único proxy, em vez de adicioná-lo a cada solicitação, torna-se muito mais eficiente usar sessões de Python Requests com proxy.

Este método de usar proxies ajuda a manter configurações em todas as sessões. Também simplifica o código, melhora o desempenho e, mais importante, torna a implementação muito mais fácil.

1. Usando Sessões Python Requests com Proxies

É muito fácil criar uma sessão, basta digitar requests.Session().

Considere o seguinte exemplo:


import requests

# Criar uma sessão
session = requests.Session()

session.proxies = {
    "http": "http://username:password@your-proxy-ip:port",
    "https": "http://username:password@your-proxy-ip:port",
}

# Pedido através da sessão
response = session.get("http://example.com")

Todas as solicitações Python dentro desta sessão usarão o proxy definido por padrão sem quaisquer configurações adicionais.

2. Lidando com Múltiplos Proxies em Python Requests

Quando você está ativamente envolvido com um site, seja para fins de raspagem ou automação, usar o mesmo proxy repetidamente pode fazer com que sua conta seja bloqueada. Isso é gerenciável rotacionando proxies, desde que você tenha alguns servidores proxy diferentes.

O exemplo a seguir mostra a implementação de um loop que rotaciona proxies para cada interação com a página web:


import requests
import random

proxies_list = [
    "http://username:password@your-proxy-ip[1]:port",
    "http://username:password@your-proxy-ip[2]:port",
    "http://username:password@your-proxy-ip[3]:port",
]

session = requests.Session()

for _ in range(5):
    proxy = random.choice(proxies_list)  # Escolher aleatoriamente um proxy
    session.proxies = {"http": proxy, "https": proxy}

    response = session.get("http://example.com")
    print(f"Used proxy: {proxy}")
    print(response.status_code)

Conclusão

Para resumir, aqui estão algumas sugestões que podem ajudá-lo a gerenciar melhor os proxies:

  • Use sessões para que você não tenha que definir um proxy a cada solicitação.
  • Use proxies anônimos sem logs para melhor proteção.
  • Para evitar ser bloqueado, use múltiplos proxies.

Neste artigo, abordamos o que são servidores proxy, como usar corretamente proxy em Python Requests e gerenciar proxies através de sessões para simplificar o código. O exemplo também mostra o uso de proxies SOCKS e regulares, como a autenticação é manipulada e o gerenciamento de proxy.

Comentários:

0 Comentários