You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Python Selenium访问Chrome开发者工具Security面板?

获取Chrome DevTools Security面板安全信息的实现方法

现有代码仅配置了浏览器控制台日志的抓取权限,要拿到HTTPS连接状态、TLS证书状态这类Security面板的信息,不需要模拟打开DevTools点击对应标签,直接通过Chrome DevTools Protocol(CDP)调用Chrome内置的Security域接口,即可拿到和面板展示完全一致的数据,Selenium 4+版本原生支持CDP调用。

Security面板参考

Chrome DevTools Security面板展示效果

原有控制台日志抓取参考代码

from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
import time

yoururl = "test_url"

caps = DesiredCapabilities.CHROME
caps['goog:loggingPrefs'] = {'browser': 'ALL'}
# driver = webdriver.Chrome(desired_capabilities=caps)
driver = webdriver.Chrome('path_of_chromedriver', desired_capabilities=caps)

driver.get(yoururl)
time.sleep(5) # wait for all the data to arrive.
for log in driver.get_log('browser'):
    print(log)
driver.close()

改造后支持安全信息抓取的代码

前置要求:安装Selenium 4及以上版本,旧版本无原生CDP支持,需要额外引入第三方CDP客户端库,不推荐使用。
改造逻辑为通过CDP启用Security域,监听安全状态变更事件,页面加载完成后主动拉取全量安全详情,原有控制台日志抓取逻辑可完全保留:

from selenium import webdriver
import time

yoururl = "test_url"
chrome_driver_path = "path_of_chromedriver"

# 初始化浏览器,保留原有控制台日志抓取配置
options = webdriver.ChromeOptions()
options.set_capability('goog:loggingPrefs', {'browser': 'ALL'})
driver = webdriver.Chrome(executable_path=chrome_driver_path, options=options)

# 如需测试自签名证书等异常场景,可放开下面注释忽略证书错误
# driver.execute_cdp_cmd("Security.setIgnoreCertificateErrors", {"ignore": True})

# 启动CDP会话,启用Security域
driver.execute_cdp_cmd("Security.enable", {})

security_info = {}
# 定义安全状态变更回调,实时捕获状态变化
def capture_security_state(params):
    security_info["connection_state"] = params.get("securityState")
    security_info["state_summary"] = params.get("summary")
    security_info["security_issues"] = params.get("securityStateIssueIds")

# 注册安全状态事件监听
driver.add_cdp_listener("Security.securityStateChanged", capture_security_state)

driver.get(yoururl)
time.sleep(5)

# 主动拉取当前页面的证书详情、连接安全信息
visible_security_detail = driver.execute_cdp_cmd("Security.getVisibleSecurityState", {})
security_info["certificate_detail"] = {
    "cert_raw_data": visible_security_detail.get("certificate"),
    "cert_trust_status": visible_security_detail.get("securityState"),
    "cert_transparency_status": visible_security_detail.get("sct"),
    "mixed_content_status": visible_security_detail.get("mixedContentType"),
}

# 原有控制台日志打印逻辑保留
print("=== 浏览器控制台日志 ===")
for log in driver.get_log('browser'):
    print(log)

print("\n=== 页面安全信息 ===")
print(f"HTTPS连接状态: {security_info.get('connection_state')}")
print(f"安全状态说明: {security_info.get('state_summary')}")
print(f"检测到的安全问题: {security_info.get('security_issues')}")
print(f"TLS证书核心信息: {security_info.get('certificate_detail')}")

driver.quit()

返回字段说明

  • 连接状态判断:securityState返回secure即为合法可信的HTTPS连接,其余值分别对应证书过期、域名不匹配、混合内容、证书不受信等异常场景,和Security面板顶部的彩色状态提示完全对应
  • 证书信息:certificate字段返回DER编码的证书原始内容,可通过pyOpenSSL等证书解析库提取签发机构、有效期、公钥算法、SAN域名匹配列表等全量证书字段
  • 状态匹配:所有返回字段和Security面板展示的「连接安全状态」「证书有效性」「资源安全状态」三类信息一一对应,不需要额外做映射转换

内容的提问来源于stack exchange,提问作者AHua Hsu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 15:36:24