最近一段时间,我在Google Analytics(以下简称GA)中查看网站数据时,发现一个非常可疑的信息:

这什么鬼?

“language”这一项一般是 “zh-tw”, “zh-cn”, “en-us”, “es”, “fr”等,它是由用户浏览器设定的。但用户浏览器不可能把语言项设置为这些:

Secret.ɢoogle.com You are invited! Enter only with this ticket URL. Copy it. Vote for Trump!

o-o-8-o-o.com search shell is much better than google!

Vitaly rules google ☆:。゜゚・ヽ(^ᴗ^)ノ・゜゚。:☆ ¯_(ツ)/¯(ಠ益ಠ)(ಥ‿ಥ)(ʘ‿ʘ)ლ(ಠಠლ)( ͡° ͜ʖ ͡°)ヽ(゚Д゚)ノʕ•̫͡•ʔᶘ ᵒᴥᵒᶅ(=^ ^=)oO

Congratulations to Trump and all americans

分析请求

很明显,这是一种新的 spam(垃圾信息),希望吸引目标人群(可能就是我们这样的网络管理员)的注意力。

仔细地观察这些请求,会发现几个特点:

  1. 请求数有明显的波峰,在几天内会达到高峰,然后又降下去
  2. New Sessions 的比例非常高,达到了86%以上

分析其它受攻击的栏目

仔细查看 GA 统计项目的这些请求,发现 referrer 一栏也比较可疑地出现了这些:

motherboard.vice.com addons.mozilla.org webmasters.stackexchange.com blackhatworld.com thenextweb.com abc.xyz lifehacĸer.com ...

这其中有一些非常正规的域名。比如abc.xyz是Google的母公司alphabet的官网,thenextweb.com也是一个开发者媒体。

这些网站本身没有问题,但其实该网站上并没有任何一个链接指向我的博客,更谈不上我的访客“来自”(referral)该网站了。当我访问回去,发现并没有实际上的链接,只是广告,倒也罢了,更可怕的是可能会有钓鱼、病毒等。

综上,这是一波二维攻击(假的语言项和假的 referral 项),目的是吸引你的注意力。

分析攻击怎么产生的

总的来说,这种垃圾信息有两种攻击方式。一种是真正会访问你的网站的网络爬虫;另一种是不访问你的网站,而是将假冒的“点击”事件直接发送到GA服务器。事实上,第二种攻击方式由于成本低,因而更加常见。

GA 的统计逻辑是,当用户访问你的网站,会在前端运行一段 JavaScript 代码,然后把用户的一些访问情况通过 HTTP 请求发送给 GA 服务器,告诉 GA 发生了一次“访问”。而这个 HTTP 请求可以很容易地被伪造,所以垃圾信息发送者无需真的访问你的站点,它直接发送大量 HTTP 请求即可达到目的。

除了 HTTP 请求,GA 还支持更方便的Measurement Protocol ,开发者可以发送一个原始数据(raw data)给GA,来一次性传输大量用户行为。这个协议的初衷是让开发者可以统计所有环境下的用户行为,比如开发者可以将离线状态下的用户行为记录下来,当在线时一次性发送。或者当内网不支持外部访问时,先记录下用户行为,随后再定时一次性发送到 GA。

初衷是好的,不幸的是,这个过程仍然是无需认证身份,所以更方便了垃圾信息发送者。垃圾信息发送者可以通过一次请求即发送大量假数据,他只需要得到你的 UA-ID(UA-XXXXXXX-XX)即可。

在这个原始数据包中,一切皆可伪造。Hostname?没问题!Referral?全改了!URL path?当然也可以改……

如何避免

对网站主来说,这种垃圾信息有几点危害:1、浪费时间,就像传统垃圾邮件一样。2、干扰 GA 状态栏,特别是如果网站流量不是很大(比如我)。3、传播病毒。

所以,有没有完美的解决方法呢?实际上,没有。

要知道,数据一旦录入到 GA,就没有办法删掉了。能做的只有两件事,一是阻止垃圾信息进一步加入到 GA,二是在视图中过滤掉已经添加进来的垃圾信息,眼不见为净。

第一步:使用过滤器阻止未来的垃圾信息

