Como usar um proxy em Python

Como fazer, Proxies, Python, Mar-06-20245 minutos de leitura

É frequente encontrarmos o termo "proxy" quando trabalhamos no domínio da informática. Quando ligado à Internet, cada computador recebe um endereço IP (Internet Protocol) único que identifica o computador e a sua localização geográfica. O seu computador envia um pedido sempre que necessita de qualquer informação da Internet. O pedido é

Índice

É frequente encontrarmos o termo "proxy" quando trabalhamos no domínio da informática. Quando ligado à Internet, cada computador recebe um endereço IP (Internet Protocol) único que identifica o computador e a sua localização geográfica. O computador envia um pedido sempre que necessita de qualquer informação da Internet. O pedido é enviado para um computador de destino que verifica o tipo de informação que está a ser pedida. O computador de destino envia as informações de volta se tiver autorização para as fornecer ao nosso endereço IP. Por vezes, o computador pretende obter as informações da Internet sem ser identificado. Essa informação é normalmente bloqueada, mas podemos obtê-la utilizando um proxy que actua como intermediário entre o cliente e a máquina do servidor.

Os clientes utilizam normalmente o servidor proxy para navegar em páginas Web e solicitar recursos de forma anónima, uma vez que funciona como um campo de identificação entre o computador do cliente e a Internet. 

Os servidores proxy tornaram-se bastante populares devido à crescente preocupação com a segurança em linha e o roubo de dados. Neste caso, coloca-se a questão de saber como é que o servidor proxy está ligado à segurança do nosso sistema. Podemos dizer que um servidor proxy acrescenta um nível de segurança adicional entre o nosso servidor e o mundo exterior. Esta segurança adicional ajuda a proteger o nosso sistema de uma violação. 

Como usar um proxy em Python?

Para utilizar proxies com os pedidos Python, é necessário seguir os passos abaixo.

Pedidos de importação

Importe o pacote requests que é uma biblioteca HTTP simples. Pode enviar facilmente pedidos através deste pacote sem adicionar manualmente cadeias de consulta aos seus URLs. Pode importar pedidos utilizando o comando abaixo.

pedidos de importação

Criar um dicionário

É necessário criar um dicionário de proxies que defina as ligações HTTP e HTTPS. Pode dar à variável do dicionário qualquer nome como "proxies" que mapeie um protocolo para o URL do proxy. Além disso, tem de definir a variável URL para o sítio Web a partir do qual pretende efetuar a recolha.

proxies = {
  "http":'http://203.190.46.62:8080',
  "https":'https://111.68.26.237:8080'
}
url = 'https://httpbin.org/ip'

Aqui o dicionário define o URL do proxy para dois protocolos distintos, ou seja, HTTP e HTTPS.

Criar uma variável de resposta

É necessário criar uma variável de resposta que utilize qualquer um dos métodos de pedido. Este método recebe dois argumentos:

  • O URL que criou
  • O dicionário que definiu
response = requests.get(url,proxies = proxies)
print(response.json())

O resultado é o seguinte:

Métodos de pedidos

Há uma série de métodos de pedido como:

  • GET - Obtém informações de um determinado servidor utilizando um determinado URL. 
  • POST - Este método solicita que o servidor Web aceite os dados incluídos no corpo da mensagem de pedido para os armazenar.
  • PUT - Solicita que os dados incluídos sejam armazenados no URL indicado.
  • DELETE - Este método envia um pedido DELETE para o URL fornecido.
  • PATCH - Este método de pedido é suportado pelo protocolo HTTP e efectua alterações parciais a um recurso existente. 
  • HEAD - Envia um pedido HEAD para o URL fornecido quando não é necessário o conteúdo do ficheiro e apenas se pretende os cabeçalhos HTTP ou o status_code.

Pode utilizar a sintaxe abaixo dos métodos de pedido quando o URL é especificado. Aqui, o nosso URL é o mesmo que utilizámos no código acima, ou seja, https://httpbin.org/ip.

response = requests.get(url)
response = requests.post(url, data={"a": 1, "b": 2})
response = requests.put(url)
response = requests.delete(url)
response = requests.patch(url)
response = requests.head(url)
response = requests.options(url)

Sessões de proxy

Se pretender extrair os dados de sítios Web que utilizam sessões, pode seguir os passos indicados abaixo.

Passo#01

Importar a biblioteca de pedidos.

pedidos de importação

Passo#02

Crie um objeto de sessão criando uma variável de sessão e definindo-a para o método requests Session(). 

