PYTHON Y VPNS (1)

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:

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:

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

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

y obtenemos 4840 servidores aptos para nuestros intereses.

Ahora vamos a sacar los nombres de los servidores filtrados.

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.

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.