Tecnologia de ocultação de IP do rastreador Python e rastreamento de proxy

Prefácio

Ao desenvolver e executar programas rastreadores, você frequentemente encontra o mecanismo anti-rastreador do site de destino. O mais comum é o bloqueio de IP. Nesse caso, você precisa usar tecnologia de ocultação de IP e rastreamento de proxy.

 1. Tecnologia de ocultação de IP

A tecnologia de ocultação de IP serve para disfarçar o endereço IP para que o endereço IP solicitado pelo rastreador não seja reconhecido como rastreador pelo site de destino. Através da tecnologia de ocultação de IP, você pode efetivamente contornar as restrições do site de destino em endereços IP específicos.

1. Agente de usuário aleatório

User-Agent refere-se às informações de string enviadas ao servidor quando o programa cliente as solicita. Geralmente inclui informações como a versão atual do software do cliente, sistema operacional, ambiente de linguagem e provedor de serviços. Ao desenvolver um crawler, se o User-Agent utilizado for diferente do navegador, ele será facilmente reconhecido como crawler pelo servidor e restrito.

Portanto, ao gerar aleatoriamente a string User-Agent, o cliente pode ser efetivamente disfarçado para que o servidor pense que é um usuário real acessando. A seguir está um exemplo de código para gerar aleatoriamente o User-Agent:

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. Defina as informações do cabeçalho do cabeçalho

Ao fazer uma solicitação do rastreador, você precisa definir as informações do cabeçalho da solicitação da solicitação, especialmente as informações do referenciador e do cookie. Ao definir as informações do cabeçalho, você também precisa prestar atenção para disfarçá-las como uma solicitação real do usuário.

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. Use proxy IP dinâmico

O proxy IP dinâmico pode nos ajudar a ocultar o endereço IP real e solicitar o site de destino por meio do servidor proxy, para que o servidor não consiga identificar o endereço IP real do programa rastreador.

O uso de um proxy requer a preparação de um pool de proxy, ou seja, vários endereços IP de proxy disponíveis. Ele pode ser adquirido através de um provedor de IP proxy ou obtido gratuitamente.

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. Rastreamento de agente

Ao realizar o rastreamento de proxy, você precisa prestar atenção aos seguintes problemas:

  1. O endereço IP do proxy precisa estar disponível, caso contrário afetará a eficiência do programa rastreador.
  2. O número de endereços IP do proxy precisa ser suficiente, caso contrário será banido pelo servidor devido à troca frequente.
  3. A qualidade do endereço IP do proxy precisa ser excelente, porque os endereços IP do proxy de baixa qualidade estão sujeitos a tempos limite de conexão ou erros de rede.
1. Use o pool de proxy

Um pool de proxy refere-se a uma coleção de vários endereços IP de proxy disponíveis. Através do pool de proxy, os endereços IP de proxy disponíveis podem ser mantidos automaticamente, evitando assim a adição e exclusão manual de endereços IP de proxy. A implementação do pool de proxy pode consultar o seguinte código de exemplo:

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. Trocar de agente aleatoriamente

Ao realizar o rastreamento de proxy, você precisa alternar aleatoriamente o endereço IP do proxy para evitar ser bloqueado pelo servidor devido a conexões frequentes com o mesmo endereço IP. A troca aleatória de proxy pode ser obtida por meio do seguinte código de exemplo:

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. Use um proxy de qualidade

Ao realizar o rastreamento de proxy, se um endereço IP de proxy de baixa qualidade for usado, podem ocorrer facilmente tempos limite de conexão ou erros de rede, afetando assim a eficiência operacional do programa rastreador. Portanto, é muito importante escolher um endereço IP proxy de alta qualidade.

Você pode escolher um endereço IP proxy de alta qualidade usando os serviços fornecidos por um provedor de IP proxy. Ao mesmo tempo, você também pode testar regularmente a disponibilidade de endereços IP de proxy para eliminar endereços IP de proxy inválidos em tempo hábil. Aqui está um exemplo de código que testa a disponibilidade de um endereço IP de 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. Resumo

Ao desenvolver rastreadores Python, muitas vezes você encontra o mecanismo anti-rastreador do site de destino, sendo o mais comum o bloqueio de IP. Para contornar essa restrição, técnicas de ocultação de IP e rastreamento de proxy podem ser usadas. As técnicas de ocultação de IP incluem métodos como User-Agent aleatório, configuração de informações de cabeçalho de cabeçalho e uso de proxies IP dinâmicos. No entanto, o rastreamento de proxy requer atenção à disponibilidade, quantidade e qualidade dos endereços IP de proxy. Você pode usar pools de proxy, alternar proxies aleatoriamente e selecione proxies de alta qualidade realizados de outras maneiras.

Acho que você gosta

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