ALEXA分析与作弊

80酷酷网    80kuku.com

1 Alexa排名
综合排名:也可以叫做绝对排名,即特定的一个网站在所有350多亿网站中的名次。Alexa每三个月公布一次新的网站综合排名。此排名的依据是用户链接数(Users Reach)和页面浏览数(Page Views)三个月累积的几何平均值。
Reach 值:每一百万网民中有多少人访问目标网站。安装Alex toolbar工具栏的机器上都有一个全球唯一的AlexaID,该值就是访问目标网站的AlexaID总数除以处于活动状态ID数后再乘1百万。也就是 说访问目标网站的AlexaID数越多,该网站的Reach值就越高。
Page Views:平均每个网民在目标网站上浏览了几个页面。每个AlexaID访问的页面数量越多,该值就越高
Traffic rank:网站流量在世界上的排名,可显示今日、本周内平均、3个月内平均的排名;以及三月来的变化。该值的计算公式从2004年10月起改为 reach的平方 × PageViews。这里可看出Reach值对总体排名的影响非常大。
变 化排行榜:每隔一段时间,alexa就会公布最近网站上升幅度和下降幅度的排名,如果某网站作弊严重,该网站很容易就会出现在排名中。实际上由于 alexa排名对国内需要融资的网站网站来说无比的重要,因此国内网站作弊的情况比较严重,目前Alexa已经封了很多国内网站。所以当我们调整 Alexa的排名时,需要小心增幅过大。最近中搜的上升幅度过大,就出现了中搜上升幅度排名第一的情况,这会使中搜变成出头鸟,被人怀疑作弊。

2 Alexa排名研究
Alexa对一个网站的评价主要有一下内容:
2.1 综合评价

主要是对网站的文字介绍,排名介绍和用户平均评级。相对百度来说,中搜的文字说明太少,而且不够专业;百度的用户评级为5星级,中搜则没有。中搜排名为478,百度排名为7,两者相差很远。
2.2 关联网站

这里描述了访问中搜网站的用户同时关心什么网站,可以看到访问中搜的人同时也看百度,但却没有google。相比之下访问百度的关联网站中却没有中搜。
列表影响方式:
在Alexa toolbar的每次发送信息时,均会将本机最近5次的访问历史记录发送过去,最终通过分析产生该列表,可通过修改历史记录影响该列表。
2.3 站点状态

这里描述了网站排名、网站速度、链接网站,弹出窗口拦截情况。在Alexa Toolbar发送信息时,会将该网站装载的时间发送出去。同时,Alexa Toolbar也提供弹出窗口拦截的功能,发送信息时同时也将该用户拦截窗口的情况发送回去。
各参数的影响方式:
? Rank:通过影响reach和pageviews的值来影响;
? Speed:可以通过修改toolbar发送信息中的网站装载时间来影响;
? Link:关联网站的统计在alexa自身,不依赖于用户段的信息,无法修改;
? Popups:具体解释目前还不清楚,并不清楚应该向大还是小的方向去好。
2.4 联系方式

2.5 用户评价

这 是浏览用户对中搜的评价,网站综合评价中的用户评级数据就是来源于这里。目前中搜的用户评价只有1条(就是我本人测试时写的);Alexa鼓励用户对一个 网站进行评价,这个评价系统明显有人工审核过程,随便填写的东西上不去,我本人测试时写了几条评价,但只有一条因为看上去比较认真才上了去。

下面是百度的用户评价对比:

共有9条对百度的评价,都是5星级的,因此百度的综合评价才出现用户平均评价为5星的情况。很明显这些评价都是百度自己的人写的。
可做如下推论:
? 如果再有8个人对中搜的评价为5星,则中搜的综合评价中就一定会出现用户平均评价为5星的情况。
? 如果有9个人和百度开玩笑,发了9条对百度的1星的评价,则百度的平均评价将降为3级。
2.6 排名趋势图
点击网站详细信息时,会出现该图

2.7 各子域名访问量比例
点击网站详细信息时才可看到

可看出访问量最大的是中搜的检索页面和首页,再次是mp3检索。
2.8 Reach和PageView变化记录
点击网站详细信息时才可看到

