修改组策略脚本 利用 Surge/QuantumultX 修改 HTTP “响应头” 以绕过网站
匹配请求的正则表达式:
https?:\/\/(www\.google)(\.\w{2,4}){1,2}\/(search\?|\?sa=|\?FORM)(?!.*?(apps=))
是否需要修改响应体:requires-body=1;
脚本位置:;
在示例中:Adblock4limbo.js 有什么用?对响应体/响应头进行一些列操作,如替换/删减/增加内容等等(遵循 JS ES6 语法);
Adblock4limbo.js 代码内容如下,较1月份的版本,我们新增了修改响应头(即response.headers)的操作:
let reg = '';


Adblock4limbo.js 遵循 Surge 使用手册 - 脚本 - HTTP 响应 部分书写;(注意样例使用了 JS ES6 语法。)
通过 Surge/QuanmultX 提供的方法,我们完成了 response.body(响应体)、response.headers(响应头)的修改、替换、删减、增加内容等操作;
$done({ headers, body })

即在系列修改/删减/替换后,将最终得到的内容(在这里指的是HTML文件)释放给用户端:浏览器,此时浏览器没有看到“响应头”(Response header)上有CSP数值,则不会对子资源加载进行限制,这时候我们嵌入的脚本和CSS文件则可以得到执行(生效);
参阅:浏览器工作原理;
II. 内容安全策略 ( CSP )

内容安全策略 (CSP) 是一个额外的安全层,用于检测并削弱某些特定类型的攻击修改组策略脚本,包括跨站脚本 (XSS (en-US)) 和数据注入攻击等。无论是数据盗取、网站内容污染还是散发恶意软件辅助卡盟,这些攻击都是主要的手段。 Via MDN;
配置内容安全策略涉及到添加 Content-Security-Policy HTTP 头部到一个页面修改组策略脚本,并配置相应的值,以控制用户代理(浏览器等)可以为该页面获取哪些资源。比如一个可以上传文件和显示图片页面,应该允许图片来自任何地方,但限制表单的 action 属性只可以赋值为指定的端点。一个经过恰当设计的内容安全策略应该可以有效的保护页面免受跨站脚本攻击。本文阐述如何恰当的构造这样的头部,并提供了一些例子。
III. 利用Surge/QuantumultX 修改“响应头”
JavaScript 代码如下:
let headers = $response.headers;
headers['Content-Security-Policy'] = '';
$done({ headers })

参阅: Surge - 使用手册,QuantumultX 同 Surge;
IV. 参考响应体是什么?

Surge 使用手册
应执行 $done 返回一个对象,可选包含三个字段:
body:使用该 body 覆盖原来的响应 body,仅当 requires-body=true 时有效
headers