本站承诺永不接任何虚假欺骗、联盟广告、弹窗广告、病毒广告、诱导充值等影响用户体验的广告,广告屏蔽插件会影响本站部分功能,还请不要屏蔽本站广告,感谢支持!

当前位置:首页 / 正文

2023-01-13 | 骚操作 | 727 次阅读 | 等你评论 | 1 次点赞 | 繁体

目前可以选择的免费网站统计越来越少,有很多人选择自建统计,但是自建统计需要维护,所以尝试使用了 Google Analytics 作为网站统计工具。

图片alt

因为众所周知的原因,Google Analytics 在中国大陆访问不是很顺畅,并且很多国产浏览器都自带广告拦截插件,导致谷歌统计后台统计的数据与实际差距很大。

那么有没有什么更好的方案呢?有的,那就是使用中间件进行反代(前提是服务器本身在能够流畅访问谷歌统计的国家或地区)。

解析

首先为了成功反向代理,需要向配置块中添加 DNS 解析,用于请求谷歌的接口,一般情况下用 127.0.0.1 就可以使用,但是为了防止部分机房的 DNS 请求篡改可以使用自定义 DNS 进行解析。

# CloudFlare Public DNS (IPv4 & IPv6)
#resolver 1.1.1.1 1.0.0.1 [2606:4700:4700::1111] [2606:4700:4700::1001];
# Google Public DNS (IPv4 & IPv6)
resolver 8.8.8.8 8.8.4.4 [2001:4860:4860::8888] [2001:4860:4860::8844];

根据情况选择一个开启即可。

处理

然后添加反向代理的主逻辑,添加两个 location 将请求进行转发,并且使用 sub_filter 模块进行内容重写。

    location /gtm.js {
        sub_filter 'www.googletagmanager.com' $server_name;
        sub_filter_types *;
        sub_filter_once off;
    
        proxy_set_header Accept-Encoding '';
        proxy_pass https://www.googletagmanager.com;
        proxy_redirect off;
    
        # cache on server
        proxy_cache_key $host$uri$is_args$args;
        proxy_cache_valid 200 304 60m;
    
        # cache in client browser
        expires 1h;
    }
    
    location /gtag/js {
        sub_filter 'www.googletagmanager.com' $server_name;
        sub_filter 'analytics.google.com'  $server_name;
        sub_filter 'www.google-analytics.com'  $server_name;
        sub_filter 'google-analytics.com'  'wangtwothree.com';
        sub_filter 'www'  'ga';
        
        sub_filter_types *;
        sub_filter_once off;
    
        proxy_set_header Accept-Encoding '';
        proxy_pass https://www.googletagmanager.com;
    
        proxy_redirect off;
        proxy_cache_key $host$uri$is_args$args;
        proxy_cache_valid 200 304 60m;
    
        expires 1h;
    }
    
    location /ga {
        proxy_set_header X-real-ip $remote_addr;
        rewrite ^/ga/(.*)$ '/$1?$args&uip=$remote_addr';
        proxy_pass https://www.google-analytics.com;
        proxy_set_header User-Agent $http_user_agent;
        break;
    }
    
    location ^~ /analytics.js {
        sub_filter 'www.googletagmanager.com' '$server_name';
        sub_filter 'analytics.google.com'  $server_name;
        sub_filter 'www.google-analytics.com'  '$server_name/ga';
        sub_filter_types *;
        sub_filter_once off;
        proxy_set_header X-real-ip $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Referer https://www.google-analytics.com;
        proxy_set_header Host www.google-analytics.com;
        proxy_pass https://www.google-analytics.com;
        proxy_set_header Accept-Encoding "";
    }

    location /g/collect {
        resolver 8.8.8.8;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        proxy_pass https://analytics.google.com$uri$is_args$args&uip=$remote_addr;
        proxy_redirect off;
        proxy_cache_key $host$uri$is_args$args;
        proxy_cache_valid 200 304 60m;
        proxy_cache off;

        proxy_hide_header "Expires";
        proxy_hide_header "Pragma";
        add_header X-Content-Type-Options "nosniff";
    }

