使用脚本自动修改 Google Analytics 统计的JS文件,上传到又拍云加速 Google Analytics 统计,解决统计JS文件间接性无响应导致的网站加载缓慢。

原理

写一个Shell脚本定期抓取 Google Analytics 的JS文件,将里面的官方的采集域名替换成 Nginx 反代理的域名,然后使用 Nginx 反代理官方的采集域名即可。需要注意的是如果使用的 CDN 需要能获取到前端正确的 IP 地址否则抓取的信息会不正确。

Nginx 获取前端 IP 可参考: Nginx如何在使用类似CloudFlare的CDN加速服务后还能正常获取客户端的真实IP地址

安装又拍云 UPX

先创建一个又拍云云储存

创建又拍云云储存

创建云储存时新建一个授权操作员

新建授权操作员

下载又拍云命令管理工具

Linux 64位 Linux 32位 Github UPX

选择合适的版本上传到服务器 /usr/local/bin 并赋予执行权限

反代理 Google Analytics

具体的配置本文不在复述,按需修改并将复制至 server 代码块即可

1
## Google Analytics 反代理
2
################################################################################
3
set $upstream_endpoint https://www.google-analytics.com;
4
   location /analytics {
5
       access_log off;
6
	limit_req zone=ConnLimitZone burst=10 nodelay;
7
	#防盗链
8
	#valid_referers none blocked *.hscbook.com *.cloudrw.com;
9
	valid_referers www.hscbook.com;
10
	if ($invalid_referer) {  return 403;  }
11
	#反代理
12
	resolver 8.8.8.8 8.8.4.4;
13
	rewrite ^/analytics/(.*)$ /$1?$args&uip=$remote_addr;
14
	#proxy_pass https://ssl.google-analytics.com;
15
	proxy_pass $upstream_endpoint;
16
	proxy_set_header User-Agent $http_user_agent;
17
	break;
18
}
19
   ################################################################################
20
## END

替换 analytics.js 的域名

执行nano /usr/local/bin/google_analytics 将下方内容完全输入并修改相关参数后赋予执行权限

注意将下方的 “#替换域名(域名替换处)” 修改为你反代理的域名地址

1
#!/bin/bash
2
3
#重试次数
4
retry=10
5
#创建的又拍云云储存名称
6
bucket=domefile
7
#操作员账号
8
operator=dome
9
#操作员密码
10
password=password
11
#又拍云绑定的加速域名
12
upurl=domefile.b0.upaiyun.com
13
#存放在又拍云的路径,结果输出:https://domefile.b0.upaiyun.com/static/js/analytics.js
14
upfile=static/js/analytics.js
15
#程序文件
16
upyun=/usr/local/bin/upx
17
#临时文件夹
18
cache=/tmp/upyun
19
20
#初始化
21
new=0
22
updata=0
23
success=0
24
frequency=0
25
sudo wget -q https://www.google-analytics.com/analytics.js -O $cache/primary_analytics.js
26
27
#更新又拍云数据
28
dataup() {
29
  sleep 1s
30
  curl -s http://v0.api.upyun.com/$bucket/$upfile -o $cache/upyun_analytics.js -u $operator:$password
31
  if [ $? != 0 ]; then
32
    echo "Error: Download analytics.js Fail"
33
    exit 1
34
  fi
35
  # 判断云上文件是否与更新文件一致
36
  diff -q $cache/upyun_analytics.js $cache/analytics.js > /dev/null
37
  if [ $? != 0 ]
38
  then 
39
    #不一致则更新
40
    curl -s -T $cache/analytics.js http://v0.api.upyun.com/$bucket/$upfile -u $operator:$password
41
    if [ $? != 0 ]; then
42
      echo "Error: Upload analytics.js Fail"
43
      exit 1
44
    fi
45
    $upyun purge https://$upurl/$upfile > /dev/null
46
    if [ $? != 0 ]; then
47
      echo "Warning: Refresh analytics.js Fail"
48
    fi
49
    let frequency+=1;
50
  else 
51
    #一致则退出循环
52
    success=1
53
  fi
54
}
55
56
#替换域名(域名替换处)
57
sed "s/www.google-analytics.com/a.dome.com\/analytics/g" $cache/primary_analytics.js > $cache/analytics.js
58
#登陆又拍云
59
$upyun login $bucket $operator $password > /dev/null
60
#数据更新循环
61
while ((success == 0))
62
  do
63
    # 限制最大重试次数
64
    if [ "$retry" != "$frequency" ]
65
      then
66
        dataup
67
      else
68
        $upyun logout > /dev/null
69
        echo "Error: Upload analytics.js Overtime"
70
        exit 1
71
    fi
72
  done
73
#退出
74
$upyun logout > /dev/null
75
echo "INFO: Upload analytics.js Success"
76
exit 0

执行/usr/local/bin/google_analytics一切顺利的话会最后控制台会显示 “INFO: Upload analytics.js Success”

这时在浏览器访问 “https://又拍云加速域名/static/js/analytics.js” 可正常访问到 JS 文件。

此外将网站的跟踪代码修改为 “https://又拍云加速域名/static/js/analytics.js” 即可正常使用