这 是2005年4月26日看到的情况,可以看到最近的reach值上升急快,而pageviews值下降了不少。从alexa作弊系统的原理来说,每日发出 的信息总量是恒定的,等于总AlexaID的数量 × 每个ID请求数,前者影响reach值,后者影响pageviews值,根据alexa计算排名的公式,reach的价值远大于pageviews,因此 在总数不能变的情况下将alexaid的数越大效果越好。目前的中搜在alexa上的数据碰巧非常吻合这个原则,这几天的上升幅度碰巧也是极大,外人可以 证据确凿地说:中搜在alexa上作弊。实际上我们也确实是跑了一下作弊程序,但总共才发了十万左右条信息,根本不可能有很大的影响。说不好是有人在捣 乱,让别人认为我们在作弊,如果最近有舆论报道说中搜在alexa上作弊,报道之人就应该是幕后捣乱的人。
3 Alexa Toolbar工作原理
3.1 工具栏安装
安 装Alexa Toolbar后,在winnt/system32下会多了两个dll文件:AlxTB1.dll和AlxRes.dll,其中AlxTB1是com的接 口,提供挂接IE,在IE的各类事件上做钩子,访问本地注册表等功能。而AlxRes则都是javascript和html页面以及图片等资源,使用 Resource Hacker等dll文件资源编辑器打开这两个DLL文件就可一目了然。

工具栏的工作原理实际上是在IE上再开一个浏览器,调用AlxRes中的html页面,显示成为工具栏的样子,该页面为CHTML/index.html,这个页面中会调用com接口,捕获IE中的各种事件,具体定义如下图:

我 们只需跟踪evt.class.js中的代码就可以看到alexa工具栏具体在干什么。例如修改dll文件中javasctipt代码,在关键地方弹出窗 口显示以下内部变量。需要注意的是AlxRes这个文件有加密外壳,每次启动时会校验这个文件是否被修改,如果校验不正确,就会重现下载。 AlxTB1.dll中有一个名叫ChecksumResources的函数,这个函数就是用来计算文件校验和的。我们可通过将AlxRes.dll文件 偏移"0x17F6"处的两个字节"75 11"改成"90 90"跳过这个校验。
取出校验后,我们即可随意修改alxRes中的javascript程序,跟踪里面运行的状态。
3.2 发送数据
Toolbar 跟随的IE启动而启动,在IE的几个主要事件发生时发送数据给alexa的服务器,就目前观察,发送数据主要发生在页面加载完成后发生,将当前被加载页面 的url等参数发送给alexa服务器。这里需要注意的是重定向页面,重定向页面只有一个http头信息,不会触发IE加载完成事件,只有重定向的目标页 面加载完成后才会发生这个事件,例如我们新闻中心的一个链接:
http://news.zhongsou.com/news?(5.3.newsm3.1)http......ent_2897772.htm
前面的news.zhongsou.com/news的信息不会被发送出去,被发送的是后面新华网的链接,也就是说中搜新闻中心的访问量不会被计算到alexa排名中。

在IE 弹出窗口和关闭窗口时,toolbar也会发送数据,都是发送个logs.alexa.com这台服务器,理论上这应该统计出用户在网站上的停留时间,实 际上alexa上并没有用户停留时间这一评价,而且在我截包研究时,发现很少有这类的包发出去,所以这类的信息暂不予考虑或留待日后再研究。

3.3 数据格式
在ie将一个页面转载完成时,会发生onDataLoaded事件,在这个事件中,alexa就将目前装载页面的信息发送到alexa的服务器。例如:
http://data.alexa.com/data/xren21jjSUz0RN?cli=10....../SIG=10ujlpei6/*http://www.shooter.com.cn/

