Suplantación de la dirección IP cuando se extrae web usando Python

En este artículo, vamos a desechar un sitio web usando Requests mediante la rotación de proxies en Python.

Módulos Requeridos

  • El módulo de requests le permite enviar requests HTTP y devuelve una respuesta con todos los datos, como el estado, el contenido de la página, etc.

Sintaxis: 

requests.get(url, parámetro) 

  • JSON JavaScript Object Notation es un formato para estructurar datos. Se utiliza principalmente para almacenar y transferir datos entre el navegador y el servidor. Python también es compatible con JSON con un paquete integrado llamado json. Este paquete proporciona todas las herramientas necesarias para trabajar con objetos JSON, incluido el análisis, la serialización, la deserialización y muchas más.

Acercarse

  • Cree manualmente un conjunto de proxies http si no tiene el uso de rapidapi . (Aquí se usa la función create_proxy() para generar un conjunto de proxies http usando rapidapi)
  • Iterar el conjunto de proxies y enviar una solicitud GET mediante requestes.get(url, proxies=proxies) al sitio web junto con los proxies como parámetros.

Sintaxis:

requests.get(url, proxies=proxies)

  • Si el proxy funciona perfectamente, debería devolver un objeto de la URL.

Además de trabajar con el código, hay algunas configuraciones más que deben realizarse, y a continuación se detallan los detalles de estas configuraciones.

Usando Rapidapi para obtener un conjunto de proxies: 

  • En primer lugar, debe comprar una suscripción de esta API de rapidapi y luego ir al panel y seleccionar Python y copiar api_key.
  • Inicialice los encabezados con la clave API y el host rapidapi.

Sintaxis:

encabezados = {

       ‘x-rapidapi-key’: “paste_api_key_here”,

       ‘x-rapidapi-host’: “proxy-orbit1.p.rapidapi.com”

       }

  • Envíe una solicitud GET a la API junto con los encabezados,

Sintaxis:

respuesta = requests.solicitud («OBTENER», url, encabezados = encabezados)

  • Esto devolverá un JSON, analizando el texto usando json.loads(), podemos encontrar la dirección del servidor proxy en la clave «curl».

Sintaxis:

respuesta = json.loads(respuesta.texto)

proxy = respuesta[‘curl’]

Envío de proxy en requests.get() como parámetro:

Enviando una solicitud GET usando requestes.get() junto con un proxy a esta URL que devolverá la dirección del servidor proxy de la sesión actual.

Sintaxis:

 # Nota: al abrir https://ipecho.net/plain en el navegador, se mostrará la dirección IP actual de la sesión.

 servidores proxy = ‘http://78.47.16.54:80’

 página = requests.get(‘https://ipecho.net/plain’, proxies={“http”: proxy, “https”: proxy})

 imprimir (página.texto)

Programa:

Python3

import requests
import json
  
  
# Gets proxies from rapidapi to create
# a set of proxies.
# Use this function only if you have rapidapi key.
def create_proxy():
    url = "https://proxy-orbit1.p.rapidapi.com/v1/"
  
    # Initialise the headers and paste the API key
    # of proxy-orbit1 from rapidapi.
    headers = {
        'x-rapidapi-key': "paste_api_key_here",
        'x-rapidapi-host': "proxy-orbit1.p.rapidapi.com"
    }
  
    # Sends a GET request to the above url along with api
    # keys which returns an object containing data in json
    # format which is then parsed using json.loads.
    response = requests.request("GET", url, headers=headers)
    response = json.loads(response.text)
  
    # The proxy server ip address is present in 'curl' key.
    proxy = response['curl']
    return proxy
  
  
# Main Function
if __name__ == "__main__":
  
    # Create an empty set and call the create_proxy()
    # function to generate a set of proxies from rapidapi.
    # Orbit proxy Rapid api key is required.
    proxies = set()
    print("Creating Proxy List")
    for __ in range(10):
        proxies.add(create_proxy())
  
    # If you do not have rapidapi then create a set of
    # proxies manually.
    # proxies = {'http://78.47.16.54:80',
    #      'http://203.75.190.21:80', 'http://77.72.3.163:80'}
  
    # Iterate the proxies and check if it is working.
    for proxy in proxies:
        print("\nChecking proxy:", proxy)
        try:
  
            # https://ipecho.net/plain returns the ip address
            # of the current session if a GET request is sent.
            page = requests.get('https://ipecho.net/plain',
                                proxies={"http": proxy, "https": proxy})
            print("Status OK, Output:", page.text)
        except OSError as e:
  
            # Proxy returns Connection error
            print(e)

Salida :

Publicación traducida automáticamente

Artículo escrito por anilabhadatta y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *