selenium自动化chrome

复制代码
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.options import Options
from fake_useragent import UserAgent


# 启动 Chrome 浏览器
chrome_options = webdriver.ChromeOptions()
chrome_options.binary_location = r"C:\Program Files\Google\Chrome\Application\chrome.exe"
# chrome_options.add_argument("executable_path='C:\\Users\\wangkejun\\Downloads\\chromedriver-win64\\chromedriver.exe'")
chrome_options.add_argument('--disable-gpu')  # 禁用 GPU 加速
chrome_options.add_argument('--disable-images')  # 禁用图片加载
chrome_options.add_argument('--no-sandbox')  # 无沙盒模式
chrome_options.add_argument('disable-blink-features=AutomationControlled') #去掉webdriver痕迹
chrome_options.add_argument('--disable-javascript') # 禁用JavaScript
chrome_options.add_argument('-ignore-certificate-errors')#忽略证书错误
chrome_options.add_argument('-ignore -ssl-errors')    #忽略证书错误
chrome_options.add_argument('window-size=1377x768')#指定浏览器分辨率
chrome_options.add_argument('disable-infobars')# 隐藏Chrome正在受到自动软件的控制
chrome_options.add_experimental_option('excludeSwitches', ['enable-automation'])#设置开发者模式启动,该模式下webdriver属性为正常值

# 生成随机的 User-Agent
user_agent = UserAgent().random
chrome_options.add_argument(f'user-agent="{user_agent}"')


driver = webdriver.Chrome(options=chrome_options) 

# 执行 CDP 命令来修改 navigator.webdriver
script = """
Object.defineProperty(navigator, 'webdriver', {
    get: () => undefined
})
"""

driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {"source": script})
  1. chrome_options = webdriver.ChromeOptions() - 创建 Chrome 浏览器的选项对象。

  2. chrome_options.binary_location = r"C:\Program Files\Google\Chrome\Application\chrome.exe" - 指定 Chrome 浏览器的二进制文件路径。

  3. chrome_options.add_argument('--disable-gpu') - 禁用 GPU 加速,可以提高脚本在浏览器中的稳定性和性能。

  4. chrome_options.add_argument('--disable-images') - 禁用图片加载,可以加快页面加载速度。

  5. chrome_options.add_argument('--no-sandbox') - 在无沙盒模式下运行 Chrome 浏览器,可以解决某些特定环境下的问题。

  6. user_agent = UserAgent().random - 生成随机的 User-Agent,用于伪装浏览器身份。

  7. chrome_options.add_argument(f'user-agent="{user_agent}"') - 将生成的随机 User-Agent 添加到 Chrome 浏览器选项中。

  8. driver = webdriver.Chrome(options=chrome_options) - 使用指定的选项启动 Chrome 浏览器。

  9. script = """ ... """ - 定义一个 JavaScript 脚本,用于修改 navigator.webdriver 属性。

  10. driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {"source": script}) - 使用 Chrome DevTools Protocol (CDP) 的命令,在每个新页面加载时执行指定的 JavaScript 脚本,从而修改 navigator.webdriver 属性。这可以用于绕过一些反爬虫机制。

相关推荐
ZKNOW甄知科技4 分钟前
数智同行:甄知科技2026年Q1季度回顾
运维·服务器·人工智能·科技·程序人生·安全·自动化
跨境麦香鱼8 分钟前
Playwright vs Puppeteer:2026自动化任务与爬虫工具如何选?
运维·爬虫·自动化
北京耐用通信14 分钟前
不换设备、不重写程序:耐达讯自动化网关如何实现CC-Link IE转Modbus TCP的高效互通?
人工智能·科技·物联网·网络协议·自动化·信息与通信
志栋智能24 分钟前
超自动化巡检:实现运维“事前预防”的关键拼图
大数据·运维·网络·人工智能·机器学习·自动化
John_ToDebug1 小时前
惰性绑定 vs 立即注入:Chromium 扩展 API 初始化策略深度对比
c++·chrome·v8
代码的乐趣2 小时前
支持selenium的chrome driver更新到147.0.7727.56
chrome·python·selenium
A_QXBlms2 小时前
客户管理自动化,用API构建智能标签体系
运维·自动化
源创力环形导轨2 小时前
源创力环形导轨:±0.05mm高精度闭环传动,重构柔性智造新范式
人工智能·自动化·环形导轨·环形导轨输送线·源创力科技
rainbow7242442 小时前
零库存管理实操:传统仓管到AI供应链规划师的自动化补货与路径优化SOP
运维·人工智能·自动化
linglan4282 小时前
APPium环境配置
appium·自动化