然后在配置文件中加入以上部分,然后在前端引用地址时,将地址换为你的域名后面接谷歌统计引入脚本地址,比如:https://wangtwothree.com/gtag/js?id=G-CVJJJJJJJJ

然后就可以在后台看到统计脚本的访问日志了。

比如 Google Analytics 管理后台生成的嵌入代码如下:

<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-xxxxxxxxx-x"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());

gtag('config', 'UA-xxxxxxxxx-x');
</script>

则你添加的代码就应该是这样的:

<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://wangtwothree.com/gtag/js?id=UA-xxxxxxxxx-x"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());

gtag('config', 'UA-xxxxxxxxx-x');
</script>

VIA

使用 NGiNX 异步处理 Google Analytics 加速访问 - VVavE
https://www.vvave.net/archives/nginx-forward-google-analytics-optimized-loading-speed.html

使用Nginx反向代理解决 Google Analytics 访问问题 - 知乎
https://zhuanlan.zhihu.com/p/460606188

标签: nginxgoogle骚操作教程代理

猜你喜欢
typecho使用文件缓存加快打开速度
typecho 是一个伪静态的博客系统,如果不使用缓存,每次打开页面都会查询数据库,访问人数多了以后服务器压力倍增。但是,typecho 是一个 php 的程序,我们可以利用 php 将实时页面...
白嫖移动,联通,电信手机短信通知
无论在生活中或者工作中,对于一些比较紧急的事情,可能需要发送个通知!比如:自建的服务器突然宕机,如何自动发短信通知运维主管?后台服务日志大量报错如何第一时间发短信通知码农geigei?类似的情景...
Fail2Ban安装使用及常用配置教程
Fail2Ban安装使用教程因为作为一个 linux 入门级别的小白, 很多人都会把一些 web 面板(比如宝塔面板)作为自己管理 vps 的首选, 而当我一段时间登录宝塔面板之后, 有时就会看...
通用的检测到广告屏蔽插件进行弹窗提示实现方法
用的 js 方法来检测,按理说所有博客都能使用,就是在打开网页的时候进行一次判断。如果发现没有加载广告代码,就会出来一个弹窗来提示浏览者将本站加到广告拦截插件的白名单里面。别喷我,个人站长经营实...
如何找回微信已过期文件教程
现在基本人人都会使用微信,微信里面保存着很多文件。但是过段时间去看,你可能由于当时没有保存或者根本就没有点开过,微信文件名称显示红色,这表示已经过期了。难道我们要再问别人重发一遍吗?这可能会有点...
javascript | 原生JS多语言切换简单实现
由于项目需要实现一个前端的多语言切换,不想因为一个简单的功能就引入 jQuery,所以经过 google 编程大法摸索出一个原生 JS 就可以实现的多语言前端切换的小例子,仅供参考。<bo...
NUC8黑苹果更新OpenCore引导教程
鉴于本人的苹果笔记本年代久远,又想用最新的系统,所以早早就入手了 NUC8,并且成功安装了 macOS,使用 OC 引导,由最初的 macOS Catalina 10.15.7 陆续升级到了 m...
局域内网的服务器利用个人电脑做跳板机访问互联网
公司内网的服务器均不连公网(互联网),问题来了:现在服务器上需要安装一些软件怎么办?目前一般都是编译安装!先将软件在外网机器上下载好,然后再复制到服务器内,编译安装!这种方式缺点就是比较麻烦,编...
ssh-chat- SSH命令行下聊天摸鱼服务
ssh-chat 是一个使用 Go 语言编写的定制 SSH 服务器,当你连到该服务器时就会进入聊天模式,就好像以前的终端 BBS 系统一样。官方 Github: https://github.c...
t.cn 新浪短链接的api,不需要登录
网上有很多的短链接转换器,但是苦于没有api 所以这里给大家提供一个 t.cn 新浪短链接的 api,不需要登录,不需要 appid # 先贴代码 ``` #coding=utf-8
(首次提交评论需审核通过才会显示,请勿重复提交)