怎么移除 window.navigator.webdriver python
时间: 2024-03-23 11:39:42 浏览: 218
在 Python 中,您可以使用 selenium 的 webdriver 来模拟浏览器行为,但是有些网站会检测是否使用了 webdriver 进行自动化测试。为了避免被检测到,可以尝试移除 window.navigator.webdriver 属性。
您可以使用 selenium 的 chrome driver 配置选项,禁止浏览器显示 webdriver 属性,示例代码如下:
```python
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
options = Options()
options.add_argument('--disable-blink-features=AutomationControlled')
options.add_experimental_option('excludeSwitches', ['enable-automation'])
options.add_experimental_option('useAutomationExtension', False)
driver = webdriver.Chrome(options=options)
```
这样就可以在浏览器中禁用 webdriver 属性了。
相关问题
window.navigator.webdriver
window.navigator.webdriver属性是一个布尔值,用于指示当前浏览器是否正在由自动化测试工具控制。该属性在JavaScript中是只读的,它的默认值为false。然而,为了防止被自动化测试工具检测到,有时候需要将其置为空,以隐藏测试工具的存在。在Selenium中,有几种方法可以将window.navigator.webdriver属性置空。
方法1:在每次打开新页面时将window.navigator.webdriver属性置为undefined。
```python
from selenium import webdriver
from selenium.webdriver import ChromeOptions
option = ChromeOptions()
option.add_argument('--disable-blink-features=AutomationControlled')
option.add_experimental_option('excludeSwitches', ['enable-automation'])
option.add_experimental_option('useAutomationExtension', False)
driver = webdriver.Chrome(options=option, executable_path="chromedriver.exe")
driver.execute_cdp_cmd('Page.addScriptToEvaluateOnNewDocument', {
"source": 'Object.defineProperty(navigator, "webdriver", {get: () => undefined})'
})
```
方法2:在请求时添加参数设置,将window.navigator.webdriver属性置为空。
```python
from selenium import webdriver
option = ChromeOptions()
option.add_argument('--disable-blink-features=AutomationControlled')
driver = webdriver.Chrome(options=option, executable_path="chromedriver.exe")
driver.get("xxxxxx")
```
请注意,以上方法只是在使用Selenium进行自动化测试时隐藏webdriver属性的一种方式,并不能完全防止被检测到。在一些特定的场景下,网站可能会使用其他方式来检测自动化测试工具的存在。因此,如果需要更好地规避检测,请参考其他相关技术和方法。
webdriver网页检测是什么
引用\[1\]中提到了一种方法,在每次打开新的页面时将webdriver属性置为空,以绕过webdriver网页检测。这种方法使用了Chrome浏览器的ChromeOptions类和webdriver的execute_cdp_cmd方法。具体代码如下:
```python
from selenium import webdriver
from selenium.webdriver import ChromeOptions
option = ChromeOptions()
option.add_argument('--disable-blink-features=AutomationControlled')
option.add_experimental_option('excludeSwitches', \['enable-automation'\])
option.add_experimental_option('useAutomationExtension', False)
driver = webdriver.Chrome(options=option, executable_path="chromedriver.exe")
driver.execute_cdp_cmd('Page.addScriptToEvaluateOnNewDocument', { "source": 'Object.defineProperty(navigator, "webdriver", {get: () => undefined})' })
```
这段代码在每次打开新的页面时,将navigator.webdriver属性置为空,以绕过webdriver网页检测。
引用\[3\]中也提到了一种方法,在生成webdriver对象前进行一些设置,以绕过webdriver网页检测。这种方法使用了Chrome浏览器的ChromeOptions类和webdriver的add_experimental_option方法。具体代码如下:
```python
from selenium import webdriver
from selenium.webdriver import ChromeOptions
options = webdriver.ChromeOptions()
options.add_argument('user-agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36')
options.add_experimental_option("excludeSwitches", \["enable-automation"\])
options.add_experimental_option('useAutomationExtension', False)
bro = webdriver.Chrome(options=options)
```
这段代码在生成webdriver对象前,设置了user-agent和excludeSwitches选项,以绕过webdriver网页检测。
综上所述,webdriver网页检测是一种通过检测浏览器中的webdriver属性来判断是否使用了自动化测试工具的方法。为了绕过这种检测,可以通过将webdriver属性置为空或进行一些设置来欺骗网页。
#### 引用[.reference_title]
- *1* [selenium 防止window.navigator.webdriver对象检测的方法](https://blog.csdn.net/m0_55580308/article/details/130400747)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item]
- *2* [python网页抓取实例-基于Python及webdriver的网页抓取案例](https://blog.csdn.net/weixin_37988176/article/details/109372624)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item]
- *3* [解决selenium控制webdriver总是被网站检测的问题](https://blog.csdn.net/huangbangqing12/article/details/121797472)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]
阅读全文