'''
Python 3.7
selenium==3.141.0
urllib3==1.26.2
Chromium 109.0.5405.0 (32 位)
'''
# -*- coding: UTF-8 -*-
'''
ChromeOptions 是一个方便控制 chrome 启动时属性的类。通过 selenium 的源码,可以看到,
ChromeOptions 主要提供如下的功能:
(1) 设置 chrome 二进制文件位置 (binary_location)
(2) 添加启动参数 (add_argument)
(3) 添加扩展应用 (add_extension, add_encoded_extension)
(4) 添加实验性质的设置参数 (add_experimental_option)
(5) 设置调试器地址 (debugger_address)
'''
from selenium import webdriver
CHROME_PATH = r"xxx\chrome.exe" # 手动指定使用的浏览器位置
CHROMEDRIVER_PATH = r'xxx\chromedriver.exe' # 谷歌浏览器驱动地址
options = webdriver.ChromeOptions()
# 1 设置 chrome 二进制文件位置 (binary_location)
options.binary_location = CHROME_PATH
# 2 添加启动参数 (add_argument)
options.add_argument('lang=zh_CN.UTF-8') # 启动时设置默认语言为中文 UTF-8
options.add_argument("--start-maximized") # 启动浏览器,最大化
options.add_argument('--headless') # 设置无界面浏览
options.add_argument('--ignore-certificate-errors') # 忽略证书报错
options.add_argument("--incognito") # 配置隐私模式
options.add_argument('--window-size=1366,768') # 指定浏览器分辨率
options.add_argument('--disable-gpu') # 谷歌文档提到需要加上这个属性来规避bug
options.add_argument('--hide-scrollbars') # 隐藏滚动条, 应对一些特殊页面
options.add_argument('blink-settings=imagesEnabled=false') # 不加载图片, 提升速度
options.add_argument('--headless') # 浏览器不提供可视化页面. linux下如果系统不支持可视化不加这条会启动失败
options.add_argument('--no-sandbox') # 以最高权限运行
options.add_argument("--disable-javascript") # 禁用JavaScript
options.add_argument('--user-data-dir=C:\\Users\\Administrator\\AppData\\Local\\Google\\Chrome\\User Data') # 设置 用户目录
# options.add_argument('--user-data-dir=C:/Users/Administrator/AppData/Local/Google/Chrome/User Data') # 设置 用户目录
options.add_argument('--user-agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36"') # 设置 user-agent
# 设置代理
proxy = '127.0.0.1:8080'
options.add_argument('--proxy-server=%s' % proxy)
options.add_argument('--proxy-server={0}'.format(proxy))
# 3 添加扩展应用 (add_extension, add_encoded_extension)
# options.add_extension('d:\crx\AdBlock_v2.17.crx') # 添加crx插件
# 4 添加实验性质的设置参数 (add_experimental_option)
options.add_experimental_option("detach", True) # 不关闭网页
options.add_experimental_option("excludeSwitches", ["enable-automation"]) # Chrome正受到自动测试软件的控制
options.add_experimental_option("useAutomationExtension", False) # 请停用以开发者模式运行的扩展程序
down_load_path = r'C:\Users\Downloads'
prefs = {
"credentials_enable_service": False, # 关掉密码弹窗
"profile.password_manager_enabled": False, # 关掉密码弹窗
"profile.managed_default_content_settings.images": 2, # 禁止加载图片
"download.default_directory": down_load_path, # 设置默认下载路径(绝对路径)
"profile.default_content_settings.popups": 0, # 禁止弹出窗口
"profile.default_content_setting_values.automatic_downloads": 1, # 允许多文件下载
}
options.add_experimental_option("prefs", prefs)
options.add_experimental_option("debuggerAddress", "127.0.0.1:9222")
driver = webdriver.Chrome(executable_path=CHROMEDRIVER_PATH, options=options)
driver.get("https://www.baidu.com")
print(driver.title)
'''
# selenium + chrome 环境下禁止视频请求 禁止播放视频 阻止请求
# urls 数组可以自定定义要阻止的url 注意在文档中标注着实验性
driver.execute_cdp_cmd("Network.setBlockedURLs",{ "urls":["*.flv*","*.png","*.jpg*","*.jepg*","*.gif*"]})
# 官方文档地址 :
https://chromedevtools.github.io/devtools-protocol/tot/Network/#method-setBlockedURLs
'''