Rastreador de Python: tecnología de ocultación de IP y rastreo de proxy

Prefacio

Al desarrollar y ejecutar programas de rastreo, a menudo se encuentra con el mecanismo anti-rastreador del sitio web de destino. El más común es el bloqueo de IP. En este caso, es necesario utilizar tecnología de ocultación de IP y rastreo de proxy.

 1. Tecnología de ocultación de IP

La tecnología de ocultación de IP consiste en disfrazar la dirección IP para que el sitio web de destino no reconozca la dirección IP solicitada por el rastreador como rastreador. A través de la tecnología de ocultación de IP, puede evitar de manera efectiva las restricciones del sitio web de destino sobre direcciones IP específicas.

1. Usuario-Agente aleatorio

User-Agent se refiere a la información de cadena enviada al servidor cuando el programa cliente lo solicita y, por lo general, incluye información como la versión actual del software del cliente, el sistema operativo, el entorno de idioma y el proveedor de servicios. Al desarrollar un rastreador, si el agente de usuario utilizado es diferente del navegador, el servidor lo reconocerá fácilmente como un rastreador y lo restringirá.

Por lo tanto, al generar aleatoriamente la cadena User-Agent, el cliente puede disfrazarse efectivamente para que el servidor piense que es un usuario real que accede. El siguiente es un código de muestra para generar User-Agent aleatoriamente:

import random

def get_user_agent():
    user_agents = [
        "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3",
        "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36",
        "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.81 Safari/537.36",
        "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36",
        "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:54.0) Gecko/20100101 Firefox/54.0",
        "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:54.0) Gecko/20100101 Firefox/54.0",
        "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36",
        "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36 Edge/15.15063",
        "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:54.0) Gecko/20100101 Firefox/54.0",
        "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36 OPR/39.0.2256.48"
    ]
    return random.choice(user_agents)
2. Establecer información del encabezado del encabezado

Al realizar una solicitud de rastreador, debe configurar la información del encabezado de la solicitud de solicitud, especialmente la información del referente y la cookie. Al configurar la información del encabezado del encabezado, también debe prestar atención a disfrazarla como una solicitud de usuario real.

import requests

url = "http://www.example.com"

headers = {
    "User-Agent": get_user_agent(),
    "Referer": "http://www.example.com/",
    "Cookie": "xxx"
}

response = requests.get(url, headers=headers)
3. Utilice un proxy de IP dinámico

El proxy de IP dinámico puede ayudarnos a ocultar la dirección IP real y solicitar el sitio web de destino a través del servidor proxy, de modo que el servidor no pueda identificar la dirección IP real del programa rastreador.

El uso de un proxy requiere preparar un grupo de proxy, es decir, varias direcciones IP de proxy disponibles. Se puede comprar a través de un proveedor de IP proxy u obtenerse de forma gratuita.

import requests

def get_proxy():
    return {
        "http": "http://username:password@proxy_address:port",
        "https": "https://username:password@proxy_address:port"
    }

url = "http://www.example.com"

response = requests.get(url, proxies=get_proxy())

2. Rastreo de agentes

Al realizar el rastreo de proxy, debe prestar atención a los siguientes problemas:

  1. La dirección IP del proxy debe estar disponible; de ​​lo contrario, afectará la eficiencia del programa rastreador.
  2. La cantidad de direcciones IP proxy debe ser suficiente; de ​​lo contrario, el servidor las bloqueará debido a cambios frecuentes.
  3. La calidad de la dirección IP del proxy debe ser excelente, porque las direcciones IP del proxy de baja calidad son propensas a tiempos de espera de conexión o errores de red.
1. Utilice el grupo de proxy

Un grupo de proxy se refiere a una colección de múltiples direcciones IP de proxy disponibles. A través del grupo de proxy, las direcciones IP de proxy disponibles se pueden mantener automáticamente, evitando así la adición y eliminación manual de direcciones IP de proxy. La implementación del grupo de proxy puede hacer referencia al siguiente código de muestra:

import random
import requests
import time

class ProxyPool:
    def __init__(self):
        self.pool = []
        self.index = 0

    def get_proxy(self):
        if len(self.pool) == 0:
            return None
        proxy = self.pool[self.index]
        self.index += 1
        if self.index == len(self.pool):
            self.index = 0
        return proxy

    def add_proxy(self, proxy):
        if proxy not in self.pool:
            self.pool.append(proxy)

    def remove_proxy(self, proxy):
        if proxy in self.pool:
            self.pool.remove(proxy)

    def check_proxy(self, proxy):
        try:
            response = requests.get("http://www.example.com", proxies=proxy, timeout=10)
            if response.status_code == 200:
                return True
            return False
        except:
            return False

    def update_pool(self):
        new_pool = []
        for proxy in self.pool:
            if self.check_proxy(proxy):
                new_pool.append(proxy)
        self.pool = new_pool

pool = ProxyPool()

# 添加代理IP地址
pool.add_proxy({"http": "http://username:password@proxy_address:port", "https": "http://username:password@proxy_address:port"})

# 更新代理池
while True:
    pool.update_pool()
    time.sleep(60)
 2. Cambiar de agente aleatoriamente

Al realizar el rastreo de proxy, debe cambiar aleatoriamente la dirección IP del proxy para evitar que el servidor lo bloquee debido a conexiones frecuentes a la misma dirección IP. El cambio de proxy aleatorio se puede lograr mediante el siguiente código de muestra:

import requests

def get_random_proxy():
    return {"http": "http://username:password@proxy_address:port", "https": "http://username:password@proxy_address:port"}

url = "http://www.example.com"

for i in range(10):
    proxy = get_random_proxy()
    response = requests.get(url, proxies=proxy)
3. Utilice un proxy de calidad

Al realizar el rastreo de proxy, si se utiliza una dirección IP de proxy de baja calidad, es fácil que se produzcan tiempos de espera de conexión o errores de red, lo que afectará la eficiencia operativa del programa de rastreo. Por lo tanto, es muy importante elegir una dirección IP proxy de alta calidad.

Puede elegir una dirección IP proxy de alta calidad utilizando los servicios proporcionados por un proveedor de IP proxy. Al mismo tiempo, también puede probar periódicamente la disponibilidad de direcciones IP de proxy para eliminar direcciones IP de proxy no válidas de manera oportuna. Aquí hay un código de muestra que prueba la disponibilidad de una dirección IP proxy:

import requests

def check_proxy(proxy):
    try:
        response = requests.get("http://www.example.com", proxies=proxy, timeout=10)
        if response.status_code == 200:
            return True
        return False
    except:
        return False

proxy = {"http": "http://username:password@proxy_address:port", "https": "http://username:password@proxy_address:port"}

if check_proxy(proxy):
    print("代理IP地址可用")
else:
    print("代理IP地址不可用")

3. Resumen

Al desarrollar rastreadores de Python, a menudo se encuentra con el mecanismo anti-rastreador del sitio web de destino, el más común es el bloqueo de IP. Para evitar esta restricción, se pueden utilizar técnicas de ocultación de IP y rastreo de proxy. Las técnicas de ocultación de IP incluyen métodos como el agente de usuario aleatorio, la configuración de la información del encabezado del encabezado y el uso de proxies de IP dinámicos. Sin embargo, el rastreo de proxy requiere atención a la disponibilidad, cantidad y calidad de las direcciones IP de los proxy. Puede usar grupos de proxy, cambiar de proxy aleatoriamente y seleccionar representantes de alta calidad y realizarse de otras maneras.

Supongo que te gusta

Origin blog.csdn.net/wq10_12/article/details/132832491
Recomendado
Clasificación