Para cambiar el rastreador, utilizo Python para implementar tres métodos de encabezado de solicitud aleatorios.

Creo que hemos configurado demasiado encabezado de solicitud de reptiles en user-agenteste parámetro, ¿verdad? Cuando se le solicite, agregando este parámetro, puede disfrazarse hasta cierto punto como un navegador, el servidor no se identificará directamente spider.demo.codehasta donde yo sé, cada vez que tengo muchos lectores de networkreplicar user-agenty luego pegarlo en él. En el código, no hay user-agentnada de malo en obtenerlo de esta manera , y se puede usar, pero si las medidas anti-escalada del sitio web son más fuertes, usar un encabezado de solicitud fijo puede ser un problema, por lo que debemos establecer un encabezado de solicitud aleatorio. Aquí, compartiré mi información general Utilice las tres formas de establecer encabezados de solicitud aleatorios, ¡como lo que aprende y comenta! ! !

Inserte la descripción de la imagen aquí


Introducción a la idea:

  • De hecho, para lograr efectos aleatorios, en gran medida podemos usar la biblioteca de funciones aleatorias randompara lograr esto. Puede llamar a una de las random.choice([user-agent])matrices de selección aleatoria. Este es uno de mis métodos.
  • Python, como lenguaje con muchos paquetes de terceros, naturalmente tiene paquetes que pueden generar encabezados de solicitud aleatorios. Sí, es fake-useragentesta biblioteca de terceros. Presentaremos el uso simple de esta biblioteca más adelante.
  • Dado que otros pueden escribir bibliotecas de terceros, naturalmente también pueden implementar dicha función. En la mayoría de los casos, gran parte de mi código está llamando directamente a una GetUserAgentCSclase que implementé, y puedo obtener directamente un encabezado de solicitud aleatorio y escribir la función directamente La biblioteca es increíble y cómoda. A continuación, también presentaré cómo escribir una biblioteca de funciones.

Escriba su propia biblioteca de terceros:

  • No sé cuál es el marco de su código, ¿orientado a procesos u orientado a objetos? Para un código único, simplemente codifíquelo. Si cree que este código se puede usar en muchos lugares y se puede reutilizar, entonces puede usar el método de clase para escribir este código, luego en otros En el archivo, puede llamar directamente a escribir este archivo, llamar directamente a varios métodos en la clase que escribió y también implementé una biblioteca de terceros para un encabezado de solicitud aleatorio, de la siguiente manera:
import random
import csv


class GetUserAgentCS(object):
    """
    调用本地请求头文件, 返回请求头
    """

    def __init__(self):
        with open('D://pyth//scrapy 项目//setting//useragent.csv', 'r') as fr:
            fr_csv = csv.reader(fr)
            self.user_agent = [str(i[1]) for i in fr_csv]

    def get_user(self):
        return random.choice(self.user_agent)

El archivo useragent es el siguiente:

1,"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36,Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.93 Safari/537.36"
2,"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36,Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.17 Safari/537.36"
3,"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36,Mozilla/5.0 (X11; NetBSD) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36"
4,"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36,Mozilla/5.0 (X11; CrOS i686 3912.101.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36"
5,"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36,Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.93 Safari/537.36"
-------
-------  # too much 
100...

El código es muy simple, lea el archivo csv local, y luego uno al azar, luego alguien me preguntará ahora, ¿cómo obtuvo este archivo? Es muy simple, naturalmente hay una manera, estaré en el próximo módulo. Hablando de, aquí, solo necesitamos escribir una GetUserAgentCSclase, el código se puede copiar directamente de mi anterior, y luego guardarlo como get_useragent.pyestá, luego colocar este archivo de paquete en su propia carpeta de rastreo , y luego llamarlo así:

from get_useragent import GetUserAgentCS
headers = {
    
    }
ua = GetUserAgentCS().get_user()
headers['user-agent'] = ua
return headers

Si no tiene GetUserAgentCSéxito en esta llamada , o habrá una línea ondulada roja debajo, entonces no ha configurado el entorno de trabajo actual, solo necesita configurarlo así (configure su carpeta de rastreo):

Inserte la descripción de la imagen aquí
¡Tienes que hacer clic Sources Rooten él!


Utilice la biblioteca de terceros fake-useragent:

  • Esta es una biblioteca de terceros que ha escrito otra persona. Debe instalarla y luego llamar a la API. Puede obtener varios encabezados de solicitud. El único inconveniente es que la solicitud es inestable . A veces, las fluctuaciones de la red pueden provocar una recuperación fallida. , No es muy cómodo de usar en Scrapy, así que escribí mi propio paquete como arriba sobre la base de este paquete. En cuanto a cómo provienen los datos del encabezado de la solicitud, siempre cambia cuando el paquete se ejecuta normalmente user-agent, y luego continuamente solicitud, http://httpbin.org/user-agentluego continúe guardando los datos, escriba archivos locales en él.

¡Hablemos de cómo usar este paquete!

instalación

pip install fake-useragent

Puede consultar la lista de pip para ver si la instalación es exitosa

Cómo utilizar

from fake_useragent import UserAgent
headers= {
    
    'User-Agent':str(UserAgent().random)}
r = requests.get(url, headers=headers)
  • UserAgent (). Random puede obtener el encabezado de solicitud de cualquier navegador
  • UserAgent (). Chrome puede obtener el encabezado de solicitud de Google Chrome
  • UserAgent (). Firefox puede obtener el encabezado de solicitud del navegador Firefox

En este momento, solo use aleatorio directamente, simple.

Después de leer, obtendrán algo, como, seguir, agregar a favoritos y animarse mutuamente.
¡Haz clic en mí, haz clic en mí, haz clic en mí! Otras publicaciones de blog

Lea la matriz de memoria:

  • En este momento, muchas personas dijeron, simplemente cambio el encabezado de la solicitud. ¿Tiene que ser tan problemático? Por supuesto, hay una forma simple, pero necesita ser copiado cada vez. No es un método muy, como sigue:
ua = ["Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36,Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.93 Safari/537.36"
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36,Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.17 Safari/537.36"
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36,Mozilla/5.0 (X11; NetBSD) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36"]

Coloque el encabezado de la solicitud en la matriz de antemano y úselo.

import random
ua = [.....]
r = requests.get(url, headers={
    
    "user-agent":random.choice(ua)})

Las anteriores son varias formas de configurar el encabezado de la solicitud. Si necesita agregar, puede dejar un mensaje en el área de comentarios.

Enseñarle a utilizar tres formas de establecer encabezados de solicitud aleatorios. Es inevitable que el rastreador establezca el encabezado de solicitud (usuario-agente). Cómo generar un encabezado de solicitud aleatorio es también lo que los rastreadores debemos dominar. Después de leer este artículo, ¡puede dominarlo fácilmente!

Después de leer, obtendrán algo, como, seguir, agregar a favoritos y animarse mutuamente.
¡Haz clic en mí, haz clic en mí, haz clic en mí! Otras publicaciones de blog

Supongo que te gusta

Origin blog.csdn.net/qq_45906219/article/details/108563192
Recomendado
Clasificación