我用chrome driver 通过chrome打开一个网页,他会自动帮我打开https的,但是这个站点https会报错,我想强制打开http的,如何实现? 我发现 Preferences里面配置http_allowed + 我的站点就可以实现,如何程序自动实现这个配置? 还是说有其他办法吗?
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
def configure_chrome_for_http():
# 创建 Chrome 选项对象
chrome_options = Options()
# 方法1: 使用 preferences 设置允许 HTTP
prefs = {
"profile.default_content_settings.popups": 0,
"profile.content_settings.exceptions.automatic_downloads.*.setting": 1,
"profile.default_content_setting_values.notifications": 2,
"profile.managed_default_content_settings.images": 1,
"profile.default_content_settings.cookies": 1,
"profile.managed_default_content_settings.javascript": 1,
"profile.managed_default_content_settings.plugins": 1,
"profile.managed_default_content_settings.popups": 2,
"profile.managed_default_content_settings.geolocation": 2,
"profile.managed_default_content_settings.media_stream": 2,
"profile.default_content_setting_values.automatic_downloads": 1,
"profile.content_settings.exceptions.http_allowed": {
"https://your-site.com:443,*": {
"last_modified": "13377768014006403",
"setting": {
"decision_expiration_time": "13379064014006394"
}
}
}
}
chrome_options.add_experimental_option("prefs", prefs)
# 方法2: 添加命令行参数来忽略证书错误
chrome_options.add_argument('--ignore-certificate-errors')
chrome_options.add_argument('--ignore-ssl-errors')
chrome_options.add_argument('--allow-insecure-localhost')
# 方法3: 禁用 web 安全性(不推荐用于生产环境)
chrome_options.add_argument('--disable-web-security')
# 创建 WebDriver 实例
service = Service('path_to_chromedriver') # 替换为你的 chromedriver 路径
driver = webdriver.Chrome(service=service, options=chrome_options)
return driver
# 使用示例
def example_usage():
driver = configure_chrome_for_http()
try:
# 使用 http 而不是 https
driver.get("http://your-site.com") # 替换为你的网站URL
# 进行其他操作...
finally:
driver.quit()
if __name__ == "__main__":
example_usage()
我提供了三种主要方法来处理这个问题:
- 使用 preferences 配置(你提到的方法):
- 通过
add_experimental_option("prefs", prefs)
设置,可以允许特定域名使用 HTTP - 需要在 prefs 字典中设置 “http_allowed” 列表
- 通过
- 使用命令行参数:
- 添加忽略证书错误的参数
- 这种方法更简单,但可能不够精确
- 禁用 web 安全性:
- 这是最激进的方法,不建议在生产环境中使用
- 只适合在开发测试环境中使用
建议优先使用第一种方法,因为它更安全且可控。你只需要将代码中的 “your-site.com” 替换为你的实际域名即可。
需要注意的是,强制使用 HTTP 可能会带来安全风险,建议只在开发环境中使用,或者确保在受控的网络环境中使用。