Creo que hemos configurado demasiado encabezado de solicitud de reptiles en
user-agent
este parámetro, ¿verdad? Cuando se le solicite, agregando este parámetro, puede disfrazarse hasta cierto punto como un navegador, el servidor no se identificará directamentespider.demo.code
hasta donde yo sé, cada vez que tengo muchos lectores denetwork
replicaruser-agent
y luego pegarlo en él. En el código, no hayuser-agent
nada 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! ! !
Introducción a la idea:
- De hecho, para lograr efectos aleatorios, en gran medida podemos usar la biblioteca de funciones aleatorias
random
para lograr esto. Puede llamar a una de lasrandom.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-useragent
esta 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
GetUserAgentCS
clase 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 GetUserAgentCS
clase, el código se puede copiar directamente de mi anterior, y luego guardarlo como get_useragent.py
está, 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):
¡Tienes que hacer clic Sources Root
en é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-agent
luego 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