在语言项中,一般字符数是5-6个,很少有超过10个的,所以我们可以认为语言项超过15个字符的就一定是垃圾信息。

此外,有一些字符是不可能出现在合法的语言项中,但垃圾信息会利用这些字符来组成URL,比如: “secret google com”, “secret,google,com”, “secret!google!com”,所以我们也一并排除空格、点号、逗号、惊叹号。

.{15,}|\s[^\s]*\s|\.|,|\!|\/

在admin中选择Filter,然后新增一个如图所示的过滤器即可。

设置好了之后,可以验证一下是否会拦截掉我们想拦截的内容:

没有问题,未来的语言项垃圾信息会直接被拦截掉。

第二步:通过Segment净化已有数据

过滤器从你开始设置时生效,而历史信息无法修改。不过 GA 提供了 custom segment 功能,在生成报告时,选择性过滤掉一些数据。

Segment 就是数据片段,指的是在完整的数据中取出我们需要的片段进行分析。比如我们可以单独取出24岁以下的用户的行为,对比24岁以上的用户行为有何不同。而这个功能正好可以让我们把“语言”不规范的数据过滤掉。

如下图,在All Users的旁边有一个 + Add Segment 的按钮,点击之后就可以配置我们的 segment。

一定要注意是选择“does not match regex”,里面填上之前的正则。

创建好了新的 segment 之后,就会看到过滤之后的全新报告。

下次再进入时,又会默认进入到 All Users 视图,这时可以在 All Users 里的 custom 里找到我们的自定义 segment,勾选即可。

如果经常需要查看这个 segment,推荐点击 shortcut 来新增快捷方式。

它会保存当前的 segment 和排序等,下一次可以直接从 Short 项目进入到这个快捷目录。

以上就是完整的过滤方法了,这样应该可以过滤掉大部分语言spam的攻击。GA提供的 filter 和 segment 的功能很强大,如果后续发现有新的垃圾信息,可以继续通过今天学习的方法来更新完善我们的过滤器。

参考资料: Language Spam – The Latest Google Analytics SpamGuide to Removing Referrer Spam in Google Analytics


相关推荐

面向未来的跨界开发技术(上)

面向未来的跨界开发技术(下)


此文已由作者授权腾讯云技术社区发布,转载请注明文章出处,获取更多云计算技术干货,可请前往腾讯云技术社区

欢迎大家关注腾讯云技术社区-博客园官方主页,我们将持续在博客园为大家推荐技术精品文章哦~

Google分析language垃圾信息的更多相关文章

  1. Scroll Depth – 衡量页面滚动的 Google 分析插件

    Scroll Depth 是一个小型的 Google Analytics(谷歌分析)插件,可以让你衡量用户在页面上滚动了多远.它可以监控 25%.50%.75% 和 100% 四个滚动点,并发送谷歌分 ...

  2. 使用Spark分析拉勾网招聘信息(一):准备工作

    本系列专属github地址:https://github.com/ios122/spark_lagou 前言 我觉得如果动笔,就应该努力地把要说的东西表达清楚.今后一段时间,尝试下系列博客文章.简单说 ...

  3. 根据google地图抓去全国信息- 抓去全国小区以及新建楼盘信息

    本案例由于google每天每个账户能post20000次所以我们需要相对较长的时间来抓去google的数据信息. 主要思路:通过一定的zoom一个相对较大的zoom.我们尽可能的搜索我们的所有数据. ...

  4. 使用Spark分析拉勾网招聘信息(四): 几个常用的脚本与图片分析结果

    概述 前一篇文章,已经介绍了BMR的基础用法,再结合Spark和Scala的文档,我想应该是可以开始你的数据分析之路的.这一篇文章,着重进行一些简单的思路上的引导和分析.如果你分析招聘数据时,卡在了某 ...

  5. 使用Spark分析拉勾网招聘信息(二): 获取数据

    要获取什么样的数据? 我们要获取的数据,是指那些公开的,可以轻易地获取地数据.如果你有完整的数据集,肯定是极好的,但一般都很难通过还算正当的方式轻易获取.单就本系列文章要研究的实时招聘信息来讲,能获取 ...

  6. 使用Spark分析拉勾网招聘信息(三): BMR 入门

    简述 本文,意在以最小的篇幅,来帮助对大数据和Spark感兴趣的小伙伴,能尽快搭建一个可用的Spark开发环境.力求言简意赅.文章,不敢自称BMR的最佳实践,但绝对可以帮助初学者,迅速入门,能够专心于 ...

  7. 获取Google音乐的具体信息(方便对Google音乐批量下载)

    Google音乐都是正版音乐, 不像百度所有都是盗链, 并且死链也多. 但有一个麻烦就是要下载Google音乐的时候得一个一个的点击下载链接, 进入下载页面再点"下载", 才干下载 ...

  8. xtrabackup原理、备份日志分析、备份信息获取

    一. xtrabackup备份恢复工作原理: extrabackup备份简要步骤 InnoDB引擎很大程度上与Oracle类似,使用redo,undo机制,XtraBackup在备份的时候,以read ...

  9. WEB安全之垃圾信息防御措施

    防止垃圾评论与机器人的攻击手段如下: 1)IP限制.其原理在于IP难以伪造.即使是对于拨号用户,虽然IP可变,但这也会大大增加共攻击的工作量. 2)验证码.其重点是让验证码难于识别,对于“字母+数字” ...

