safari原生不支持油猴脚本常规注入,因其强制遵守网站csp策略;若控制台出现“refused to execute inline script”且来源为userscript,即确认是csp拦截;绕过需adguard修改响应头、violentmonkey+stp或换用chrome/edge/firefox。

你在 Safari 浏览器里装好了 Tampermonkey 扩展,也成功导入了用户脚本,但打开目标网页后脚本毫无反应,连控制台都看不到任何日志——这不是脚本写错了,而是 Safari 对内容安全策略(CSP)的执行逻辑与其他浏览器根本不同。
确认 Safari 是否真能运行油猴脚本
首先明确一点:Safari 【原生不支持】 油猴脚本的常规注入方式。它不像 Chrome 或 Edge 那样允许扩展绕过网站的 CSP 策略。一旦目标网站设置了 script-src 'self' 或更严格的 CSP 头,Tampermonkey 就会被直接拦截,脚本连执行入口都没有。
这并非插件没装好、脚本没启用,而是 Safari 的底层安全模型决定的——它强制扩展遵守网页声明的安全策略,而绝大多数网站(如 GitHub、Notion、有道云笔记)恰恰启用了这类限制。
验证脚本是否被 CSP 阻止
打开目标网页 → 按 Cmd+Option+I 呼出开发者工具 → 切换到 Console 标签页 → 刷新页面。
在 Linux 上通过 Chrome 挂载/VNC 自动发布小红书长笔记。Agent 撰写标题和正文后执行 xhs_publish.sh --publish --submit,触发小红书发布。
如果看到类似 Refused to execute inline script because it violates the following Content Security Policy directive 的红色报错,且来源标注为 userscript 或 Tampermonkey,就【100%确认是 CSP 导致】。此时无论你改 @match、调 @run-at、清缓存、重装插件,全都无效。
注意:这个报错不会出现在其他浏览器的控制台里,因为它们根本不检查 CSP 是否允许用户脚本注入。
绕过 CSP 的可行路径
目前没有 Safari 官方认可的、无需额外工具的绕过方案。所有“有效方法”都依赖外部干预:
方法一:用 AdGuard Desktop 代理修改响应头
在 macOS 上安装 AdGuard Desktop → 开启“过滤器”→ 启用“移除 CSP 头”规则 → 重启 Safari。该方式会全局剥离网页的 Content-Security-Policy 响应头,使 Tampermonkey 获得注入权限。但需付费订阅高级功能,且对隐私敏感用户存在风险。
方法二:换用 Violentmonkey + Safari 技术预览版
下载 Safari Technology Preview(官方测试版)→ 安装 Violentmonkey 扩展(比 Tampermonkey 更激进地尝试绕过 CSP)→ 在 Violentmonkey 设置中开启“Inject into content scripts”选项。部分用户反馈此组合在 STP 中可触发脚本,但稳定性差,且 STP 不适合日常使用。
方法三:彻底放弃 Safari,改用支持 CSP 绕过的浏览器
Chrome、Edge、Firefox 均默认忽略 CSP 对用户脚本的限制。只需安装 Tampermonkey,脚本即可正常运行。这是目前唯一稳定、免费、无需调试的解决方案。










