Python y VPNs (1)

Etiquetas: , ,

Usando VPNs y Python para crear una pool.

Hoy ya mucha gente usa VPN, ya sea para uso personal como profesional.

Una de las ventajas que nos ofrecen las VPNs es en el uso de scrapping, ya que muchas peticiones desde una misma IP suelen flagear dicha IP, truncando el proyecto que tengamos entre manos.

En su día me hice una cuenta con NordVPN, esa empresa cuenta con servidores por todo el mundo, pero tiene un problema, si queremos conectarnos a los servidores de España, por ejemplo, el propio programa elige según cercanía y conectividad, la más apropiada, de esta forma no podemos ir rotando por todos los españoles.

Por suerte, el propio cliente de NordVPN permite conectarse de forma arbitaria (sabiendo el nombre de dicho servidor), por lo que vamos a crear una lista de servidores de NordVPN y simplemente rotar por ellos de forma aleatoria.

Fácil, ¿verdad?

Consiguiendo la lista de servidores

Por suerte, la propia API de NordVPN nos facilita un json con la totalidad de sus servidores, lo que nos va a facilitar mucho el trabajo.

Si hacemos un CURL de https://nordvpn.com/api/server, recibimos el siguiente output:

sh3llcon vpn python

Las keys que nos interesan son las de categories → name y la de domain.

Categories → name

Esta key nos indica el tipo de VPN que es, habiendo diferentes:

  • Standard VPN servers
  • Dedicated IP
  • Double VPN
  • Obfuscated servers
  • P2P

Sólo nos interesan las “Standard VPN servers” ya que las otras son dedicadas para ciertos usuarios y de doble uso.

Domain

¿Recordáis que hemos dicho que se puede conectar de forma arbitraria?

Pues el subdomain nos indica dicho nombre de servidor, por lo que si tenemos th19.nordvpn.com, “th19” será el nombre del servidor, al que nos podemos conectar con:

          $ nordvpn c th19

Tratando el JSON

Primero de todo vamos a bajar el JSON para hacer las prácticas en local, una vez terminemos la práctica, simplemente sustituiremos la copia local por la página web.

          f$ curl https://nordvpn.com/api/server > dump

A continuación, vamos a ver el número de servidores que hay

sh3llcon vpn python

Lo que nos da 5469 servidores pero, como ya hemos dicho, solo nos interesan los servidores “Standard”, por lo que vamos a filtrarlos

sh3llcon vpn python

y obtenemos 4840 servidores aptos para nuestros intereses.

Ahora vamos a sacar los nombres de los servidores filtrados.

sh3llcon vpn python

Con esta función, extraemos una lista con los nombres de los servidores que queremos, ya casi estamos, ahora solo queda implementarlo con el programa.

Es simple, creamos una función que invoque el comando del programa con el servidor elegido aleatoriamente por nuestro script, se connecte y a continuación haga lo que tenga que hacer.

Es algo sencillo, pero esta simple rotación de IP’s va a ahorrarnos muchos dolores de cabeza, también podríamos asignar un UA aleatorio para darle más peso.

sh3llcon vpn python

En futuras entregas seguiremos sobre la base de la rotación de VPNs y lo aplicaremos a, por ejemplo, el scrapeo de una web de forma que no seamos fácilmente baneados.

Y como sabemos que es difícil teclear código leyendo desde una imagen, sin contar con que nos hacemos mayores y con la artrosis y esas cosas cada vez nos cuesta más teclear, hemos pensado que igual preferís tener el código a mano. Podéis descargarlo pulsando en este enlace : █►código python◄█

La imagen de cabecera se ha compuesto con una foto cortesía de Pixabay

Firmado: @b0n3sh

Sh3llCON no se hace responsable de las opiniones vertidas por sus colaboradores ni por las actuaciones que, fruto del conocimiento transmitido, puedan realizar terceras personas.