Volver al blog
La ciencia del web scraping
Mihnea-Octavian ManolacheLast updated on Mar 31, 20268 min read

¿Qué son los proxies de ISP y cómo se utilizan para el web scraping?

¿Qué son los proxies de ISP y cómo se utilizan para el web scraping?

Los proxies son un aspecto muy importante del web scraping. Existen principalmente tres tipos de proxies. Existen los proxies de centro de datos, los residenciales y los de ISP. Cada tipo tiene sus propios casos de uso. Sin embargo, hay poca o ninguna información disponible sobre qué significan y cuándo utilizarlos en el web scraping. Y son especialmente los proxies de ISP los que los autores técnicos dejan de lado. Por eso, hoy centraremos nuestra atención en este tipo de proxies. Al final del artículo de hoy, deberías tener una comprensión sólida de:

  • Qué es un proxy en general y cómo funciona
  • Cuál es la definición de un proxy ISP y cuáles son sus particularidades
  • Cómo y por qué utilizar proxies ISP para el web scraping

¿Qué es un servidor proxy?

En resumen, los proxies son un software intermedio entre los clientes y los servidores. Un proxy actúa como intermediario para las solicitudes de los clientes que buscan recursos en otros servidores. El flujo de la relación cliente-proxy-servidor es más o menos así:

  • Un cliente se conecta al servidor proxy y solicita algún servicio a un servidor de destino
  • El servidor proxy evalúa la solicitud, se conecta al servidor de destino y obtiene el servicio solicitado
  • Una vez recibido, transfiere el servicio de vuelta al cliente, sin modificaciones.

Además, los proxies también se utilizan para:

  • aumentar la seguridad
  • mejorar el rendimiento de la red
  • filtrar el tráfico de red
  • bloquear sitios web no deseados
  • eludir las restricciones geográficas en el acceso a Internet

¿Cuál es la definición de proxies ISP?

Como comentamos en la introducción, existen principalmente tres tipos de proxies. Para los dos primeros, la definición es bastante sencilla. Los proxies de centro de datos son proxies que pertenecen a centros de datos. Esto significa que sus direcciones IP están asociadas al centro de datos. Los proxies residenciales tienen una dirección IP asociada a una ubicación física. Además, estas direcciones IP están registradas a nombre de una persona u organización concreta.

Ahora bien, en lo que respecta a los proxies ISP, hay cierta confusión. En primer lugar, ISP son las siglas de «proveedor de servicios de Internet». Y, como puedes imaginar, todas las IP residenciales proceden de los ISP. Bueno, este pequeño detalle responde en parte a la pregunta. Los proxies ISP se sitúan en algún punto entre los proxies de centro de datos y los proxies residenciales.

La mayoría de las veces, verás que un proxy ISP es en realidad un proxy residencial, alojado en una máquina de un centro de datos. Por lo tanto, estos proxies heredan las ventajas de los otros dos. Y la lista de beneficios incluye, en su mayor parte (pero no se limita a):

  • Legitimidad de la IP: el uso de una dirección IP residencial reduce el riesgo de detección de bots
  • Velocidad: alojar el proxy en un servidor de centro de datos aumenta el rendimiento del servicio

¿Por qué utilizar proxies ISP para el web scraping?

El uso de proxies en el web scraping es una necesidad bastante común. Pero antes de hablar de los proxies ISP en particular, déjame explicarte por qué los proxies son importantes para el scraping. Para empezar, definamos qué es el web scraping. A grandes rasgos, el web scraping consiste en acceder a un servidor con el objetivo de extraer recursos. Y eso suele hacerse utilizando software automatizado. Además, el web scraping suele implicar el envío de muchas solicitudes al servidor de destino en un breve periodo de tiempo.

