Al igual que con los rastreadores web, puedes crear, gestionar y utilizar un rotador de proxies por tu cuenta. Para ello, necesitarás conocimientos de programación (Python es ideal, ya que cuenta con muchos marcos de trabajo valiosos y una comunidad activa), algunos conocimientos generales de informática, una lista de proxies y mucha paciencia.
La forma más básica sería un script que reciba una variable con tu lista de proxies y asigne direcciones IP aleatorias para cada solicitud. Por ejemplo, podrías usar la función random.sample() para elegir una dirección IP de forma totalmente aleatoria cada vez, pero eso significa que el mismo proxy podría utilizarse varias veces consecutivas. En ese caso, podrías configurarlo para que, una vez utilizada una IP, se elimine de la lista de proxies, de modo que no se vuelva a utilizar hasta que se hayan utilizado también todas las demás direcciones.
Aquí tienes un breve ejemplo en 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])
El código solo recorre el conjunto de proxies una vez y lo hace para una única URL, pero debería ilustrar bien la lógica. Por cierto, saqué las IP de https://free-proxy-list.net/. Como era de esperar, no funcionaron.
De hecho, ese es precisamente el problema de crear tu propio rotador. Seguirás necesitando buenas direcciones IP dedicadas o, al menos, compartidas. Una vez que llegues al punto de comprar proxies, más vale que busques una solución que también rote las direcciones IP por ti. De esta forma, no pierdes tiempo extra creándola ni gastas dinero extra subcontratándola. Además, obtienes más ventajas como:
- Una opción rápida para rotar solo las IP de una región específica;
- La posibilidad de elegir qué tipos de proxies rotar (de centro de datos o residenciales; fijos o móviles; etc.)
- Configuración de direcciones IP estáticas para cuando realices scraping tras una pantalla de inicio de sesión;
- Reintentos automáticos con IP nuevas cuando falla una solicitud.
Tomemos WebScrapingAPI como ejemplo de lo fácil que es extraer datos de una página con proxies rotativos. El siguiente código procede directamente de la documentación, donde hay muchos otros fragmentos similares:
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 es todo el código que necesitas para extraer datos de una URL utilizando proxies de centro de datos de EE. UU. Ten en cuenta que no hay ninguna lista de IPs que rotar ni siquiera un parámetro para ello. Esto se debe a que la API cambia de proxy de forma predeterminada. Si quieres utilizar la misma IP para varias sesiones, solo tienes que añadir un nuevo 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)
Solo tienes que utilizar el mismo número entero para el parámetro «session» a fin de usar la misma IP estática para cualquier URL.