Tal como os web scrapers, pode criar, gerir e utilizar um rotador de proxies por conta própria. Para isso, vai precisar de conhecimentos de programação (Python é ideal, pois possui muitas estruturas valiosas e uma comunidade ativa), alguns conhecimentos gerais de ciências da computação, uma lista de proxies e muita paciência.
A forma mais básica seria um script que recebe uma variável contendo a sua lista de proxies e atribui IPs aleatórios para cada pedido. Por exemplo, poderia usar a função random.sample() para escolher um IP de forma totalmente aleatória de cada vez, mas isso significa que o mesmo proxy pode ser usado várias vezes consecutivas. Nesse caso, pode configurar o sistema para que, depois de um IP ser utilizado, este seja retirado da lista de proxies, de modo a não voltar a ser utilizado até que todos os outros endereços também tenham sido utilizados.
Aqui está um pequeno exemplo em Python:
import random
import requests
proxy_pool = ["191.5.0.79:53281", "202.166.202.29:58794", "51.210.106.217:443", "5103.240.161.109:6666"]
URL = 'https://httpbin.org/get'
while len(proxy_pool) >0:
random_proxy_list = random.sample(proxy_pool, k=1)
random_proxy = {
'http': 'http://' + random_proxy_list[0],
}
response = requests.get(URL, proxies=random_proxy)
print(response.json())
proxy_pool.remove(random_proxy_list[0])
O código apenas percorre o conjunto de proxies uma vez e faz-o para um único URL, mas deve ilustrar bem a lógica. A propósito, obtive os IPs em https://free-proxy-list.net/. Como era de esperar, não funcionaram.
Na verdade, esse é o problema de criar o seu próprio rotador. Continuará a precisar de bons IPs dedicados ou, pelo menos, partilhados. Uma vez que chegue ao ponto de comprar proxies, mais vale procurar uma solução que também rode os IPs por si. Desta forma, não gasta tempo extra a criá-la nem dinheiro extra a subcontratá-la. Além disso, obtém mais vantagens, como:
- Uma opção rápida para rodar apenas IPs de uma região específica;
- A possibilidade de escolher que tipos de proxies rodar (de centro de dados ou residenciais; fixos ou móveis; etc.)
- Configurar IPs estáticos para quando estiver a fazer scraping atrás de um ecrã de login;
- Repetir tentativas automaticamente com IPs novos quando uma solicitação falhar.
Vamos usar a WebScrapingAPI como exemplo de como é fácil fazer scraping de uma página com proxies rotativos. O código a seguir foi retirado diretamente da documentação, onde há muitos outros trechos semelhantes:
import requests
url = "https://api.webscrapingapi.com/v1"
params = {
"api_key":"XXXXXX",
"url":"https://httpbin.org/get",
"proxy_type":"datacenter",
"country":"us"
}
response = requests.request("GET", url, params=params)
print(response.text)
Este é todo o código de que precisa para fazer scraping de um URL enquanto utiliza proxies de datacenter dos EUA. Note que não há nenhuma lista de IPs para alternar nem mesmo um parâmetro para isso. Isso porque a API alterna os proxies por padrão. Se quiser usar o mesmo IP para várias sessões, basta adicionar um novo parâmetro:
import requests
url = "https://api.webscrapingapi.com/v1"
params = {
"api_key":"XXXXXX",
"url":"https://httpbin.org/get",
"proxy_type":"datacenter",
"country":"us",
"session":"100"
}
response = requests.request("GET", url, params=params)
print(response.text)
Basta usar o mesmo número inteiro para o parâmetro “session” para utilizar o mesmo IP estático para qualquer URL.