paint-brush
Cómo crear un proxy residencial personal para eludir las restricciones geográficaspor@abhilashchowdhary
13,029 lecturas
13,029 lecturas

Cómo crear un proxy residencial personal para eludir las restricciones geográficas

por Abhilash Chowdhary5m2023/01/28
Read on Terminal Reader

Demasiado Largo; Para Leer

Los proxies residenciales tienen muchas aplicaciones útiles, como el web scraping, la investigación en línea, eludir las restricciones geográficas y la navegación anónima. Pero pueden ser costosos, y algunos cobran más de $ 100 por mes para acceder a más de 10 GB de datos. Descubrí una solución al crear mi propio proxy residencial en el escritorio de mi casa en los EE. UU. mediante una VPN P2P.
featured image - Cómo crear un proxy residencial personal para eludir las restricciones geográficas
Abhilash Chowdhary HackerNoon profile picture

Problema

Los proxies residenciales tienen muchas aplicaciones útiles, como el web scraping, la investigación en línea, eludir las restricciones geográficas y la navegación anónima. Pero pueden ser costosos, y algunos cobran más de $ 100 por mes para acceder a más de 10 GB de datos.


El año pasado, cuando viajaba a la India y otras partes del sudeste asiático, quería una forma confiable que me permitiera acceder al contenido de varios servicios de suscripción como Netflix y Amazon Prime sin restricciones geográficas. Quería hacer esto mientras


  1. No tener que pagar más de $100 por mes por el servicio VPN/proxy residencial. Además, Netflix ocasionalmente me bloqueaba cuando usaba VPN.
  2. No pagar una cantidad adicional por una IP estática para la conexión a Internet de mi hogar en los EE. UU.

Solución

Descubrí una solución al crear mi propio proxy residencial en el escritorio de mi casa en los EE. UU.


Al configurar una VPN punto a punto (P2P) y conectar mi computadora portátil y mi computadora de escritorio, pude enrutar el tráfico de mi computadora portátil en la India a mi computadora de escritorio en los EE. UU., que luego reenvió estas solicitudes a www/public Internet antes de devolver la respuesta de mi red doméstica.


Todo esto sin tener que pasar por la molestia de establecer la configuración de reenvío de conexión en el enrutador de mi casa.


¿Qué es una VPN P2P?

Peer-to-peer (P2P) es un modelo de arquitectura para VPN que se utiliza para crear un entorno compartido seguro para los usuarios. Una VPN basada en P2P se diferencia del modelo hub-and-spoke estándar al no enrutar todo el tráfico a través de un servidor central, lo que evita la congestión. Esto mejora la seguridad y permite un escalado más eficiente al agregar nodos sin sobrecargar la red. Además, las conexiones en una VPN P2P utilizan la ruta más rápida, lo que reduce las demoras.


Existen múltiples soluciones VPN P2P de código abierto, freemium y pagas disponibles. Tinc es una de las VPN populares de código abierto.


¿Cómo se ve la configuración de la red?

La pila de red consta de los siguientes componentes:


  1. Escritorio en casa (EE. UU.)

  2. Mi computadora portátil (fuera de EE. UU.)

  3. P2P vpn daemon ejecutándose en ambas máquinas a través de la misma cuenta

  4. Servidor proxy HTTP ejecutándose en el escritorio


El siguiente diagrama muestra el flujo de información para recuperar una página web pública desde mi computadora portátil fuera de los EE. UU.

Flujo de información cuando se recupera una página web pública desde la computadora portátil fuera de los EE. UU. 1. es la solicitud inicial y 4. es la respuesta final


Quería una VPN P2P que sea fácil de configurar y requiera una configuración casi nula. Terminé usando tailscale. Los pasos a continuación son en su mayoría genéricos para cualquier VPN, pero puede encontrar esto más adecuado si usa tailscale.

