使用脚本自动修改 Google Analytics 统计的JS文件,上传到又拍云加速 Google Analytics 统计,解决统计JS文件间接性无响应导致的网站加载缓慢。
原理
写一个Shell脚本定期抓取 Google Analytics 的JS文件,将里面的官方的采集域名(www.google-analytics.com)替换成 Nginx 反代理的域名;然后使用 Nginx 反代理(www.google-analytics.com)即可。需要注意的是如果使用的 CDN 需要能获取到前端正确的 IP 地址否则抓取的信息会不正确。
Nginx 获取前端 IP 可参考: Nginx如何在使用类似CloudFlare的CDN加速服务后还能正常获取客户端的真实IP地址
安装又拍云 UPX
先创建一个又拍云云储存

创建云储存时新建一个授权操作员下载又拍云命令管理工具

选择合适的版本上传到服务器
/usr/local/bin
并赋予执行权限反代理 Google Analytics
具体的配置本文不在复述,按需修改并将复制至 server 代码块即可
## Google Analytics 反代理 ################################################################################ set $upstream_endpoint <https://www.google-analytics.com>; location /analytics { access_log off; limit_req zone=ConnLimitZone burst=10 nodelay; #防盗链 #valid_referers none blocked *.hscbook.com *.cloudrw.com; valid_referers www.hscbook.com; if ($invalid_referer) { return 403; } #反代理 resolver 8.8.8.8 8.8.4.4; rewrite ^/analytics/(.*)$ /$1?$args&uip=$remote_addr; #proxy_pass <https://ssl.google-analytics.com>; proxy_pass $upstream_endpoint; proxy_set_header User-Agent $http_user_agent; break; } ################################################################################ ## END
替换 analytics.js 的域名
执行
nano /usr/local/bin/google_analytics
将下方内容完全输入并修改相关参数后赋予执行权限注意将下方的 “#替换域名(域名替换处)” 修改为你反代理的域名地址
#!/bin/bash #重试次数 retry=10 #创建的又拍云云储存名称 bucket=domefile #操作员账号 operator=dome #操作员密码 password=password #又拍云绑定的加速域名 upurl=domefile.b0.upaiyun.com #存放在又拍云的路径,结果输出:<https://domefile.b0.upaiyun.com/static/js/analytics.js> upfile=static/js/analytics.js #程序文件 upyun=/usr/local/bin/upx #临时文件夹 cache=/tmp/upyun #初始化 new=0 updata=0 success=0 frequency=0 sudo wget -q <https://www.google-analytics.com/analytics.js> -O $cache/primary_analytics.js #更新又拍云数据 dataup() { sleep 1s curl -s <http://v0.api.upyun.com/$bucket/$upfile> -o $cache/upyun_analytics.js -u $operator:$password if [ $? != 0 ]; then echo "Error: Download analytics.js Fail" exit 1 fi # 判断云上文件是否与更新文件一致 diff -q $cache/upyun_analytics.js $cache/analytics.js > /dev/null if [ $? != 0 ] then #不一致则更新 curl -s -T $cache/analytics.js <http://v0.api.upyun.com/$bucket/$upfile> -u $operator:$password if [ $? != 0 ]; then echo "Error: Upload analytics.js Fail" exit 1 fi $upyun purge <https://$upurl/$upfile> > /dev/null if [ $? != 0 ]; then echo "Warning: Refresh analytics.js Fail" fi let frequency+=1; else #一致则退出循环 success=1 fi } #替换域名(域名替换处) sed "s/www.google-analytics.com/a.dome.com\\/analytics/g" $cache/primary_analytics.js > $cache/analytics.js #登陆又拍云 $upyun login $bucket $operator $password > /dev/null #数据更新循环 while ((success == 0)) do # 限制最大重试次数 if [ "$retry" != "$frequency" ] then dataup else $upyun logout > /dev/null echo "Error: Upload analytics.js Overtime" exit 1 fi done #退出 $upyun logout > /dev/null echo "INFO: Upload analytics.js Success" exit 0
执行
/usr/local/bin/google_analytics
一切顺利的话会最后控制台会显示 "INFO: Upload analytics.js Success"这时在浏览器访问 “https://又拍云加速域名/static/js/analytics.js” 可正常访问到 JS 文件。
此外将网站的跟踪代码修改为 “https://又拍云加速域名/static/js/analytics.js” 即可正常使用