Cómo utilizar un proxy en Python

Cómo hacerlo, Proxies, Python, Nov-15-20225 minutos de lectura

A menudo nos encontramos con el término "proxy" cuando trabajamos en el campo de la informática. Al conectarse a Internet, cada ordenador obtiene una dirección única de Protocolo de Internet (IP) que identifica al ordenador y su ubicación geográfica. El ordenador envía una solicitud cada vez que necesita información de Internet. La solicitud es

Índice

A menudo nos encontramos con el término "proxy" cuando trabajamos en el campo de la informática. Al conectarse a Internet, cada ordenador obtiene una dirección única de Protocolo de Internet (IP) que identifica al ordenador y su ubicación geográfica. El ordenador envía una solicitud cada vez que necesita cualquier información de Internet. La solicitud se envía a un ordenador de destino que comprueba el tipo de información solicitada. El ordenador de destino devuelve la información si está autorizado a dársela a nuestra dirección IP. A veces, el ordenador quiere obtener la información de Internet sin ser identificado. Esa información suele estar bloqueada, pero podemos obtenerla utilizando un proxy que actúe como intermediario entre el cliente y el equipo servidor.

Los clientes suelen utilizar el servidor proxy para navegar por páginas web y solicitar recursos de forma anónima, ya que actúa como campo de identificación entre el ordenador cliente e Internet. 

Los servidores proxy se han hecho muy populares con la creciente preocupación por la seguridad en línea y el robo de datos. Aquí surge la pregunta ¿cómo está conectado el servidor proxy a la seguridad de nuestro sistema? Podemos decir que un servidor proxy añade un nivel de seguridad adicional entre nuestro servidor y el mundo exterior. Esta seguridad adicional ayuda a salvar nuestro sistema de una brecha. 

¿Cómo utilizar un proxy en Python?

Para utilizar proxies con las peticiones de Python, debe seguir los pasos que se indican a continuación.

Solicitudes de importación

Importa el paquete requests que es una simple librería HTTP. Puede enviar peticiones fácilmente a través de este paquete sin añadir manualmente cadenas de consulta a sus URLs. Puedes importar requests usando el siguiente comando.

solicitudes de importación

Crear un diccionario

Necesita crear un diccionario de proxies que defina las conexiones HTTP y HTTPS. Puedes dar a la variable del diccionario cualquier nombre como "proxies" que asigne un protocolo a la URL del proxy. Además, tienes que hacer que la variable URL se establezca en el sitio web del que tienes que hacer el scrape.

proxies = {
  "http":'http://203.190.46.62:8080',
  "https":'https://111.68.26.237:8080'
}
url = 'https://httpbin.org/ip'

Aquí el diccionario define la URL del proxy para dos protocolos distintos, es decir, HTTP y HTTPS.

Crear una variable de respuesta

Tienes que crear una variable de respuesta que utilice cualquiera de los métodos de solicitud. Este método toma dos argumentos:

  • La URL que ha creado
  • El diccionario que definió
response = requests.get(url,proxies = proxies)
print(respuesta.json())

La salida es como:

Métodos de solicitud

Existen varios métodos de solicitud:

  • GET - Recupera información de un servidor determinado utilizando una URL dada. 
  • POST - Este método solicita que el servidor web dado acepte los datos adjuntos en el cuerpo del mensaje de solicitud para almacenarlos.
  • PUT - Solicita que los datos adjuntos se almacenen en la URL indicada.
  • DELETE - Este método envía una petición DELETE a la URL dada.
  • PATCH - Este método de solicitud está soportado por el protocolo HTTP y realiza cambios parciales en un recurso existente. 
  • HEAD - Envía una petición HEAD a la URL dada cuando no necesita el contenido del archivo y sólo quiere las cabeceras HTTP o el status_code.

Puede utilizar la siguiente sintaxis de los métodos de solicitud cuando se especifica la URL. Aquí, nuestra URL es la misma que utilizamos en el código anterior, es decir, https://httpbin.org/ip.

response = requests.get(url)
response = requests.post(url, data={"a": 1, "b": 2})
response = requests.put(url)
response = requests.delete(url)
response = requests.patch(url)
response = requests.head(url)
response = requests.options(url)

Sesiones Proxy

Si desea extraer los datos de los sitios web que utilizan sesiones, puede seguir los pasos que se indican a continuación.

Paso#01

Importe la biblioteca de solicitudes.

solicitudes de importación

Paso#02

