【问题标题】:Relaxing Chrome's CSP while running tests (webdriver) (Content-Security-policy)在运行测试时放宽 Chrome 的 CSP (webdriver) (Content-Security-policy)
【发布时间】:2019-04-17 15:45:40
【问题描述】:
我正在尝试在使用 proctractor(webdriver、chromedriver)运行测试时放松 Chrome 的 CSP。
所以解决方案可以是
- 根据我的搜索结果,类似“--disable-csp”的标志不存在。
- webdriver/protractor 的设置。
我找不到任何解决方案,只能设置一个过滤标头的代理。
有什么想法吗?
【问题讨论】:
标签:
javascript
selenium
webdriver
selenium-chromedriver
content-security-policy
【解决方案1】:
目前没有原生选项,但您可以使用扩展禁用 CSP。
步骤:
- 下载扩展Disable Content-Security-Policy
- 另存为
.zip,因为需要修改才能在启动时启用“禁用CSP”
- 解压文件或者使用Winrar双击文件
background.js编辑
- 将
var isCSPDisabled = false; 更改为true
- 保存更改。
代码
chrome_options = Options()
chrome_options.add_extension('path/to/disableCSP.zip') # or disableCSP.xpi
driver = webdriver.Chrome(chrome_options=chrome_options)
【解决方案2】:
我更新@ewwink 的答案
- 转到扩展开发者的网站Disable CSP github
- 以 zip 格式下载扩展代码
- 解压并修改 background.js 文件:
var isCSPDisabled = function (tabId) {
return true; // disabledTabIds.includes(tabId);
};
- 在 Chrome 中转到:
... -> 工具 -> 扩展 -> 激活开发者模式 -> 打包扩展...
选择修改后的文件夹作为根目录 -> 将字段:私钥文件留空 -> 这将在扩展文件夹旁边创建一个 .crx 文件,以及一个私钥,就像它是开发人员一样
- 像这样使用生成的 crx 文件:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_extension("/path/to/chrome-csp-disable-master.crx")
driver = webdriver.Chrome(executable_path="/path/to/chromedriver", options=chrome_options)
driver.get("https://www.google.com/")
来源:Load chrome extension using selenium