Selenium 基于浏览器自动化模块

Selenium 基于浏览器自动化模块

什么是 Selenium?

假设你想开辆车,可懒得亲自坐进去踩油门换挡,那你就需要一个机器人帮你搞定一切,Selenium 就是这样的机器人。它负责浏览器的自动化操作,帮你完成一系列繁琐的网页操作。

PhantomJS 是啥玩意?

想象一下,一辆车竟然没有车窗和座椅,里面黑漆漆一片,这就是 PhantomJS,无可视化界面的浏览器。不过,老伙计已经退休了,咱不再用它。

Selenium 的基本操作

要想用好这个机器人,先得搞定它的操作手册和驾驶员。

谷歌无头浏览器配置

无头浏览器就是没有车窗的车,但还是能跑起来。

python 复制代码
from selenium import webdriver
from selenium.webdriver.chrome.options import Options  # 导入无头浏览器模块

# 创建一个对象,用来控制 Chrome 以无界面模式打开
chrome_options = Options()
chrome_options.add_argument('--headless')  # 浏览器隐藏
chrome_options.add_argument('--disable-gpu')  # 禁用 GPU

# 创建浏览器对象
driver = webdriver.Chrome(options=chrome_options)

火狐无头浏览器配置

火狐版的无头汽车也能上路。

python 复制代码
from selenium import webdriver
from selenium.webdriver.firefox.options import Options  # 导入无头浏览器模块

# 创建一个对象,用来控制 Firefox 以无界面模式打开
firefox_options = Options()
firefox_options.add_argument('--headless')  # 浏览器隐藏
firefox_options.add_argument('--disable-gpu')  # 禁用 GPU

# 创建浏览器对象
driver = webdriver.Firefox(options=firefox_options)

规避网站的"狗狗"检测

如今的大网站可精了,它们可以嗅出你是不是在用机器人(Selenium)访问它们。正常用浏览器访问淘宝时,控制台 window.navigator.webdriver 的值是 undefined,但用 Selenium 就变成 true

解决方案

不要怕,我们有办法让 "狗狗" 闻不出来。在启动 Chrome 之前,为它坐个"整形手术",设定实验性功能参数 excludeSwitches 成 [enable-automation],具体操作如下:

python 复制代码
from selenium import webdriver
from selenium.webdriver import ChromeOptions  # 需要导入的类

# 创建 option 对象
option = ChromeOptions()
option.add_experimental_option('excludeSwitches', ['enable-automation'])

# 创建浏览器对象
driver = webdriver.Chrome(options=option)

# 打开网页
driver.get('https://www.taobao.com/')

Chrome 79 及以后版本的特别操作

Chrome 79 版本之后,有点调皮了,我们需要一点特别的操作把它的"怪癖"掩盖起来。

python 复制代码
from selenium import webdriver

driver = webdriver.Chrome(r'C:\Path\To\chromedriver.exe')  # 修改为 Chromedriver 的实际路径
url = 'https://www.taobao.com/'

# 让 Selenium 访问时 window.navigator.webdriver 返回 undefined
driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {
  "source": """
    Object.defineProperty(navigator, 'webdriver', {
      get: () => undefined
    });
  """
})

# 打开网页
driver.get(url)

看吧,这样传"驾驶秘籍",操作机器人浏览器简直 So Easy,规避网站检测也是小菜一碟!

相关推荐
一水鉴天5 小时前
整体设计 定稿 之23 dashboard.html 增加三层次动态记录体系仪表盘 之2 程序 (Q199 之1)
人工智能·架构·自动化
2501_924064117 小时前
如何测试接口最大并发量及推荐实用工具
测试工具
嘻哈baby7 小时前
Ansible自动化运维入门:从手工到批量部署
运维·自动化·ansible
玩转数据库管理工具FOR DBLENS8 小时前
DBLens:开启数据库管理新纪元——永久免费,智能高效的国产化开发利器
数据结构·数据库·测试工具·数据库开发
科立分板机源头厂家8 小时前
第51集科立分板机:选择适合PCB板切割的全自动激光分板机?
自动化·分板机·激光分板机·科立分板机·pcb分板机
微尘hjx9 小时前
【目标检测软件 01】YOLO识别软件功能与操作指南
人工智能·测试工具·yolo·目标检测·计算机视觉·ai·pyqt
测试人社区-小明9 小时前
洞察金融科技测试面试:核心能力与趋势解析
人工智能·科技·面试·金融·机器人·自动化·github
掌心向暖RPA自动化10 小时前
如何用影刀RPA自动化采集小红书作品评论?支持"视频图文+折叠评论"采集
经验分享·自动化·新媒体运营·rpa·影刀rpa
纪伊路上盛名在10 小时前
文献阅读自动化1-批量检索、更新文献
python·自动化·文献阅读·科研日常·流程化
测试人社区-千羽11 小时前
Apple自动化测试基础设施(XCTest/XCUITest)面试深度解析
运维·人工智能·测试工具·面试·职场和发展·自动化·开源软件