当前位置: 代码网 > it编程>编程语言>Javascript > (python)undetected_chromedriver浏览器自动化测试

(python)undetected_chromedriver浏览器自动化测试

2024年07月27日 Javascript 我要评论
是一个用于绕过 Web 自动化中的 ChromeDriver 检测的 Python 库。它提供了更好的隐匿性和稳定性.适用于以下场景:可以用于模拟用户在浏览器中的操作进行自动化测试,例如填写表单、点击按钮、抓取页面内容等。由于其对驱动程序的检测绕过能力,可以帮助您避免被网站检测到并防止启动时的安全问题。在进行网页数据爬取时也能够提供更高的隐匿性。它可以模拟浏览器行为,如加载 JavaScript、执行 Ajax 请求等,从而获取动态生成的内容。

前言

        undetected_chromedriver 是一个用于绕过 web 自动化中的 chromedriver 检测的 python 库。它提供了更好的隐匿性和稳定性.

适用于以下场景:

  1. web 自动化测试:undetected_chromedriver 可以用于模拟用户在浏览器中的操作进行自动化测试,例如填写表单、点击按钮、抓取页面内容等。由于其对驱动程序的检测绕过能力,可以帮助您避免被网站检测到并防止启动时的安全问题。

  2. 网页数据爬取:undetected_chromedriver 在进行网页数据爬取时也能够提供更高的隐匿性。它可以模拟浏览器行为,如加载 javascript、执行 ajax 请求等,从而获取动态生成的内容。

  3. 反爬虫绕过:某些网站会使用检测机制来识别和阻止爬虫程序。undetected_chromedriver 可以绕过这些检测机制,使得爬虫程序更难被网站检测到,从而提高爬取数据的成功率。

目录

注意

使用到的第三方库

代码样例

运行环境

应用场景

代码

一些常见的问题和解决方法

无法启动 chrome 浏览器

chrome 版本与 chromedriver 版本不匹配

无法绕过自动化检测

性能问题

不支持的功能


注意

        无论在何种场景下使用 undetected_chromedriver,都应该遵守相关法律法规并尊重网站的访问政策。在进行任何自动化操作或爬取数据之前,最好阅读并了解目标网站的使用条款、隐私政策和 robots.txt 文件,并确保您的行为符合相关规定。

使用到的第三方库

undetected_chromedriver

是一个用于绕过 web 自动化中的 chromedriver 检测的 python 库。

selenium 

selenium.webdriver.common.by提供了一组用于定位网页元素的方法。

代码样例

运行环境

  • 开发环境 anaconda3 python3.9
  • selenium  4.12.0
  • undetected-chromedriver  3.5.3
  • 浏览器 谷歌浏览器 版本 78.0.3904.108(正式版本) (64 位)
  • 驱动 chromedriver_win32.zip (需要和浏览器版本适配,下载地址如下) 

https://cdn.npmmirror.com/binaries/chromedriver/78.0.3904.105/chromedriver_win32.zip

应用场景

访问百度网站,查询一个问题'undetected_chromedriver 如何使用',获取返回的搜索信息,将其中的标题和链接信息进行输出.

代码

from undetected_chromedriver import chrome, chromeoptions
from selenium.webdriver.common.by import by

# 创建 chromeoptions 对象并配置
# r"d:\chromedriver.exe"
options = chromeoptions()
# options.add_argument("--headless")  # 设置无头模式
# 创建 chrome 对象 路径最好是设置绝对路径,排查路径的问题
driver = chrome(options=options, driver_executable_path=r"d:\chromedriver.exe")

# 打开百度首页
driver.get("https://www.baidu.com")

# 输入要查询的问题
query = "undetected_chromedriver 如何使用"
search_box = driver.find_element(by.css_selector, "input[id='kw']")
search_box.send_keys(query)

# 提交搜索表单
search_button = driver.find_element(by.css_selector, "input[id='su']")
search_button.click()

# 等待搜索结果加载完成
driver.implicitly_wait(5)  # 等待5秒钟,如果结果在该时间内加载完成则继续执行

# 获取搜索结果
results = driver.find_elements(by.css_selector, "h3[class='c-title t t tts-title'] a")
for result in results:
    title = result.text
    url = result.get_attribute("href")
    print(f"标题:{title}")
    print(f"链接:{url}")
    print()

# 关闭浏览器会话
driver.quit()

一些常见的问题和解决方法

无法启动 chrome 浏览器

如果在使用 undetected_chromedriver 启动浏览器时遇到问题,首先确保您已正确安装 chrome 浏览器和对应版本的 chromedriver。您可以从 chrome 官方网站下载最新版本的浏览器和 chromedriver。另外,请确保您的操作系统与所使用的 chromedriver 版本兼容。

chrome 版本与 chromedriver 版本不匹配

undetected_chromedriver 需要与您已安装的 chrome 浏览器版本相对应的 chromedriver 版本。当 chromedriver 版本与 chrome 版本不匹配时,可能会出现错误或启动失败。请确保两者版本匹配,并及时更新 chromedriver。

无法绕过自动化检测

某些网站可能会检测到您使用的是自动化工具,并采取措施阻止您的访问。尽管 undetected_chromedriver 可以提供一定程度上的自动化检测绕过能力,但无法保证绝对的成功。您可以尝试使用其他技术手段,如更改 user-agent、模拟人类的浏览行为等,来增加绕过检测的成功率。

性能问题

使用 undetected_chromedriver 可能会引入一些额外的性能开销,因为它需要执行一些逻辑来绕过检测。如果您发现脚本运行速度较慢,可以尝试优化代码或考虑直接使用原生的 chromedriver 进行操作。

不支持的功能

undetected_chromedriver 是一个针对特定用例的库,其中某些功能可能与标准的 selenium api 不兼容或不支持。如果您需要使用某些高级功能或特定的 selenium 特性,需要参考 undetected_chromedriver 的文档,了解其是否支持相关功能。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com