我的问题:
我想抓取以下网站:https://www.coches.net/segunda-mano/ https://www.coches.net/segunda-mano/。
但每次我用 python selenium 打开它时,我都会收到消息,他们将我检测为机器人。
我怎样才能绕过这个检测?
首先我尝试使用 selenium 编写简单的代码:
from selenium import webdriver
from bs4 import BeautifulSoup
browser = webdriver.Chrome('C:/Python38/chromedriver.exe')
URL = 'https://www.coches.net/segunda-mano/'
browser.get(URL)
然后我按照要求尝试了它,但我也不起作用。
from selenium import webdriver
from bs4 import BeautifulSoup
from fake_useragent import UserAgent
import requests
ua = UserAgent()
headers = {"UserAgent":ua.random}
URL = 'https://www.coches.net/segunda-mano/'
r = requests.get(URL, headers = headers)
print(r.statuscode)
在这种情况下,我收到消息 403 = 状态代码,表明禁止访问该 URL。
不知道如何在不被阻止的情况下访问该网页。我将非常感谢你的帮助。提前致谢。
Selenium 很容易被检测到,尤其是被所有主要的反机器人提供商(Cloudflare、Akamai 等)检测到。
Why?
-
Selenium 和大多数其他主要网络驱动程序设置一个浏览器变量(网站可以访问),称为navigator.webdriver
to true
。您可以通过前往 Google Chrome 控制台并运行来自行检查console.log(navigator.webdriver)
。如果您使用的是普通浏览器,则会出现错误。
-
用户代理,通常所有设备都有所谓的“用户代理”,这是指访问网站的设备。 Selenium 的用户代理看起来像这样:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/59.0.3071.115 Safari/537.36
。你明白了吗?HeadlessChrome
包括在内,这是另一种检测途径。
这些只是检测 Selenium 浏览器的多种方法中的两种,我强烈建议阅读this https://stackoverflow.com/a/56529616/6126726 and this https://stackoverflow.com/questions/53039551/selenium-webdriver-modifying-navigator-webdriver-flag-to-prevent-selenium-detec/53040904#53040904以及。
最后,如果您想要一个简单的、直接的解决方案来绕过检测,实现我们讨论过的几乎所有这些概念,我建议使用未检测到的 chromedriver https://github.com/ultrafunkamsterdam/undetected-chromedriver。这是一个开源项目,尽力让您的 Selenium chromedriver 看起来更人性化。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)