随机推荐

  1. BZOJ-2768: [JLOI2010]冠军调查(超级裸的最小割)

    2768: [JLOI2010]冠军调查 Time Limit: 10 Sec  Memory Limit: 128 MB Description 一年一度的欧洲足球冠军联赛已经进入了淘汰赛阶段.随着 ...

  2. js_DOM操作

    嗯,大过年的上次更新应该还是在,大年30前一天,说好的一天更一篇,感觉食言了,虽然没有更,但是,每天还是坚持在学习的,所以今天的任务就是把这几天学的都发上来. 博客,我觉得不仅仅是交流知识的地方,我宁 ...

  3. Superwebsocket 模拟微信聊天室

    在园子里潜水几年了,工作以来算是有些积累,突然想写点东西方便以后温故而知新,希望自己能够坚持下去. 关于Superwebsocket的介绍我就不多说了,请点击:http://www.cnblogs.c ...

  4. Ubuntu 14.04 64bit 系统下打开PHPadmin时出现缺少mysqli|mysql 扩展的解决方法(php5)

    网上找了很多方法,都是翻来覆去的抄袭. 都在说把 /etc/php5/apache2/php.ini 下面的  ;extension=php_mysqli.dll  前面的 ; 注释符号去掉 再重启 ...

  5. SQL语句的优化建议

    重中之重---语句执行顺序   我们先看看语句的执行顺序 如果我没记错这是<SQL SERVER 2005技术内幕--查询>这本书的开篇第一章第一节.书的作者也要让读者首先了解语句是怎么样 ...

  6. Sublime Text 3 修改插件安装位置【sublime text、插件路径、Data】

    直接切入正题,在享受Sublime 插件给我们带来开发效率的同时,有些插件的文件也是很大的,但是插件默认安装的位置是AppData的目录[C:\Users\用户名\AppData\Roaming\Su ...

  7. js设计模式--单体模式

    GOF里的23种设计模式, 也是在软件开发中早就存在并反复使用的模式. 如果程序员没有明确意识到他使用过某些模式, 那么下次他也许会错过更合适的设计 (这段话来自<松本行弘的程序世界>). ...

  8. gridView 单元格绑定不同控件方法

    1.主要代码: private void Form3_Load(object sender, EventArgs e) { DataTable dt = new DataTable(); dt.Col ...

  9. css伪元素用法大全

    本文主要讲解css伪元素的用法,有需要的朋友可以阅读此文.本文讲解的伪元素有:before,after. 什么是伪元素(Pseudo element)? 伪元素不是真正的元素,不存在与文档之中,所以j ...

  10. .Net异步编程知多少

    1. 引言 最近在学习Abp框架,发现Abp框架的很多Api都提供了同步异步两种写法.异步编程说起来,大家可能都会说异步编程性能好.但好在哪里,引入了什么问题,以及如何使用,想必也未必能答的上来. 自 ...