undetected-chromedriver 使用教程,指定浏览器驱动和浏览器版本

前言

浏览器自动化测试,测试过一些网站检测


目录

  • 前言
    • [1. 安装 `undetected-chromedriver`](#1. 安装 undetected-chromedriver)
    • [2. 基本使用](#2. 基本使用)
    • [3. 反自动化检测绕过](#3. 反自动化检测绕过)
    • [4. 使用代理](#4. 使用代理)
    • [5. 常见问题及解决方案](#5. 常见问题及解决方案)
      • [1. 无法绕过反自动化检测](#1. 无法绕过反自动化检测)
      • [2. 驱动无法启动](#2. 驱动无法启动)
    • [6. 总结](#6. 总结)

undetected-chromedriver 是一个用于绕过浏览器自动化检测的 Python 库。它可以帮助开发者通过 Selenium 启动 Chrome 浏览器时避免被检测为自动化脚本,特别是在需要避免反自动化机制的场景下非常有用。

介绍如何安装、配置并使用 undetected-chromedriver,以及如何避免常见的自动化检测。

1. 安装 undetected-chromedriver

首先,确保你的环境中已安装 undetected-chromedriver。使用以下命令安装:

bash 复制代码
pip install undetected-chromedriver

undetected-chromedriver 会自动处理一些反自动化的机制,允许你通过 Selenium 启动浏览器并避免被网站检测为自动化浏览器。

2. 基本使用

以下是一个简单的例子,展示了如何使用 undetected-chromedriver 启动浏览器并访问一个网页。

示例代码:

python 复制代码
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import undetected_chromedriver as uc
import time

chrome_options = uc.ChromeOptions()

driver = uc.Chrome(
    options=chrome_options,
    driver_executable_path="D:\chromedriver_win\chromedriver.exe",
    browser_executable_path="C:\Program Files\Google\Chrome\Application\chrome.exe",
)
driver.get("https://nowsecure.nl")
#打印标题
print(driver.title)
#保存网页截图
driver.save_screenshot("nowsecure.png")
time.sleep(10)
driver.quit()

代码解析:

  1. uc.ChromeOptions():创建浏览器选项对象,可以在其中设置各种浏览器参数(例如无头模式、代理等)。
  2. uc.Chrome(options=options):启动 Chrome 浏览器,并传入配置选项。
  3. driver_executable_path 指定浏览器驱动路径,如果默认运行没问题,可以不指定
  4. browser_executable_path 指定浏览器路径,如果默认运行没问题,可以不指定
  5. driver.get():打开指定的网页。
  6. time.sleep(5):等待页面加载完成,实际使用中你可以使用显式等待(WebDriverWait)来代替 sleep
  7. driver.title:获取页面的标题。
  8. driver.quit():关闭浏览器,释放资源。

3. 反自动化检测绕过

undetected-chromedriver 的核心功能是绕过反自动化检测。它会自动处理一些常见的自动化检测机制,例如修改 navigator.webdriver 属性和 User-Agent,从而避免被检测为自动化脚本。

自定义浏览器设置

你可以进一步自定义浏览器的行为,例如修改 User-Agent、启用无头模式等。

示例:使用自定义 User-Agent
python 复制代码
options.add_argument('--user-agent=YourCustomUserAgent')
示例:启用无头模式(Headless)

无头模式可以让浏览器在没有界面的情况下运行,适用于不需要查看浏览器界面的自动化任务。

python 复制代码
options.add_argument('--headless')
示例:禁用 GPU 加速
python 复制代码
options.add_argument('--disable-gpu')

4. 使用代理

在一些情况下,网站会根据 IP 地址或地理位置进行反自动化检测,使用代理服务器可以帮助隐藏真实 IP。

示例:配置代理
python 复制代码
options.add_argument('--proxy-server=http://your.proxy.server:port')

your.proxy.server:port 替换为你自己的代理地址。

5. 常见问题及解决方案

1. 无法绕过反自动化检测

有些网站可能会使用更高级的检测技术,undetected-chromedriver 可能无法绕过所有的检测。在这种情况下,你可以尝试以下方法:

  • 更换代理。
  • 随机化 User-Agent 和其他浏览器特征。
  • 使用显式等待代替 sleep,模拟更自然的浏览器行为。

2. 驱动无法启动

如果你遇到启动 Chrome 驱动失败的情况,可能是因为版本不匹配。确保你的 Chrome 浏览器版本和 chromedriver 版本匹配。

如果你使用的是 undetected-chromedriver,它通常会自动处理驱动版本问题,但仍然建议保持 Chromechromedriver 的版本一致。

可以在网上搜索对应的浏览器版本驱动,先查看浏览器版本,在浏览器地址栏输入

复制代码
chrome://version/

6. 总结

undetected-chromedriver 是一个非常实用的库,它通过绕过自动化检测机制,帮助开发者使用 Selenium 实现更稳定的网页自动化。你可以通过修改浏览器选项、使用代理或自定义 User-Agent 来进一步优化绕过策略。

希望本教程能够帮助顺利使用 undetected-chromedriver 进行浏览器自动化。如果遇到问题,可以查看官方文档或在评论区留言,我们一起讨论解决方法!

相关推荐
阿里云大数据AI技术1 小时前
【跨国数仓迁移最佳实践6】MaxCompute SQL语法及函数功能增强,10万条SQL转写顺利迁移
python·sql
杜子不疼.1 小时前
《Python学习之文件操作:从入门到精通》
数据库·python·学习
微小的xx1 小时前
java + html 图片点击文字验证码
java·python·html
金色旭光1 小时前
uv 现代化的虚拟环境管理工具
python·python进阶
赞哥哥s2 小时前
Python脚本开发-统计Rte中未连接的Port
python·autosar·rte
Franklin2 小时前
Python界面设计【QT-creator基础编程 - 01】如何让不同分辨率图像自动匹配graphicsView的窗口大小
开发语言·python·qt
waynaqua2 小时前
FastAPI开发AI应用三:添加深度思考功能
python·openai·deepseek
onejason2 小时前
《利用 Python 爬虫获取 Amazon 商品详情实战指南》
前端·后端·python
苏婳6663 小时前
【最新版】怎么下载mysqlclient并成功安装?
数据库·python·mysql
0wioiw03 小时前
Python基础(Flask①)
后端·python·flask