url格式如下:
? xren21jjSUz0RN就是本机的aid,是全球唯一的标示。
? 后面的cli=10、dat=snba、ver=7.0三个参数为固定的内容,只在版本升级时才发生变化。
? 后面的url是本次浏览的页面地址
? Cdt则是一个包含了很多信息的参数,经过URLDecode后,格式如下:
alx_vw=20&wid=18263&act=00000000001&ss=1024x768&bw=775&t=1&ttl=0&vis=1&rq=0
其中:
? alx_ww 恒等于20
? wid是当前IE的进程号,模拟时可在500-30000之间随机产生
? act 可能是为鼠标点击打开新窗口个数,一般都是00000000001
? ss 是屏幕的分辨率
? bw 是window.document.body.clientWidth,大多数网站都是都兼容800*600的屏幕,页面的宽度一般都是800再减去滚动条的宽度25,基本都是775左右。
? t 当document.referrer 存在时为1,否则为0,就是说url是人手输入时为0,当前页面是从页面点击过来时为1。
? ttl 记录页面转载的时间,也就是开始装载的时间和转载完成的时间差,但开新窗口时无法记录开始装载的时间,所以开新窗口时该值为0。估计alexa对一个网站 速度的评价就是源于此,所以模拟时,该数值可在500至1000,表示访问中搜时页面的加载速度在0.5-1秒之间。可提供alexa上对中搜的速度评 价。
? vis的判断条件是: BrowserProxy.Visible ? 1 : 0。估计是指alxTB1文件是否正常从本地加载。一般都是1。
? rq 是当前窗口共去过多少个链接,每点击一次就加1。所以可推论当ttl>0时,rq>0。

在发送url时同时还有发送了cookie,cookie信息如下:
? AV_ccLoad=false;
? twym65_disabled=false; twym65=C8A7D4C7A7F3A2A6A3AC60CED1A3%21C8A8CFC9F0ED67A199AB%21D7A2D5C9A7F4A1A2A29EA5DAD76496E9A2%21D49AC8C9A7F4A1A2A29EA5DAD76496E9A2%21D1A99492F3E2A8A19BAAA1E09099A2E7;
? totalpopupcount=1; lastpopupblocked=DEA1D0D2E0EDA8A8629AA1D88768669F676562A567986B68ABA9A19D6C6EAB; lastpopupallowed=DEA1D0D2E0EDA8A8629AA1D88768669F676562A567986B68ABA9A2A16D68B2;
? AlexaVersion=7.0

其中:
? AlexaVersion=7.0、AV_ccLoad=false; twym65_disabled=false一般是不变的。
? twym65存储的是当前本地访问的历史,只记录5个,并且只记录域名。该值估计会影响“关联网站”
? totalpopupcount 记录了本机屏蔽了多少个url,估计该参数无任何影响。
? lastpopupblocked 记录的是最后禁止屏蔽的窗口url。估计该参数无影响。
? lastpopupallowed 记录允许弹出窗口的url。估计该参数影响“网站状态”中的Popups。
3.4 Cookie的加密算法
根 据张世铭的研究,发送是如果不发送cookie的信息,alexa是不记录的,所以可推论alexa判断发送过来信息是否合法,一是根据aid是否合法, 二就是cookie中信息是否合法了。Aid都是alexa的服务器提供的,自然都合法,而且为了兼容以前的程序,aid的只有申请了下来就永远都是合法 的,出发alexa发现该aid的行为不正常,屏蔽了该aid,alexa的反作弊系统估计只能通过判断cookie是否合法来验证发送信息的合法性了。 当然也可能有其他判断,例如上文中,如果发送参数中ttl>0但rq=0,就肯定是非法的。可做推论:模拟发送的信息是否能被alexa承认,关键 在于cookie加密算法的破解。
Cookie中最多记录5个域名,域名之间用“!”号分隔,由于cookie的内容需要按URL格式编码,!号的编码为%21,而其中的%编码为%25,所以两次编码后,!号的编码为为%2512,实际发送cookie信息中用域名分隔字符串为%2521。

AlxRes中,一名为WyrmDSN的对象是用于出来cookie的,其中的charencode方法用于加密cookie中的域名信息,该方法由名为WyrmDSN_charencode的函数解释,其基本算法为:
将域名中每个字符的ascll值和当前版本的密匙中对应字符的ascll值相加,然后将这些得到的16进制数字合成为一个串。
用上面的样板解释加密过程:
目前版本密匙为:d9adyz93472kb63z521t6e80wqpi56znb16fya6im3dr3xwe
twym65=C8A7D4C7A7F3A2A6A3AC60CED1A3%21C8A8CFC9F0ED67A199AB%21D7A2D5C9A7F4A1A2A29EA5DAD76496E9A2%21D49AC8C9A7F4A1A2A29EA5DAD76496E9A2%21D1A99492F3E2A8A19BAAA1E09099A2E7
其中的C8A7D4C7A7F3A2A6A3AC60CED1A3就是第一个域名信息。长度为28,其中每两个字符表示一个ascll码,所以原始域名的长度为14,因此去密匙的前14为:d9adyz93472kb6。

