首先,看看使用 Cloudflare Worker 代理另一个 URL 是多么容易
addEventListener("fetch", (event) => {
event.respondWith(
fetch("https://css-tricks.cn")
);
});
它没有任何错误处理或任何东西,但嘿,它可以工作

现在想象一下,一些网站如何为您提供 JavaScript 的 URL 来执行任务。 CodePen 为我们的嵌入式 Pens 功能执行此操作。

该 URL 是
https://cpwebassets.codepen.io/assets/embed/ei.js
我可以像这样轻松地代理该 URL

不做任何特殊操作,它甚至会提供正确的 content-type
标头等等

Cloudflare Workers 为您提供了他们的 URL,这非常不错,但您也可以非常轻松地在您自己的网站上将“添加路由”添加到 Worker。 所以,在这里,我将在 CSS-Tricks 上创建一个 URL 来提供该 Worker。 看,它就像它所说的一样

因此,现在,我可以做……。
<script src="/super-real-url/codepen-embeds.js"></script>
直接来自 css-tricks.com
,它将加载该 JavaScript。 它将看起来像第一方 JavaScript,但实际上它是代理的第三方 JavaScript。
为什么? 好吧,没有人会阻止您的第一方 JavaScript。 如果你有点狡猾,你可以用这种方式运行所有用于广告的脚本,以避免广告拦截器。 我对此有复杂的心情。 我觉得如果你想屏蔽广告,你应该能够屏蔽广告,而无需追踪特定网站上的特定脚本。 另一方面,代理一些第三方资源有时似乎还不错? 就像如果它是你自己的网站,你只是想绕过一些 CORS 问题......那将没问题。
更中间的是像分析这样的东西。 我最近在博客中写了 “比较 Google Analytics 和 Plausible Numbers”,我在其中讨论了 Plausible,这是一家第三方分析服务,“专为注重隐私的网站所有者构建”。 所以,你知道,理论上值得信赖,并且不是让人非常担忧的第三方 JavaScript。 但即便如此,它也无法真正帮助网站访问者,并且属于分析的广泛类别,因此我可以看到它进入了封锁列表,从而随着越来越多的人屏蔽它,随着时间的推移,您会获得更少准确的信息。

但正如我们所谈到的,很少有人会屏蔽第一方 JavaScript,因此代理理论上会提供更准确的信息。 事实上,他们有关于代理的文档。 它稍微复杂一些,而且我不太明白为什么,但嘿,它可以工作。
我已经将此代理作为测试执行。 因此,我现在拥有了仅使用直接来自第三方 JavaScript 的数据(来自上一篇文章)
指标 | Plausible(无代理) | Google Analytics |
---|---|---|
独立访客 | 973k | 841k |
页面浏览量 | 1.4m | 1.5m |
跳出率 | 82% | 82% |
访问时长 | 1 分 31 秒 | 1 分 24 秒 |
并且可以将其与使用代理的相同时间段进行比较
指标 | Plausible(代理) | Google Analytics |
---|---|---|
独立访客 | 1.32m | 895k |
页面浏览量 | 2.03m | 1.7m |
跳出率 | 81% | 82% |
访问时长 | 1 分 35 秒 | 1 分 24 秒 |
因此,代理确实强烈建议以这种方式执行会比即使是开箱即用的 Plausible 减少“阻止”。 根据未更改的 Google Analytics,测试的那一周比平时繁忙 6%¹。 我原本预计根据非代理设置的情况,本周将看到更多独立访客(即 116 万),但实际上我看到了 132 万,因此代理证明了与非代理设置相比,看到独立访客数量的稳定增长 13.8%。 将代理的 Plausible 设置与 Google Analytics 直接进行比较显示,独立访客数量增加了惊人的 32%。
在非代理设置中,与 Google Analytics 相比,我在 Plausible 上实际上看到了页面浏览量减少(-6.6%),但在代理设置中,我看到了页面浏览量增加 19.4%。 因此,这些数字非常不稳定,但对于 _这个网站_ 来说,它表明大约 20-30% 的用户阻止了 Google Analytics。
- 我一直觉得计算两个数字之间的百分比增长很令人困惑。 最终对我有效的方法是
(最终 - 初始) / 最终 * 100
。
这里是否有伦理考虑;绕过人们可能期望保护其隐私的阻止......如何在考虑这些因素的情况下应用它,允许某种选择加入/退出或作为隐私配置的一部分。
对于广告,拥有相同来源的代理不仅是狡猾的,正如您所提到的。 这是极其危险的,因为您将绕过所有跨源保护。 请不要这样做,永远不要。
虽然广告特别容易运行恶意代码,但最好一般情况下避免这种情况。
是的,这不是一个好主意。 除了在您的来源上隐藏广告的明显狡猾之外,这还是一个正在等待发生的 XSS 攻击向量,它完全访问您的 JS 本地数据,并且没有 CORS 保护。
抱歉,但如果脚本是第三方脚本,它也将具有完全访问权限;不是吗?
我可以看到这在开发环境中有一些非常有用的用例。 但在生产环境中,它确实非常狡猾。
CORS 存在是有原因的,而这完全否定了它。 糟糕的想法。
好主意,更好的用户跟踪总是一件好事,虽然广告部分可能是一个安全问题,但可以将其降到最低,这取决于网站。
与之类似的是,GA4 通过 Google Tag Manager 提供服务器端跟踪。 值得一试。
我认为广告跟踪在代理时不起作用。
我使用过 Amazon Lambda,但尚未使用过这些 Workers。
好文章,非常感谢!
我读到的一篇相关文章是
https://webdev.ac.cn/efficiently-load-third-party-javascript/
特别是最后两节。
我不理解文章中关于安全问题的评论。
写评论的人可以详细说明安全问题,并提供真实的示例。
在安全方面,我并没有看到第一方脚本和第三方脚本之间的区别