selenium - 拒绝加载脚本“xyz.js”,因为它违反了 ChromeDriver Chrome 无头 Selenium 的以下内容安全策略指令
问题描述
我正在使用无头 chrome 运行 selenium 并收到错误拒绝加载图像,因为它违反了以下内容安全策略指令。我正在解析第三方网址。那么我需要在 selenium 中设置什么更改或选项来消除错误。
解决方案
内容安全政策
内容安全策略是一种工具,开发人员可以使用该工具以各种方式锁定其应用程序,降低跨站点脚本等内容注入漏洞的风险,并降低其应用程序执行的权限。
CSP 并不是针对内容注入漏洞的第一道防线。相反,CSP 最适合用作纵深防御。它减少了恶意注入可能造成的危害,但它不能替代仔细的输入验证和输出编码。
内容安全策略指令
根据内容安全策略指令以减轻跨站点脚本攻击的风险,Web 开发人员应包括规范脚本和插件来源的指令。他们可以通过包括:
- script -src和object-src指令,或
- 一个default-src指令
在任何一种情况下,开发人员都不应在其策略中包含'unsafe-inline'
或data:
作为有效来源。两者都通过允许将代码直接包含在文档本身中来启用 XSS 攻击;最好完全避免它们。
Chrome 内容安全政策
为了缓解一大类潜在的跨站脚本问题,Chrome 的扩展系统纳入了内容安全策略 (CSP) 的一般概念。这引入了一些相当严格的策略,默认情况下将使扩展更加安全,并为您提供创建和执行规则来管理可以由您的扩展和应用程序加载和执行的内容类型的规则。
通常,CSP 用作您的扩展加载或执行的资源的阻止/允许列表机制。为您的扩展程序定义一个合理的策略使您能够仔细考虑您的扩展程序所需的资源,并要求浏览器确保这些是您的扩展程序可以访问的唯一资源。这些策略提供了超出您的扩展请求的主机权限的安全性;它们是额外的保护层,而不是替代品。
在 Web 上,此类策略是通过 HTTP 标头或元元素定义的。在 Chrome 的扩展系统内部,两者都不是合适的机制。相反,扩展的策略是通过扩展的manifest.json文件定义的,如下所示:
{
...,
"content_security_policy": "[POLICY STRING GOES HERE]"
...
}
解决方案
- 创建新的Chrome 配置文件
- 浏览到Disable Content-Security-Policy并永久添加到 Chrome的扩展页面。
在启动脚本时使用相同的自定义Chrome 配置文件和扩展程序:
from selenium import webdriver from selenium.webdriver.chrome.options import Options options = Options() options.add_argument("user-data-dir=C:\\Users\\user_name\\AppData\\Local\\Google\\Chrome\\User Data\\Profile 2") driver = webdriver.Chrome(executable_path=r'C:\path\to\chromedriver.exe', chrome_options=options) driver.get("https://www.google.co.in")
tl; 博士
推荐阅读
- pytorch - 具有共享分类的 VGG:RuntimeError:/pytorch/aten/src/THCUNN/generic/ClassNLLCriterion.cu:15 不支持多目标
- sql - SQL窗口函数和运行总计
- contact-form - 如何将联系人表单中的输入发送到特定邮箱?
- kubernetes - 指向 ExternalName 服务的 GKE Ingress 不起作用
- keycloak - 使用 keycloak 进行谷歌身份验证
- javascript - 如何使用 x-init 使用 AlpineJS 设置下拉选项的“选定”属性
- c# - 如何在 EF6 中创建外键
- c# - 使用 DocumentFormat.OpenXml 从数据库中填充阿拉伯语/英语文本的 Word 文档
- google-bigquery - Google BigQuery/Cloud Storage 无效的源 uri 前缀错误
- amazon-web-services - Fargate 服务 CPU 在重新部署后跳跃或下降