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

devtools/2025/2/9 13:32:08/

前言

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


目录

  • 前言
    • 1. 安装 `undetected-chromedriver`
    • 2. 基本使用
      • 示例代码:
      • 代码解析:
    • 3. 反自动化检测绕过
      • 自定义浏览器设置
        • 示例:使用自定义 `User-Agent`
        • 示例:启用无头模式(Headless)
        • 示例:禁用 GPU 加速
    • 4. 使用代理
        • 示例:配置代理
    • 5. 常见问题及解决方案
      • 1. 无法绕过反自动化检测
      • 2. 驱动无法启动
    • 6. 总结

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

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

1. 安装 undetected-chromedriver

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

pip install undetected-chromedriver

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

2. 基本使用

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

示例代码:

python">#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import undetected_chromedriver as uc
import timechrome_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 进行浏览器自动化。如果遇到问题,可以查看官方文档或在评论区留言,我们一起讨论解决方法!


http://www.ppmy.cn/devtools/157360.html

相关文章

c#对接deepseek 聊天AI接口

注意:不是免费 对接文档:对话补全 | DeepSeek API Docs 注册地址:DeepSeek 申请key 在线请求示例 apifox deepseek - deepseek

【字节青训营-5】:初探存储系统与数据库及技术原理,解析关系型、非关系型数据库

本文为笔者参加字节青训营时听字节青训营的课时所做课堂笔记。 本文目录 一、一条数据的生命周期二、存储系统2.1 存储系统的特点2.2 存储系统的存储器层级结构2.3 数据怎么从应用到存储介质2.4 RAID技术 三、数据库和存储系统四、单机存储系统五、分布式存储六、单机数据库七、…

网络安全与AI:数字经济发展双引擎

在2025年年初,一场科技攻防战引发了全球关注。国产人工智能DeepSeek的爆火,伴随着大规模的网络攻击事件,将网络安全的重要性推上了风口浪尖。 在此背景下,我们计划探讨网络安全与人工智能如何为数字经济发展提供强大动力。网络安…

算法基础之八大排序

文章目录 概要1. 冒泡排序(Bubble Sort)2. 选择排序(Selection Sort)3. 插入排序(Insertion Sort)4. 希尔排序(Shell Sort)5. 归并排序(Merge Sort)6. 快速排…

智能化转型2.0:从“工具应用”到“价值重构”

过去几年,“智能化”从一个模糊的概念逐渐成为企业发展的核心议题。2024年,随着生成式AI、大模型、智能体等技术的爆发式落地,中国企业正式迈入智能化转型的2.0时代。这一阶段的核心特征是从单一场景的“工具应用”转向全链条的“价值重构”&…

学习TCL脚本的几个步骤?

文章目录 前言一、第一步:了解 Tcl 基础二、第二步:掌握基本语法1. 命令和参数2. 变量3. 控制结构4. 列表和字典 三、第三步:深入学习高级特性1. 过程(Procedures)2. 错误处理3. 文件操作4. 模块和包 四、第四步&#…

AI软件外包需要注意什么 外包开发AI软件的关键因素是什么 如何选择AI外包开发语言

1. 定义目标与需求 首先,要明确你希望AI智能体做什么。是自动化任务、数据分析、自然语言处理,还是其他功能?明确目标可以帮助你选择合适的技术和方法。 2. 选择开发平台与工具 开发AI智能体的软件时,你需要选择适合的编程语言、…

docker compose文件中的${}怎么赋值

要正确传递${OLLAMA_DOCKER_TAG-latest} 和 ${OPEN_WEBUI_PORT-3000} 这类环境变量,并启动docker-compose服务,您可以按照以下步骤进行操作: 1. 定义环境变量 在 docker-compose.yml 中使用的 ${OLLAMA_DOCKER_TAG-latest} 和 ${OPEN_WEBUI…