Skip to content

[Develop] Add no CSP option#1264

Draft
cyfung1031 wants to merge 10 commits intorelease/v1.4from
develop/add-no-csp-option
Draft

[Develop] Add no CSP option#1264
cyfung1031 wants to merge 10 commits intorelease/v1.4from
develop/add-no-csp-option

Conversation

@cyfung1031
Copy link
Copy Markdown
Collaborator

Disable both CSP & TTP

好像可行的

你看看吧。加个按钮什么的 启动 / 停用 这条 rule 就行

@cyfung1031 cyfung1031 marked this pull request as draft February 17, 2026 04:02
@CodFrm
Copy link
Copy Markdown
Member

CodFrm commented Feb 17, 2026

可以,之前有打算的 #866 (comment)

@cyfung1031
Copy link
Copy Markdown
Collaborator Author

cyfung1031 commented Feb 17, 2026

做一個類似黑名單白名單的UI
不要像tampermonkey單純一個開關

用戶要清楚自己搞什麼
不讓開發者在userscript聲明
(開發者可用inject-into)

用戶需要時才加網域到名單

不使全域另一個考慮是,某些網站可能會self check看看使用者的環境有沒有問題 (例如銀行??)
Self check發現csp不見了可能會做成問題

@cyfung1031
Copy link
Copy Markdown
Collaborator Author

cyfung1031 commented Feb 17, 2026

名單,例如 github google等
寫了後就不管有沒有腳本適用都會移除csp

除非那個scriptcat開關關了

網域寫法要用乎合DNR的
DNR雖然不是regex但還是有一定彈性

@cyfung1031 cyfung1031 changed the base branch from release/v1.3 to release/v1.4 March 15, 2026 05:07
@CodFrm
Copy link
Copy Markdown
Member

CodFrm commented Mar 21, 2026

确实用白名单更好,不过也许应该要允许用户输入*来全部禁用?

@cyfung1031
Copy link
Copy Markdown
Collaborator Author

确实用白名单更好,不过也许应该要允许用户输入*来全部禁用?

可以的
用 RuleCondition 的 urlFilter 来做

https://developer.chrome.com/docs/extensions/reference/api/declarativeNetRequest#property-RuleCondition-urlFilter

@cyfung1031
Copy link
Copy Markdown
Collaborator Author

白名单 UI 做好后,改这个就行了

Screenshot 2026-03-22 at 4 55 46

@boommanpro
Copy link
Copy Markdown

当前CSP的进展是啥,我看管理端没有页面可以自由控制,技术方案是修改请求的响应头,也可以移除不只是CSP的限制,
image

方案

用户在 UI 创建规则 "移除 example.com 的 CSP"
        │
        ▼
CSPRuleService.createRule()
  → 保存到 IndexedDB
  → 发布 "cspRulesChanged" 消息
        │
        ▼
CSPInterceptorService 收到消息
  → 重新加载所有启用的规则
  → 按优先级排序
  → PatternMatcher 转换匹配模式
  → 生成 chrome.declarativeNetRequest.Rule[]
  → 调用 chrome.declarativeNetRequest.updateDynamicRules()
        │
        ▼
Chrome 网络引擎内部
  → 用户访问 example.com
  → 匹配到 urlFilter: "*://example.com/*"
  → 在响应到达渲染引擎前,移除 CSP 头
  → 浏览器收到的响应不再包含 CSP 限制
        │
        ▼
ScriptCat 注入的脚本正常执行 ✅

@boommanpro
Copy link
Copy Markdown

当前CSP的进展是啥,我看管理端没有页面可以自由控制,技术方案是修改请求的响应头,也可以移除不只是CSP的限制, image

方案

用户在 UI 创建规则 "移除 example.com 的 CSP"
        │
        ▼
CSPRuleService.createRule()
  → 保存到 IndexedDB
  → 发布 "cspRulesChanged" 消息
        │
        ▼
CSPInterceptorService 收到消息
  → 重新加载所有启用的规则
  → 按优先级排序
  → PatternMatcher 转换匹配模式
  → 生成 chrome.declarativeNetRequest.Rule[]
  → 调用 chrome.declarativeNetRequest.updateDynamicRules()
        │
        ▼
Chrome 网络引擎内部
  → 用户访问 example.com
  → 匹配到 urlFilter: "*://example.com/*"
  → 在响应到达渲染引擎前,移除 CSP 头
  → 浏览器收到的响应不再包含 CSP 限制
        │
        ▼
ScriptCat 注入的脚本正常执行 ✅

当然,我也不知道通过这种技术是不是会有chrome 商店无法上架的问题,可以一起讨论下,如果需要可以PR

@cyfung1031
Copy link
Copy Markdown
Collaborator Author

cyfung1031 commented Apr 11, 2026

@boommanpro 可以PR一下吧。感觉不错
移除CSP之类的是可以上架的。只要描述写清楚就可以

https://chromewebstore.google.com/search/remove%20csp?hl=
https://microsoftedge.microsoft.com/addons/search/remove%20csp?hl=

@cyfung1031
Copy link
Copy Markdown
Collaborator Author

cyfung1031 commented Apr 11, 2026

除了移除CSP之外还可以做什么??

Screenshot 2026-04-11 at 16 06 03

@boommanpro
Copy link
Copy Markdown

除了移除CSP之外还可以做什么??

Screenshot 2026-04-11 at 16 06 03

还可以修改成目标值,当然看后期是否要把这个改为modify header的功能,或者把某些plugin的转发功能集成。我先提个pr吧,大家可以先看看。

@boommanpro
Copy link
Copy Markdown

提交了:#1348
对了之前有聊到的云控,看是否需要纳入到后续开发中。

@CodFrm
Copy link
Copy Markdown
Member

CodFrm commented Apr 11, 2026

提交了:#1348 对了之前有聊到的云控,看是否需要纳入到后续开发中。

云控感觉更适合企业管理?感觉不是很合适,得思考一下

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants