
当使用 playwright 访问 https 网站(尤其是自签名证书或证书配置异常的站点)时,常因 ssl 证书校验失败抛出 “ssl peer certificate or ssh remote key was not ok” 错误;通过启用 `ignore_https_errors=true` 可安全绕过证书验证,适用于开发与测试场景。
在 Playwright 中,ignore_https_errors=True 是一个关键上下文(BrowserContext)级配置选项,它允许浏览器忽略 TLS/SSL 证书验证错误(如证书过期、域名不匹配、自签名证书等),从而正常加载目标页面。但需注意:该选项仅作用于 browser.new_context() 或 browser.new_page() 创建的上下文/页面级别,而非 browser.launch() 阶段,因此必须在创建上下文时显式传入。
以下是修正后的完整示例代码(适配 WebKit、Chromium 和 Firefox):
import asyncio
from playwright.async_api import async_playwright
async def main():
async with async_playwright() as p:
# 推荐使用 Chromium 或 Firefox 进行 HTTPS 调试(WebKit 对某些证书策略更严格)
browser = await p.chromium.launch(headless=False)
# ✅ 关键:在 new_context 中启用 ignore_https_errors
context = await browser.new_context(ignore_https_errors=True)
page = await context.new_page()
try:
await page.goto("https://minha.anem.dz/pre_inscription", timeout=30000)
print("✅ 页面加载成功")
# 可继续执行截图、元素操作等
# await page.screenshot(path="success.png")
except Exception as e:
print(f"❌ 加载失败: {e}")
finally:
await browser.close()
asyncio.run(main())⚠️ 重要注意事项:
- ignore_https_errors=True 仅用于非生产环境(如本地开发、CI 测试、内部系统调试)。生产环境务必使用有效证书,禁用此选项以保障通信安全。
- WebKit 引擎对证书策略较为严格,若仍报错,建议优先切换至 p.chromium 或 p.firefox —— 它们对 ignore_https_errors 的支持更稳定。
- 若目标站点实际使用的是 HTTP(如 http://minha.anem.dz/...),请确认 URL 协议是否拼写正确;HTTP 站点不会触发 SSL 错误,此时报错可能源于 DNS 解析、网络拦截或代理配置问题。
- 如需全局忽略(不推荐),可通过启动参数传递 --unsafely-treat-insecure-origin-as-secure 和 --user-data-dir 等 Chromium 特有 flag,但 ignore_https_errors=True 已覆盖绝大多数场景,简洁且跨浏览器兼容。
总结:该错误本质是 Playwright 默认启用严格 TLS 校验所致,一行配置 ignore_https_errors=True 即可高效解决,是自动化测试中处理测试环境 HTTPS 证书问题的标准实践。
立即学习“Python免费学习笔记(深入)”;