session = requests.Session()

session.proxies = {
   'http': 'http://10.10.10.10:8000',
   'https': 'http://10.10.10.10:8000',
}

url = 'http://mywebsite.com/example'

Passo#03

Envie os proxies de sessão através do método requests e passe o URL como um argumento.

resposta = session.get(url)

Principais tipos de proxies

Vamos discutir os dois tipos essenciais de proxies, i-e;

Proxies estáticosProxies rotativos

Proxies estáticos

Podemos definir os proxies estáticos como os protocolos Internet do centro de dados atribuídos através de um contrato com um fornecedor de serviços Internet (ISP). São concebidos para permanecerem ligados a um servidor proxy durante um determinado período de tempo. O nome "estático" implica que nos permite funcionar como um utilizador residencial com o mesmo IP durante o tempo que for necessário. 

Em suma, com a utilização de proxies estáticos, obtemos a velocidade dos proxies de centros de dados e o elevado anonimato dos proxies residenciais. Além disso, um proxy estático permite-nos evitar a rotação de endereços IP, tornando a sua utilização significativamente mais simples.

Os serviços de IP estático não são criados através da utilização de máquinas virtuais, ao contrário dos proxies normais dos centros de dados. Estes proxies, também conhecidos como endereços IP fixos, parecem consumidores genuínos para quase todos os sítios Web. 

Proxies rotativos

Podemos definir a rotação de proxy como uma funcionalidade que altera o nosso endereço IP a cada novo pedido que enviamos.

Quando visitamos um sítio Web, enviamos um pedido que mostra ao servidor de destino uma série de dados, incluindo o nosso endereço IP. Por exemplo, quando recolhemos dados utilizando um scraper (para gerar contactos), enviamos muitos pedidos deste tipo. Por isso, o servidor de destino fica desconfiado e proíbe-o quando a maioria dos pedidos provém do mesmo IP. 

Por isso, tem de haver uma solução para alterar o nosso endereço IP em cada pedido que enviamos. Essa solução é um proxy rotativo. Assim, para evitar o incómodo desnecessário de obter um raspador para IPs rotativos na raspagem da Web, podemos obter proxies rotativos e deixar que o nosso fornecedor se encarregue da rotação.

Porque é que é necessário utilizar proxies?

Seguem-se as razões para utilizar vários tipos de proxies.

  • Os gestores das redes sociais apreciam os proxies por lhes permitirem manter-se num único servidor. Se os utilizadores iniciarem constantemente sessão nas suas contas mudando de endereço IP, a plataforma de redes sociais ficará desconfiada e bloqueará o seu perfil.
  • Os sítios de comércio eletrónico podem apresentar dados diferentes para os utilizadores de outras localizações e para os visitantes que regressam. Além disso, o servidor fica alerta se um comprador iniciar sessão na sua conta várias vezes a partir de vários endereços IP. Por isso, temos de utilizar proxies para fazer compras em linha.
  • Precisamos de proxies para a pesquisa de marketing manual quando um especialista quer verificar os dados necessários através dos olhos de um utilizador a partir de um local. 
  • A verificação de anúncios permite aos anunciantes verificar se os seus anúncios são apresentados nos sítios Web certos e vistos pelos públicos certos. A mudança constante dos endereços IP acede a muitos sítios Web diferentes, pelo que verifica os anúncios sem bloqueios de IP.
  • Quando acedido a partir de locais específicos, o mesmo conteúdo pode ter um aspeto diferente ou pode não estar disponível. A utilização de proxies permite-nos aceder aos dados necessários, independentemente da sua localização geográfica. 
  • Podemos utilizar proxies para aceder aos dados, acelerando a velocidade de navegação, uma vez que possuem um bom sistema de cache.

Conclusão

Até agora, discutimos que um proxy actua como um retransmissor entre o cliente e a máquina do servidor. Sempre que o utilizador solicita informações, o seu computador envia esse pedido ao proxy, que por sua vez envia as informações para o computador de destino utilizando um endereço IP diferente. Assim, o seu endereço IP permanece confidencial. Além disso, é possível utilizar proxies com o módulo requests em Python e realizar várias acções consoante as necessidades. Se precisar de um IP estático com a velocidade dos proxies de datacenter e o elevado anonimato dos proxies residenciais, então os proxies estáticos são o caminho a seguir, uma vez que o endereço IP permanece inalterado a cada novo pedido. Pelo contrário, os proxies rotativos oferecem vantagens em testes e scraping.