O que são proxies ISP e como usá-los para raspagem da Web
Mihnea-Octavian Manolache em 22 de fevereiro de 2023

Os proxies são um aspeto muito importante da recolha de dados da Web. E existem principalmente três tipos de proxies. Existem proxies para centros de dados, residenciais e ISP. Cada tipo tem seus próprios casos de uso. No entanto, há pouca ou nenhuma informação disponível sobre o que significam e quando devem ser utilizados na recolha de dados da Web. E são especialmente os proxies ISP que não são tratados pelos técnicos. É por isso que hoje vamos concentrar a nossa atenção neste tipo de proxies. No final do artigo de hoje, deverá ter uma sólida compreensão de:
- O que é um proxy em geral e como funciona
- Qual é a definição de um proxy ISP e quais são as suas particularidades
- Como e porquê utilizar proxies ISP para recolha de dados da Web
O que é um servidor proxy?
Em suma, os proxies são middleware entre clientes e servidores. Um proxy actua como intermediário para pedidos de clientes que procuram recursos de outros servidores. O fluxo de uma relação cliente - proxy - servidor é mais ou menos assim:
- Um cliente liga-se ao servidor proxy, solicitando um serviço a um servidor de destino
- O servidor proxy avalia o pedido, liga-se ao servidor de destino e vai buscar o serviço solicitado
- Uma vez recebido, transfere o serviço de volta para o cliente, sem alterações.
Para além disso, os proxies também são utilizados para:
- aumentar a segurança
- melhorar o desempenho da rede
- filtrar o tráfego de rede
- bloquear sítios web não desejados
- contornar as restrições geográficas de acesso à Internet
Qual é a definição de proxies ISP?
Tal como discutimos na introdução, existem principalmente três tipos de proxies. Para os dois primeiros, a definição é bastante simples. Os proxies de datacenter são proxies que pertencem a centros de dados. O que significa que os seus endereços IP estão associados ao centro de dados. Os proxies residenciais têm o endereço IP associado a uma localização física. Além disso, estes endereços IP estão registados para um indivíduo ou organização específica.
Agora, quando se trata de proxies IPS, há um pouco de confusão. Antes de mais, ISP significa Internet Service Provider (fornecedor de serviços de Internet). E, como se pode imaginar, todos os IPs residenciais são originários de ISPs. Bem, este pequeno aspeto responde parcialmente à questão. Os proxies ISP enquadram-se algures entre os proxies de centros de dados e os proxies residenciais.
Na maioria das vezes, um proxy ISP é, na verdade, um proxy residencial, alojado numa máquina de centro de dados. Por isso, estes proxies herdam vantagens dos outros dois. E a lista de vantagens inclui, na sua maioria (mas não se limita a):
- Legitimidade do IP - a utilização de um endereço IP residencial reduz o risco de deteção de bots
- Velocidade - alojar o proxy num servidor de centro de dados aumenta o desempenho do serviço
Porquê utilizar proxies ISP para a recolha de dados da Web?
A utilização de proxies na recolha de dados da Web é uma necessidade bastante comum. Mas antes de discutir os proxies ISP em particular, deixe-me dizer-lhe porque é que os proxies são importantes para a recolha de dados. Para começar, vamos definir o que é o web scraping. Em termos gerais, o web scraping consiste em aceder a um servidor com o objetivo de extrair recursos. E isso é normalmente feito com software automatizado. Além disso, o web scraping envolve normalmente o envio de muitos pedidos para o servidor alvo num curto período de tempo.
Como pode imaginar, isto coloca muita carga no servidor. É por isso que as plataformas Web não gostam muito que os "scrapers" acedam aos seus servidores. Para impedir o acesso de software automatizado, estas plataformas utilizam normalmente algum tipo de sistema de deteção e prevenção. E um dos métodos de deteção é o mais básico possível: verificar o endereço IP. É do senso comum pensar que os endereços IP associados a centros de dados têm maior probabilidade de alojar bots.
E penso que isto responde bastante bem à pergunta. Se tivermos em conta as principais vantagens discutidas anteriormente, teremos uma compreensão mais alargada da resposta. Utilizamos principalmente proxies ISP na recolha de dados da Web para aumentar a nossa taxa de sucesso, mantendo um desempenho ótimo. Mas não é só isso. Vamos explorar outros cenários:
#1: Aceder a sítios Web específicos do local
Tenho a certeza de que já se deparou com sítios Web que visam visitantes de locais específicos. Em SEO, este conceito é conhecido como conteúdo específico de geo-localização. O que acontece é que os sítios Web começam por verificar a origem do endereço IP do cliente. E se corresponder ao seu padrão (digamos que é um sítio Web dos EUA que visa apenas clientes dos EUA), permitirá que o cliente se ligue. Se, por outro lado, o cliente for de um país estrangeiro, o sítio Web bloqueia o acesso.
Na recolha de dados da Web, este é um cenário muito comum. Por isso, como solução alternativa, vamos usar proxies desse país específico. Talvez seja melhor experimentar primeiro um proxy de centro de dados. Se mesmo assim ficar bloqueado, pode tentar proxies de ISP, que, mais uma vez, oferecem uma taxa de sucesso mais elevada.
#2: Envio de um grande número de pedidos
Quando queremos aceder a muitos recursos num servidor, podemos colocar muita carga nesse servidor. Normalmente, os servidores vêem isso como um abuso e bloqueiam o endereço IP que está a enviar todos esses pedidos. No web scraping, para evitar sermos bloqueados, utilizamos um sistema rotativo que alterna entre proxies ISP. Desta forma, o servidor "pensará" que há diferentes utilizadores residenciais a aceder ao mesmo. Assim, os pedidos em massa não serão bloqueados.
Como utilizar proxies ISP para recolha de dados da Web?
Existem essencialmente dois tipos de "scrapers" da Web:
- Baseado em clientes HTTP simples
- Capaz de renderizar JavaScript
O primeiro tipo não é tão complexo e geralmente é mais rápido, pois não requer renderização de JavaScript. Não é diferente de enviar um comando `curl`. No entanto, a maioria dos sites modernos depende muito do JavaScript. Um bom exemplo é usar um cliente HTTP simples para raspar uma plataforma web construída com React ou Next JS. Em tais cenários, você provavelmente receberá de volta um arquivo HTML que diz 'please enable JavaScript`. Aqui está um exemplo sólido de uma aplicação que eu construí com React:
~ » curl https://<REACT_APP>.com
...<body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div></body></html>
Assim, se quiser construir um raspador moderno, terá provavelmente de utilizar uma versão automatizada de um navegador Web. Isto ajudá-lo-á a processar o JavaScript e também a executar diferentes acções no seu alvo.
Normalmente uso JavaScript e Puppeteer para os meus exemplos. Mas acho que desta vez vou mudar para a minha primeira e favorita linguagem de programação: Python. E a solução ideal para webdrivers em Python é o Selenium. Então vamos ver como construir um web scraper com selenium e proxies ISP:
#1: Criar um novo projeto
Em primeiro lugar, vamos criar um novo diretório que irá conter os nossos ficheiros. Em seguida, abra o projeto no seu IDE preferido (o meu é o Visual Studio Code) e abra um novo terminal. Para abrir um novo terminal a partir do VSCode, vá para Terminal > Novo terminal. Criaremos um novo ambiente virtual dentro do projeto e o ativaremos:
~ " python3 -m venv env && source env/bin/activate
No seu projeto, vamos criar um novo ficheiro 'scraper.py' e adicionar algum código ao mesmo. A estrutura básica de um scraper com Selenium, de uma perspetiva de programação funcional, é
from selenium import webdriver
def scrape_page(url):
driver = webdriver.Chrome()
driver.get(url)
return driver.page_source
E é isso. Em 5 linhas de código:
- Estamos a abrir um navegador automático
- Estamos a aceder ao nosso objetivo
- E estamos a recolher os seus recursos.
Mas lembre-se que queremos usar proxies ISP com selenium. De forma que nosso navegador não seja o mais furtivo, mas digamos que seja mais indetetável. Felizmente, as coisas são bem simples em Python (e é por isso que eu adoro). Aqui está como introduzimos proxies no Selenium:
from selenium import webdriver
def scrape_page(url, proxy):
options = webdriver.ChromeOptions()
options.add_argument('--proxy-server=%s' % proxy)
driver = webdriver.Chrome(options=options)
driver.get(url)
return driver.page_source
print(scrape_page('http://httpbin.org/ip', '75.89.101.60:80'))
Apenas acrescentámos mais linhas no interior da função. A última é para chamar a função. Se executarmos o script agora, provavelmente poderemos ver que o pedido tem origem em 75.89.101.60. Para o propósito deste exemplo, usei um servidor proxy gratuito daqui. Mas se quiser construir um verdadeiro scraper, sugiro que procure fontes mais fiáveis. De preferência, fornecedores de proxy que também ofereçam proxies ISP.
Como verificar a origem de um endereço IP?
Existem algumas maneiras de verificar se um endereço IP é originário de um proxy ISP. Mas como estamos falando de DevOps hoje, você provavelmente deve se sentir confortável com o uso do terminal. Hoje eu vou apresentar o `whois`.
No Unix e em sistemas operativos do tipo Unix, o `whois` está incorporado. É um utilitário de linha de comando que permite aos utilizadores procurar informações sobre alvos. E os alvos podem ser tanto nomes de domínio quanto endereços IP. Então vamos abrir uma nova janela de terminal e testar este comando.
Antes de mais, vamos enviar um comando `curl` para a API oferecida pelo ipify.org. Dessa forma, você pode obter seu próprio endereço IP e realizar o teste usando-o. Se não estiver familiarizado com o `curl`, basta ler o meu artigo sobre como usar o curl.
~ » curl api.ipify.org
<IP_ADDRESS>
Now that we have an IP address to test on, just send your `whois` command. I’ve used my own IP, but feel free to replace <IP_ADDRESS> with yours:
~ » whois <IP_ADDRESS>
...
inetnum: 82.78.XX.0 - 82.78.XX.XX
netname: RO-RESIDENTIAL
descr: RCS & RDS Residential CGN
descr: City: Bucuresti
remarks: INFRA-AW
country: RO
...
O resultado é maior, mas queria que tivesse uma visão geral da facilidade com que um IP residencial é detectado. Existem também APIs públicas que rastreiam IPs de centros de dados, como a oferecida pela incolumitas.
Conclusões
Hoje, explorámos as competências DevOps e de codificação da construção de um raspador Web. Para terminar, vou fazer uma pergunta simples. Podemos dizer que os proxies de ISP não são nada mais do que proxies de datacenter, escondidos atrás de um endereço IP residencial? Penso que esta não é a definição mais exacta, mas descreve muito bem estes proxies.
Na Web Scraping API, usamos proxies residenciais e de datacenter. Isto deve-se ao facto de alguns alvos permitirem tráfego não residencial, enquanto outros não o permitem. Se quiser saber mais sobre como pode utilizar proxies com a nossa API, consulte a nossa documentação.
Notícias e actualizações
Mantenha-se atualizado com os mais recentes guias e notícias sobre raspagem da Web, subscrevendo a nossa newsletter.
We care about the protection of your data. Read our <l>Privacy Policy</l>.Privacy Policy.

Artigos relacionados

Explore as complexidades da extração de dados de produtos da Amazon com nosso guia detalhado. De práticas recomendadas e ferramentas como a API Amazon Scraper a considerações legais, saiba como enfrentar desafios, contornar CAPTCHAs e extrair insights valiosos com eficiência.


Comece a utilizar o WebScrapingAPI, a derradeira solução de raspagem da Web! Recolha dados em tempo real, contorne sistemas anti-bot e beneficie de apoio profissional.


Saiba qual é o melhor browser para contornar os sistemas de deteção Cloudflare enquanto faz web scraping com o Selenium.
