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 进行浏览器自动化。如果遇到问题,可以查看官方文档或在评论区留言,我们一起讨论解决方法!

相关推荐
亿牛云爬虫专家38 分钟前
深度解析:使用ChromeDriver和webdriver_manager实现无头浏览器爬虫
爬虫·selenium·爬虫代理·chromedriver·亿牛云·webdriver·代理ip
钢铁男儿1 小时前
Python 字典(一个简单的字典)
开发语言·python
游王子1 小时前
Python Pandas(7):Pandas 数据清洗
开发语言·python·pandas
Jackson@ML2 小时前
Django开发入门 – 2.Django的Web应用项目架构
python·django·virtualenv
dkgee2 小时前
conda将python低版本环境升级到高版本
开发语言·python·conda
A&long@20203 小时前
【AI时代】-开发环境准备 之 Conda 创建 Python 环境 (含pip常用命令、jupyter 安装及汉化、自定义文档位置等配置)
人工智能·python·conda
路来了3 小时前
爬虫案例-爬取某度文档利用飞桨ch_pp-ocrv3模型提高对图片的识别
人工智能·爬虫·paddlepaddle
Pandaconda3 小时前
【新人系列】Python 入门(三十):工作常用第三方库 - 上
开发语言·经验分享·笔记·后端·python·面试·第三方库
编织幻境的妖4 小时前
python2048游戏
开发语言·python·游戏
西猫雷婶5 小时前
python学opencv|读取图像(六十一)先后使用cv2.dilate()函数和cv2.erode()函数实现图像处理
python·opencv·学习