Como puedes imaginar, esto supone una gran carga para el servidor. Y por eso las plataformas web no suelen estar «encantadas» con que los scrapers accedan a sus servidores. Para impedir el acceso de software automatizado, estas plataformas suelen utilizar algún tipo de sistema de detección y prevención. Y uno de los métodos de detección es tan básico como parece: comprobar la dirección IP. Es de sentido común pensar que las direcciones IP asociadas a centros de datos son más propensas a alojar bots.

Y creo que esto responde bastante bien a la pregunta. Si tenemos en cuenta las principales ventajas comentadas anteriormente, comprenderemos mejor la respuesta. Utilizamos principalmente proxies de ISP en el web scraping para aumentar nuestra tasa de éxito y mantener al mismo tiempo un rendimiento óptimo. Pero eso no es todo. Exploremos otros escenarios:

N.º 1: Acceder a sitios web específicos de una ubicación

Seguro que te has topado con sitios web dirigidos a visitantes de ubicaciones específicas. En SEO, este concepto se conoce como contenido específico por geolocalización. Lo que ocurre es que los sitios web comprueban primero el origen de la dirección IP del cliente. Y si coincide con su patrón (digamos que es un sitio web estadounidense dirigido solo a clientes de EE. UU.), permitirá que el cliente se conecte. Si, por el contrario, el cliente es de un país extranjero, el sitio web bloqueará su acceso.

En el web scraping, este es un escenario muy común. Por lo tanto, como solución alternativa, utilizaremos proxies de ese país específico. Quizás quieras probar primero un proxy de centro de datos. Si sigues sin poder acceder, puedes probar entonces con proxies de ISP, que, de nuevo, ofrecen una mayor tasa de éxito.

N.º 2: Envío de un gran número de solicitudes

Cuando queremos acceder a muchos recursos en un servidor, podemos generar una gran carga en ese servidor. Y los servidores suelen interpretarlo como un abuso y bloquear la dirección IP que está enviando todas estas solicitudes. En el web scraping, para evitar ser bloqueados, utilizaríamos un sistema rotativo que alterna entre proxies de ISP. De esta forma, el servidor «pensará» que hay diferentes usuarios residenciales accediendo a él. Por lo tanto, las solicitudes masivas no serán bloqueadas.

¿Cómo utilizar proxies de ISP para el web scraping?

Existen principalmente dos tipos de rastreadores web:

  • Basados en clientes HTTP simples
  • Capaces de ejecutar JavaScript

El primer tipo no es tan complejo y suele ser más rápido, ya que no requiere la ejecución de JavaScript. No es diferente a enviar un comando `curl`. Sin embargo, la mayoría de los sitios web modernos dependen en gran medida de JavaScript. Un buen ejemplo es utilizar un cliente HTTP simple para extraer datos de una plataforma web construida con React o Next JS. En tales casos, probablemente obtendrás un archivo HTML que diga «por favor, habilita JavaScript». Aquí tienes un buen ejemplo de una aplicación que he creado con React:

~ » curl https://<REACT_APP>.com

...<body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div></body></html>

Por lo tanto, si quieres crear un rastreador moderno, lo más probable es que necesites utilizar una versión automatizada de un navegador web. Esto te ayudará a renderizar JavaScript y también a realizar diferentes acciones en tu objetivo.

Normalmente utilizo JavaScript y Puppeteer para mis ejemplos. Pero creo que esta vez voy a cambiar a mi primer y favorito lenguaje de programación: Python. Y la solución de referencia para los controladores web en Python es Selenium. Así que veamos cómo crear un rastreador web con Selenium y proxies ISP:

#1: Crear un nuevo proyecto

Lo primero es lo primero: creemos un nuevo directorio que albergará nuestros archivos. A continuación, abre el proyecto en tu IDE favorito (el mío es Visual Studio Code) y abre un nuevo terminal. Para abrir un nuevo terminal desde VSCode, ve a Terminal > Nuevo terminal. Crearemos un nuevo entorno virtual dentro del proyecto y lo activaremos:

~ » python3 -m venv env && source env/bin/activate