Pasos realizados para configurar esta red

  1. Configuración del cliente vpn en computadoras de escritorio y portátiles :

    1. Descargue e instale el cliente VPN en computadoras de escritorio y portátiles.

    2. Si usa una VPN de configuración cero, registre su cuenta con vpn e inicie sesión en ambas máquinas con la misma cuenta


  2. Configuración de un servidor proxy http de reenvío en el escritorio :

    Puede utilizar cualquier servidor proxy de código abierto. Usé https://github.com/abhinavsingh/proxy.py porque era fácil de configurar. Lo ejecuté dentro de un contenedor docker. La imagen de Docker para este proxy está disponible en Docker Hub. Para ejecutarlo dentro de un contenedor acoplable, puede ejecutar este comando

     docker run -it -p 8899:8899 --rm abhinavsingh/proxy.py:latest


    En el comando anterior, el servidor proxy está escuchando en el puerto 8899. Esto será útil cuando especifiquemos la URL del servidor proxy en las aplicaciones dentro de la computadora portátil.


  3. Identifique la dirección IP del escritorio en la red VPN : después de instalar e iniciar sesión en su cuenta VPN, averigüemos la dirección IP del escritorio que utilizará la computadora portátil para reenviar sus solicitudes http.


    Para ello, puede enumerar las direcciones IP de todas las interfaces de red en el escritorio. Luego identifique la dirección IP para una interfaz cuyo nombre comience con el nombre de su cliente VPN, para mi caso, comienza con "tailscale".


    Usé el comando ip en la terminal de mi máquina Linux para identificar la dirección IP

     $ ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever …. 4: tailscale0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1280 qdisc fq_codel state UNKNOWN group default qlen 500 link/none inet 100.113.xxx.xx/32 scope global tailscale0 valid_lft forever preferred_lft forever …

    Aquí pude encontrar la dirección IP del escritorio dentro de mi red tailscale local en la interfaz de red tailscale0 : 100.113.xxx.xx


  4. Usando la dirección del servidor proxy en la computadora portátil para acceder a la web pública:

    Ahora que conocemos la dirección IP del escritorio (llamémoslo $ip_desktop ) y el número de puerto para el servidor proxy http en el escritorio (llamémoslo $proxy_port ), podemos reenviar todo el tráfico de red desde la computadora portátil a través de la dirección proxy http://$ip_desktop:$proxy_port .


    Por ejemplo, puede enviar una solicitud de curl a example.com desde una computadora portátil a través de una computadora de escritorio como

     curl --proxy "http://$ip_desktop:$proxy_port" "https://example.com"


Uso del servidor proxy

Las instrucciones anteriores demuestran cómo crear un servidor proxy residencial gratuito mientras viaja usando una computadora de repuesto en casa. Ahora puede usar esta dirección proxy en su computadora portátil personal de cualquiera de las siguientes maneras:


  1. Dentro del código de su aplicación dentro de las bibliotecas de cliente http de su marco/lenguaje web (solicitudes en python, búsqueda en javascript, etc.)
  2. Para todas las solicitudes web desde tu portátil. De esta forma, puede reenviar cualquier tipo de solicitud http a través del servidor proxy del escritorio. En ubuntu puedes hacer esto siguiendo estos pasos https://help.ubuntu.com/stable/ubuntu-help/net-proxy.html.en
  3. Solo en tu navegador. Aunque Chrome y Firefox no proporcionan una forma nativa de configurar la configuración de proxy http exclusiva para ellos, puede hacerlo a través de extensiones como https://github.com/foxyproxy/firefox-extension


Elegí 2. y reenvié todas las solicitudes http desde mi computadora portátil a la computadora de escritorio. Usé esta configuración durante más de dos meses sin ningún tiempo de inactividad notable.


Conclusión

En este artículo, analizamos cómo configurar un proxy residencial personal usando


  1. VPN P2P
  2. Dos o más computadoras personales


Dependiendo de la elección de la VPN, la configuración completa se puede realizar sin ningún costo adicional, suponiendo que ya tenga varias computadoras. Con este proxy residencial, puede acceder a Internet de forma anónima sin restricciones geográficas debido a su ubicación física actual.