SecurityInterstitialCommandId.CMD_PROCEED作用原理及SSL警告恢复方法咨询
关于Chrome SSL安全拦截页绕过命令的原理与恢复方案
sendCommand(SecurityInterstitialCommandId.CMD_PROCEED) 运行原理
当Chrome检测到站点SSL证书存在不可信问题(比如你测试使用的expired.badssl.com对应证书过期场景、wrong.host.badssl.com对应证书域名不匹配场景)时,会展示内置的安全拦截页(专业名称为Security Interstitial)。这个拦截页属于Chrome的特权页面,内置了专门的内部控制接口。
你执行的命令本质是向Chrome内核发送当前会话临时信任该站点异常证书的指令,Chrome会将该站点的临时豁免规则存储在当前浏览器会话的内存缓存中,只要浏览器没有完全关闭重启,后续访问该站点都会直接命中这个豁免规则,不再弹出安全警告。
恢复站点不安全警告的操作方案
你的猜想是正确的,清除站点数据确实可以恢复警告状态,常用的操作有两类:
- 手动操作方案
- 点击地址栏左侧的「不安全」标识,选择「站点设置」
- 点击页面底部的「清除数据」,也可以直接点击「重置权限」按钮
- 重启浏览器后再次访问目标站点,就会重新弹出SSL安全警告
如果不想单独操作单个站点,直接完全关闭Chrome所有进程后重启,内存中存储的所有临时证书豁免规则都会自动清空,所有站点都会恢复默认的证书校验逻辑。
- JS命令操作方案
目前Chrome没有对外暴露专门用于删除临时证书信任豁免的专属JS接口,你可以在目标站点的上下文打开控制台,执行以下命令清除该站点所有关联的本地存储数据,触发浏览器重新校验证书规则:
执行完成后再次访问站点,就会重新弹出SSL安全警告。如果需要快速测试,也可以直接打开Chrome隐身窗口访问目标站点,隐身窗口默认不会继承普通窗口的临时证书豁免规则,会直接弹出安全警告。// 清除站点所有缓存存储 await caches.keys().then(cacheNames => Promise.all(cacheNames.map(name => caches.delete(name)))); // 清除本地存储、会话存储 localStorage.clear(); sessionStorage.clear(); // 清除IndexedDB存储 indexedDB.databases().then(dbs => dbs.forEach(db => indexedDB.deleteDatabase(db.name))); // 强制硬刷新页面 location.reload(true);
内容的提问来源于stack exchange,提问作者Jerin
相关产品推荐
相关产品推荐