En tu proyecto, vamos a crear un nuevo archivo «scraper.py» y añadirle algo de código. La estructura básica de un scraper con Selenium, desde una perspectiva de programación funcional, es:

from selenium import webdriver

def scrape_page(url):

   driver = webdriver.Chrome()

   driver.get(url)

   return driver.page_source

Y eso es todo. En 5 líneas de código:

  • Estamos iniciando un navegador automatizado
  • Accedemos a nuestro objetivo
  • Y estamos recopilando sus recursos.

Pero recuerda que queremos usar proxies de ISP con Selenium. De tal forma que nuestro navegador no sea el más sigiloso, pero digamos que sea más difícil de detectar. Por suerte, las cosas son bastante sencillas en Python (y por eso me encanta). Así es como introducimos proxies en 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'))

Solo hemos añadido más líneas dentro de la función. La última es para llamar a la función. Si ejecutas el script ahora, probablemente podamos ver que la solicitud proviene de 75.89.101.60. Para este ejemplo, he utilizado un servidor proxy gratuito de aquí. Pero si quieres crear un scraper de verdad, te sugiero que busques fuentes más fiables. Preferiblemente, proveedores de proxies que también ofrezcan proxies de ISP.

¿Cómo comprobar el origen de una dirección IP?

Hay varias formas de comprobar si una dirección IP proviene de un proxy de ISP. Pero como hoy hablamos de DevOps, probablemente deberías familiarizarte con el uso del terminal. Hoy te voy a presentar `whois`.

En Unix y sistemas operativos similares a Unix, `whois` viene integrado. Es una utilidad de línea de comandos que permite a los usuarios buscar información sobre objetivos. Y los objetivos pueden ser tanto nombres de dominio como direcciones IP. Así que abramos una nueva ventana de terminal y probemos este comando.

En primer lugar, enviemos un comando `curl` a la API que ofrece ipify.org. De esta forma, podrás obtener tu propia dirección IP y realizar la prueba con ella. Si no estás familiarizado con `curl`, echa un vistazo a mi artículo sobre cómo usar curl.

~ » curl api.ipify.org

<IP_ADDRESS>

Ahora que tenemos una dirección IP con la que realizar la prueba, solo tienes que enviar tu comando `whois`. Yo he utilizado mi propia IP, pero no dudes en sustituir <IP_ADDRESS> por la tuya:

~ » 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

...

El resultado es más extenso, pero quería que tuvieras una visión general de lo fácil que es detectar una IP residencial. También hay API públicas que rastrean las IP de los centros de datos, como la que ofrece incolumitas.

Conclusiones

Hoy hemos explorado tanto las habilidades de DevOps como las de programación necesarias para crear un rastreador web. Para terminar, te haré una pregunta sencilla. ¿Podemos decir que los proxies de ISP no son más que proxies de centros de datos, ocultos tras una dirección IP residencial? Creo que esta no es la definición más precisa, pero sin duda describe bastante bien estos proxies.

En Web Scraping API, utilizamos tanto proxies residenciales como de centros de datos. Esto se debe a que algunos objetivos permiten el tráfico no residencial, mientras que otros no. Si quieres saber más sobre cómo puedes utilizar proxies con nuestra API, consulta nuestra documentación.

Acerca del autor
Mihnea-Octavian Manolache, Desarrollador Full Stack @ WebScrapingAPI
Mihnea-Octavian ManolacheDesarrollador Full Stack

Mihnea-Octavian Manolache es ingeniero Full Stack y DevOps en WebScrapingAPI, donde se encarga de desarrollar funciones para los productos y de mantener la infraestructura que garantiza el buen funcionamiento de la plataforma.

Empieza a crear

¿Estás listo para ampliar tu recopilación de datos?

Únete a más de 2000 empresas que utilizan WebScrapingAPI para extraer datos de la web a escala empresarial sin ningún gasto de infraestructura.