待解码字符串 C8 A7 D4 C7 A7 F3 A2 A6 A3 AC 60 CE D1 A3
密匙 d9adyz93472kb6 64 39 61 64 79 7a 39 33 34 37 32 6b 62 36
相减结果 64 6e 73 63 2e 79 69 73 6f 75 2e 63 6f 6d
ascll码转字符串为 dnsc.yisou.com

由于每个版本的密匙都可能不同,所以模拟alexa Toolbar时,要特别注意密匙的更新。
3.5 Aid
Aid 作为每台机器的标示,具有唯一性,访问一个网站的AID数量直接影响该网站的Reach值,也是一个非常重要的参数,但因为该AID可从alexa的服务 器获得,而且从系统兼容性考虑,就算alexa升级时,该id不会失效,因此获得aid的方法相比获得cookie加密算法要简单点。
根据在 安装alexa toolbar过程中对注册表的跟踪,可发现Aid的生成并不是安装时自动生成,安装后注册表中并没有aid,而是在toolbar第一次运行时通过 alexa服务器获得。在toolbar第一次运行时,toolbar将向alexa服务器发出请求。通过截tcp包和分析程序可知:当没有aid时,在 原来参数的基础上字样在cdt参数中加入stc参数,即标示为申请aid,下面是第一次运行是截获的alexa toolbar发送的url格式:

http://data.alexa.com/data?cli=10&dat=snba&ver=7......ww.zhongsou.com

可看到因为还没有获得aid,所以在http://data.alexa.com/data后没有aid,但在cdt中有”stc=”的字样,经过url编码后的为“stc=”。该请求发出去后,alexa的服务器就会返回一个新的aid,alex toolbar这时才将aid等信息写会到注册表中。以下是截获的alexa服务器返回信息中的开头部分:

<?xml version="1.0" encoding="UTF-8"?>
<ALEXA VER="0.9" URL="zhongsou.com/" HOME="0" AID="E+bn21jHp0C2W5">
……(中间内容没有意义,不列出来)
</ALEXA>

可 看到返回结果是xml格式的,其中在开头部分就有返回的aid值,我们只需要分析这个文本就可以申请到aid。该申请方法已经测试通过,我们测试时已经申 请了15000个aid,(调试程序,申请次数过多,结果导致华星出口的IP被alexa封了,所以再做测试只能走代理或adsl拨号了)。
4 模拟系统
如 果要做格作弊的系统,这需要注意的事情就多了,毕竟alexa存在这么长时间,应该会有各种反作弊系统,包括即时的数据校验,事后的扫描分析,所以模拟时 需要尽量的模拟人操作的过程。要真的做到算无遗策、滴水不漏还需要多实验才行。以下为本人分析过程中考虑到要注意的事项:

? 不能一个线程连续用同一个aid发送信息,这种发送方式过于容易被发现。
? 虽然reach值很重要,但也不能过分追求,reach值增长快,pageviews同时下降是作弊的明显表现。
? 上升幅度应该平缓,例如每天上升5%,太快会引人注目。
? 发送cookie时可发送相关网站的域名,例如中搜和google都是搜索引擎,可发送google的郁闷过去,表示访问中搜的人同样也喜欢访问google。
? 各子域名的访问量比例最好和原来保持一致。
? 发送的url种类尽量多,我目前不清楚如果一个aid,每次访问都是同一个url,会发生什么结果,所以最好每次都不同。以中搜举例,一个固定的url,然后随机获得一个检索词,拼接成为一个url就行了。
? 最好一个aid模拟一个浏览器,里面的rq值回自动根据这个aid的访问历史来增长,如果访问的次数和间隔也是随机的,则基本不可能被发觉。
? 模拟系统使用adsl上网,每访问一定次数后就断线再重拨。

其实写这样的作弊系统比较无聊,用一个IP去作弊很容易被人发现。如果用ADSL换IP,一天能造成的访问量没多少,对大型网址完全没有用途,不过让自己的个人网址在alexa中有个比较高的排名还是可以的。这东西也就是自己玩一下就算了。

分享到
  • 微信分享
  • 新浪微博
  • QQ好友
  • QQ空间
点击: