15 python firefox selenium selenium-firefoxdriver geckodriver
有没有办法使用geckodriver使您的 Selenium 脚本在 Python 中无法检测到?
我正在使用 Selenium 进行抓取。我们是否需要使用任何保护措施使网站无法检测到 Selenium?
CST*_*CST 28
有多种方法可以避免网站检测到 Selenium 的使用。
使用 Selenium 时,navigator.webdriver 的值默认设置为 true。此变量将出现在 Chrome 和 Firefox 中。此变量应设置为“未定义”以避免检测。
代理服务器也可用于避免检测。
某些网站能够使用浏览器的状态来确定您是否正在使用 Selenium。您可以将 Selenium 设置为使用自定义浏览器配置文件来避免这种情况。
下面的代码使用了所有这三种方法。
profile = webdriver.FirefoxProfile('C:\\Users\\You\\AppData\\Roaming\\Mozilla\\Firefox\\Profiles\\something.default-release')
PROXY_HOST = "12.12.12.123"
PROXY_PORT = "1234"
profile.set_preference("network.proxy.type", 1)
profile.set_preference("network.proxy.http", PROXY_HOST)
profile.set_preference("network.proxy.http_port", int(PROXY_PORT))
profile.set_preference("dom.webdriver.enabled", False)
profile.set_preference('useAutomationExtension', False)
profile.update_preferences()
desired = DesiredCapabilities.FIREFOX
driver = webdriver.Firefox(firefox_profile=profile, desired_capabilities=desired)
Run Code Online (Sandbox Code Playgroud)
代码运行后,您将能够手动检查由 Selenium 运行的浏览器现在是否有您的 Firefox 历史记录和扩展。您还可以在 devtools 控制台中键入“navigator.webdriver”以检查它是否未定义。
Deb*_*anB 11
检测到硒驱动的Firefox / GeckoDriver的事实并不取决于任何特定的GeckoDriver或Firefox版本。该网站本身可以检测网络流量,并可以识别浏览器客户端,即Web浏览器作为的webdriver controled。
根据WebDriver - W3C Living DocumentWebDriver Interface
最新编辑草案中的文档,最初设置为false的标志在用户代理处于远程控制下时设置为 true ,即通过Selenium控制时。webdriver-active
现在NavigatorAutomationInformation
接口不应该暴露在WorkerNavigator
.
所以,
webdriver
Returns true if webdriver-active flag is set, false otherwise.
Run Code Online (Sandbox Code Playgroud)
然而,
navigator.webdriver
Defines a standard way for co-operating user agents to inform the document that it is controlled by WebDriver, for example so that alternate code paths can be triggered during automation.
Run Code Online (Sandbox Code Playgroud)
所以,底线是:
硒标识自己
然而,一些避免在网络抓取时被检测到的通用方法如下:
time.sleep(secs)
。在这里你可以找到关于如何在 python 中休眠 webdriver 毫秒的详细讨论 归档时间: |
|
查看次数: |
13823 次 |
最近记录: |