谷歌分析 - 无法加载资源:http://www.google-analytics.com/ga.js

109

我已经注意到Chrome控制台上有这个错误一段时间了:

enter image description here

我修改了谷歌的脚本,以便记录错误,因为它使用了try{} catch{},这就是我得到的结果:

enter image description here

我还没有注意到统计数据有明显的变化,它总是上下波动。

而且,不仅是我的网站,而是到处都是这种情况。我没有找到错误报告或其他类似的东西。

如果我在浏览器中访问http://www.google-analytics.com/ga.js,它会正常加载。

有人知道是什么原因导致这种情况吗?


2
你是否在代理服务器或防火墙后面? - shanabus
4
如果您尝试直接在浏览器中打开http://www.google-analytics.com/ga.js,会发生什么?这听起来可能是因为您在本地HOSTS文件中阻止或重定向了google-analytics.com。 - mike
32
请检查您是否使用了AdBlock或其他可能会阻止Google Analytics加载的工具。 - travis-146
是的。我禁用了AdBlock,现在它可以正常加载了。没想到这个,谢谢 :) - Nahuel
3
使用VPN时出了问题,关闭VPN后问题解决了。 - nilsi
其他使用ABP的用户仍将阻止您的数据发送。我在这里设计了一个解决方法:http://kennystechtalk.blogspot.com/2016/03/adblockanalytics.html - Ken Sharp
8个回答

197

问题出在AdBlock上。我将其禁用后,现在可以正常加载。

yagudaev建议(请参阅下面的答案),为了防止AdBlock阻止Google Analytics,您需要编辑提供的片段并默认明确使用https://而不是协议相对URL。这意味着更改

'//www.google-analytics.com/analytics.js'

'https://www.google-analytics.com/analytics.js'

例如:

<script>
  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');

  ga('create', 'UA-XXXXX-XX', 'auto');
  ga('send', 'pageview');
</script>

3
但他们允许在Gmail中投放广告,AdBlock怎么了,WTF。 - Nick Shvelidze
6
这句话的意思是,谷歌分析(GA)不计算使用广告拦截软件的人数。 - Adam Pietrasiak
1
@AdamPietrasiak 是的,它的确很遗憾。 :( 一些地区的过滤器列表包含完全阻止GA,GTM和所有很棒的Google工具的规则...即使您在GA中使用实验,也不会运行MVT测试(A / B测试)。我无法理解为什么这对人们(最终是过滤器列表维护者)有好处...普通用户不会配置白名单和任何其他设置...他们只会安装插件...然后我们只是在统计数据中失去了数据。 - Sas Sam
1
这将完全没有任何影响。该域名已被阻止,因此更改协议是毫无意义的。 - Ken Sharp
3
确实,Ken。不幸的是,即使我将http更改为https,我仍然可以在浏览器的调试控制台(chrome + adBlock plus)中看到以下内容:GET https://www.google-analytics.com/analytics.js net::ERR_BLOCKED_BY_CLIENT - ovi
显示剩余5条评论

8
这可能是由于您的hosts文件引起的问题,以下是我的hosts文件内容:
$ grep -ni "google-analytics.com" /etc/hosts
6203:# 127.0.0.1  ssl.google-analytics.com #[disabled = Firefox issues]
6204:127.0.0.1  www.google-analytics.com #[Google Analytics]

就是这样。不知道它最初是怎么进去的,但是删除它起作用了。 - Chris Bloom

4

3
你遇到问题的原因是AdBlock只有在脚本没有经过https时才会阻止它。注意到你得到的错误包含了一个http:协议引用。
你所需要做的就是更改片段,通过添加显式协议来强制它通过ssl连接而不是默认的协议相对url。
<script>
  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');

  ga('create', 'UA-XXXXX-XX', 'auto');
  ga('send', 'pageview');
</script>

这实际上是一个很好的提示,可以避免丢失使用AdBlock的用户的统计数据。由于已经有一个被接受的答案,我会将您的提示添加到其中。谢谢! - Nahuel
4
HTTPS并没有任何区别。被封禁的是主机,而不是URL。 - Ken Sharp
1
确实如此,肯恩。不幸的是,即使我将http更改为https,我仍然可以在浏览器的调试控制台中看到以下内容:GET https://www.google-analytics.com/analytics.js net::ERR_BLOCKED_BY_CLIENT - ovi

2

2019更新

现在这个问题已经非常普遍了。

解决方法

  1. 要求人们取消对您网站的封锁(从个人经验来看,这是一个坏主意)
  2. 本地托管Google Analytics脚本(这是个坏主意),因为Google官方这么说 HERE

从Google服务器引用JavaScript文件(即https://www.googletagmanager.com/gtag/js),可以确保您在报告中获得最准确的数据,并及时获取新功能和产品更新。

  1. 使用服务器端分析。这是如今人们所做的。如果您使用node.js,则可以使用像analyticsuniversal-analytics这样的库。

2

这个错误通常是由于安装在Chrome中的某个扩展程序之一引起的。在此处有几种方法可以调试和解决ERR_BLOCKED_BY_CLIENT消息。

  • 禁用扩展程序。
  • 将域名加入白名单。
  • 调试问题。

我建议您在如何解决ERR_BLOCKED_BY_CLIENT中查找更多详细信息。


1
我在使用Firefox的Disconnect扩展程序时,将该域名加入白名单后问题得到了解决。 - codeinaire

1
我之前在浏览器上也遇到类似的情况。
你是不是用 Google 账号登录了 Chrome?或者你有没有选择退出 Google Analytics 的数据收集?
或许是 Google 记住了这个选项,在你登录时将其应用到了 Chrome。
顺便说一句,我可以正常打开 http://www.google-analytics.com/ga.js,只是自动加载时无法使用。

5
是 AdBlock 的问题,我已将其禁用,现在可以正常加载了。 - Nahuel

0

确保 Fiddler(或类似的代理)未激活。


1
Windscribe还可以阻止Google Analytics。 - Ben Gubler

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接