简单介绍
基于浏览器驱动的自动化操作浏览器工具, 用于运维测试也可用于爬虫。
操作流程 |
安装使用
安装Python版本的selenium
pip install selenium
查看Chrome版本,浏览器输入 chrome://version/
下载对应浏览器版本的驱动程序
PS:驱动版本选择最接近的(大版本一致就行)。Chrom
- 淘宝镜像下载
- 官方下载
Edge -> Microsoft Edge WebDriver
FireFox -> Releases · mozilla/geckodriver (github.com)
解压到特定目录,方便调用
.\drivers\
快速测试
使用
webdriver_manager
会直接从网络下载最新版驱动, 不用手动去处理
安装依赖
pip install selenium webdriver-manager packaging |
测试代码
from selenium import webdriver |
初始化
from selenium import webdriver |
配置文件
依需求进行配置使用, 详细配置在下文
# 浏览器标头 |
驱动路径配置
import platform |
常用设置
配置以
Chrom
为主
设置隐式等待
brower.implicitly_wait(10)
无头模式
# Headless
options.add_argument('--headless')隐身模式
options.add_argument('incognito')
浏览器语言
# lang
options.add_argument('lang=en_US')禁用图片加载
# Disable image loading
prefs = { 'profile.managed_default_content_settings.images': 2 }
options.add_experimental_option("prefs", prefs)设置User-Agent
# UA
options.add_argument(f'user-agent={UA}')设置代理
# Proxy
options.add_argument(f'--proxy-server={PROXY}')设置缓存
# Cache data
options.add_argument(f'--user-data-dir={CACHE_DIR}')设置窗口大小
# resize
options.add_argument('window-size=1500,1200')
# or
options.add_argument('window-size=1500x1200')窗口最大化
options.add_argument('start-maximized')
全屏
options.add_argument('kiosk')
隐藏滚动条(有可能无效)
options.add_argument('--hide-scrollbars')
禁用gpu渲染
options.add_argument('--disable-gpu')
禁用
JavaScript
# Disable JS
option.add_argument('--disable-javascript')禁用浏览器弹窗
# Disable the browser popover
prefs = {
'profile.default_content_setting_values' : {
'notifications' : 2
}
}
options.add_experimental_option('prefs',prefs)取消自动化提示
options.add_argument('disable-infobars')
关闭日志输出(保持控制台干净)
# Close logs
options.add_experimental_option('excludeSwitches', ['enable-logging'])
浏览器特征隐藏
隐藏驱动标识
# Delete "navigator.webdriver" property |
puppeteer
使用puppeteer
前端框架隐藏模拟浏览器的指纹特征的JS
项目地址 -> 🚪
stealth.min.js
文件生成, 需安装好node.js
环境, 不挂代理速度会很慢
# 执行以下语句,会在当前文件夹生成stealth.min.js文件 |
又或者直接下载现成的, 相关仓库
https://raw.githubusercontent.com/requireCool/stealth.min.js/main/stealth.min.js
加载JS到浏览器
# 执行隐藏驱动特征JS |
进入 https://bot.sannysoft.com 测试效果
brower.get('https://bot.sannysoft.com/') |
异常处理
未知报错, 没有报错信息
...
raise exception_class(value)
selenium.common.exceptions.WebDriverException: Message:我这里是因为权限不足导致, 使用管理员权限运行程序即可.