Cree un objeto de sesión creando una variable de sesión y estableciéndola en el método requests Session(). 

session = requests.Session()

session.proxies = {
   'http': 'http://10.10.10.10:8000',
   'https': 'http://10.10.10.10:8000',
}

url = 'http://mywebsite.com/example'

Paso#03

Envía los proxies de sesión a través del método requests y pasa la URL como argumento.

response = session.get(url)

Principales tipos de proxies

Hablemos de los dos tipos esenciales de proxies, es decir;

Proxies estáticosProxies giratorios

Proxies estáticos

Podemos definir los proxies estáticos como los protocolos de Internet del centro de datos asignados a través de un contrato de proveedor de servicios de Internet (ISP). Están diseñados para permanecer conectados a un servidor proxy durante un tiempo determinado. El nombre "estático" implica que nos permite operar como un usuario residencial con la misma IP durante el tiempo que sea necesario. 

En resumen, con el uso de proxies estáticos, obtenemos la velocidad de los proxies de centros de datos y el alto anonimato de los proxies residenciales. Además, un proxy estático nos permite evitar la rotación de direcciones IP, lo que simplifica notablemente su uso.

Los servicios de IP estática no se crean utilizando máquinas virtuales, a diferencia de los proxies de centros de datos normales. Estos proxies, también conocidos como direcciones IP pegajosas, parecen auténticos consumidores para casi todos los sitios web. 

Rotación de proxies

Podemos definir la rotación de proxy como una función que cambia nuestra dirección IP con cada nueva solicitud que enviamos.

Cuando visitamos un sitio web, enviamos una solicitud que muestra al servidor de destino muchos datos, incluida nuestra dirección IP. Por ejemplo, cuando recopilamos datos utilizando un scraper (para generar clientes potenciales), enviamos muchas peticiones de este tipo. Entonces, el servidor de destino sospecha y lo bloquea cuando la mayoría de las peticiones proceden de la misma IP. 

Por lo tanto, debe haber una solución para cambiar nuestra dirección IP con cada solicitud que enviamos. Esa solución es un proxy rotatorio. Así que, para evitar la innecesaria molestia de conseguir un scraper para rotar IPs en el web scraping, podemos conseguir proxies rotatorios y dejar que nuestro proveedor se encargue de la rotación.

¿Por qué es necesario utilizar proxies?

A continuación se exponen las razones para utilizar distintos tipos de proxies.

  • Los gestores de redes sociales aprecian los proxies porque les permiten ceñirse a un único servidor. Si los usuarios acceden constantemente a sus cuentas cambiando de dirección IP, la plataforma de la red social sospechará y bloqueará su perfil.
  • Los sitios de comercio electrónico pueden mostrar datos diferentes para los usuarios de otras ubicaciones y los visitantes que regresan. Además, el servidor se pone en alerta si un comprador entra en su cuenta varias veces desde varias direcciones IP. Por lo tanto, hay que utilizar proxies para las compras en línea.
  • Necesitamos proxies para la investigación de mercado manual cuando un especialista quiere comprobar los datos requeridos a través de los ojos de un usuario desde un solo lugar. 
  • La verificación de anuncios permite a los anunciantes comprobar si sus anuncios se muestran en los sitios web correctos y son vistos por el público adecuado. El cambio constante de direcciones IP accede a muchos sitios web diferentes y verifica así los anuncios sin bloqueos de IP.
  • Cuando se accede desde lugares específicos, el mismo contenido puede tener un aspecto diferente o no estar disponible. El uso de los proxies nos permite acceder a los datos necesarios independientemente de su geolocalización. 
  • Podemos utilizar proxies para acceder a los datos, acelerando la velocidad de navegación ya que disponen de un buen sistema de caché.

Conclusión

Hasta ahora, hemos visto que un proxy actúa como un relé entre el cliente y el servidor. Cada vez que usted solicita información, su ordenador envía esta solicitud al proxy, que a su vez envía la información al ordenador de destino utilizando una dirección IP diferente. De este modo, su dirección IP permanece confidencial. Además, puedes usar proxies con el módulo requests en Python y realizar varias acciones dependiendo de tu necesidad. Si necesitas una IP estática con la velocidad de los proxies de centros de datos y el alto anonimato de los proxies residenciales, entonces los proxies estáticos son el camino a seguir ya que la dirección IP permanece sin cambios con cada nueva petición. Por el contrario, los proxies rotatorios proporcionan ventajas en pruebas y scraping.