Aunque ip puede usar un proxy, en el proceso de rastreo, la solicitud del navegador todavía es fácilmente reconocida por herramientas como waf, y es muy fácil de amurallar, así que cuando uso selenium, estaba pensando, ¿puedo enviar la solicitud como Use la solicitud para modificar el encabezado dinámicamente.
Permítanme comenzar con la conclusión. Después de consultar la información, se demostró que el selenio no admite la modificación dinámica de la solicitud de encabezado. Algunos bloggers también dieron algunas opiniones.
problema de github
- WebDriver carece de encabezado de respuesta HTTP y métodos de código de estado # 141
- ¿Cómo agregar un encabezado a una solicitud? (usando enlaces de Python + webdriver) # 2047
pregunta de stackoverflow
Probablemente sea imposible de lograr y nadie lo ha visto. Pero también hay flexibilidad. Podemos configurar el encabezado antes de que selenium inicie webdriver, lo que puede resolver este problema hasta cierto punto. Además, también publiqué algunas soluciones de bloggers.
https://blog.csdn.net/u013948858/article/details/92614346
Las principales soluciones son las siguientes:
- Use otro controlador / biblioteca en lugar de selenium (esto depende de la biblioteca o paquete proporcionado por el campo de programación: python selenium-wire)
- Escriba complementos específicos del navegador (o busque complementos existentes) que le permitan agregar encabezados a la solicitud. (Parece que hay complementos: chrome y modificar los encabezados de firefox, pero hay requisitos para la versión del navegador)
- Utilice browsermob-proxy o algún otro proxy. (El agente es una buena idea)
- Se puede hacer usando un proxy como Fiddler. Fiddler también proporciona una versión solo de API del componente FiddlerCore, así como acceso programático a toda la configuración y datos del proxy, lo que le permite modificar los encabezados de la respuesta http. (Al igual que el tercer agente, básicamente lo mismo)
Los artículos relacionados sobre la modificación de la solicitud inicial webdriver.option () son los siguientes:
https://www.zhihu.com/question/35547395?sort=created
https://www.cnblogs.com/TTyb/p/6128323.html
https://www.cnblogs.com/yangjintao/p/10599868.html
Este artículo es más detallado:
https://blog.csdn.net/xc_zhou/article/details/82415870
Algunos ejemplos de bloques de código son los siguientes:
options = webdriver.ChromeOptions()
#设置浏览器header
options.add_argument('User-Agent=Mozilla/5.0 (Linux; U; Android 8.1.0; zh-cn; BLA-AL00 Build/HUAWEIBLA-AL00) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.132 MQQBrowser/8.9 Mobile Safari/537.36')
#导入chromedriver路径
browser = webdriver.Chrome(executable_path = r'C:\xx\chromedriver.exe',chrome_options = options)
webdriver.ChromeOptions () también puede personalizar la información inicial, como las cookies, si se cargan imágenes y si se ejecutan visualmente. No solo se aplica a Chrome, aquí hay solo un ejemplo de Chrome.