注册 GA
首先 注册 GA(UA 以及 GA4 版本)https://analytics.google.com 。
创建账号 - 输入账号名称&勾选所有 - 显示高级选项,选择 同时创建 Google Analytics(分析)4 和 Universal Analytics 媒体资源,勾选 为 Google Analytics 4 媒体资源启用增强型衡量功能 - 选择公司规模,打算如何使用 Google Analytics(分析)勾选除其他之外的所有选项 - 创建
加速 GA
使用 Cloudflare Worker 加速访问速度 https://dash.cloudflare.com 。
新建 Worker 代码如下,保存后部署(可先提交部署后可修改):
addEventListener('fetch', (event) => {
// 这里可以加 filter
return event.respondWith(handleRequest(event));
});
// worker 应用的路由地址,末尾不加 '/',改为你 worker 地址
const DOMAIN = 'stat.blog.196000.xyz';
// 博客插入的js地址文件名,可自定义
const JS_FILE = 'ga.js'
// 响应上报的接口路径,可自定义,规避广告屏蔽插件拦截
const COLLECT_PATH = 'stat';
// 原 gtag 地址,将 G-XXX 改为你的 id
const JS_URL = 'https://www.googletagmanager.com/gtag/js?id=G-6JWRGNBF00'
// 下面不需要改
const G_DOMAIN = 'google-analytics.com';
const G_COLLECT_PATH = 'g\/collect';
async function handleRequest(event) {
const url = event.request.url;
if (url.match(`${DOMAIN}/${JS_FILE}`)) {
const requestJs = await (await fetch(JS_URL)).text();
const jsText = requestJs.replaceAll('\"www\"', '\"\"').replaceAll('.' + G_DOMAIN, DOMAIN).replaceAll(G_COLLECT_PATH, COLLECT_PATH);
return new Response(jsText, {
status: 200,
statusText: 'OK',
headers: {
'Content-Type': 'application/javascript',
},
});
} else if (url.match(`${DOMAIN}/${COLLECT_PATH}`)) {
const newReq = await readRequest(event.request);
event.waitUntil(fetch(newReq));
}
return new Response(null, {
status: 204,
statusText: 'No Content',
});
}
async function readRequest(request) {
const { url, headers } = request;
const body = await request.text();
const ga_url = url.replace(`${DOMAIN}/${COLLECT_PATH}`, `www.${G_DOMAIN}/${G_COLLECT_PATH}`);
const nq = {
method: 'POST',
headers: {
Host: 'www.google-analytics.com',
Origin: headers.get('origin'),
'Cache-Control': 'max-age=0',
'User-Agent': headers.get('user-agent'),
Accept: headers.get('accept'),
'Accept-Language': headers.get('accept-language'),
'Content-Type': headers.get('content-type') || 'text/plain',
Referer: headers.get('referer'),
},
body: body,
};
return new Request(ga_url, nq);
}
验证
对比直接访问 https://www.googletagmanager.com/gtag/js?id=G-6JWRGNBF00
和加速后地址 https://stat.blog.196000.xyz/ga.js
,在响应的 JS 里搜索 COLLECT_PATH 值,看是否成功替换。
页面添加统计代码
<!-- Google tag (gtag.js) -->
<!-- <script async src="https://www.googletagmanager.com/gtag/js?id=G-6JWRGNBF00"></script> -->
<!-- 对应 worker 里的 DOMAIN 和 JS_FILE,需要保持一致 -->
<script async src="https://stat.blog.196000.xyz/ga.js"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-6JWRGNBF00'); // 将 G-XXX 改为你的 id
</script>