前几天谈到我所在的服务器因为调用次数过多被Alexa给屏蔽了,于是我就琢磨着该如何来破解Alexa工具条,顺便作弊一下。尽管Alexa是一个“恶评软件”(360安全卫士50%以上的恶评率),可是就为了一个没有什么意义的数字,许多人还是乐此不疲,国内也有很多依靠Alexa破解赚钱的呵呵
Alexa工具条主要依靠HTML和Javascript来工作,而数据也以明文的形式传送,为破解提供了可乘之机。
要破解Alexa工具条,当然先下载一个原版的Alexa工具条,上官网,下载来,先别装。这里要装一个网络探测器——网络特工,它能探测到本机与其他服务器联机时所有的操作,用这个工具就可以探测到Alexa客户端和服务器到底发送了什么数据。
装好探测器,让它进入工作状态,不难。接下来是安装Alexa工具条,很快的。这里说一下为什么要先装探测器再装工具条。刚开始的时候,我以为Alexa工具条装好后,会对工具条进行初始化,从服务器弄一些唯一ID之类的。(后来证实并非如此)
装好工具条,打开IE,(IE7可能会弹出安全警告,点允许),这时候Alexa仍然没有向服务器联系。随便输入一个 www.baidu.com (应该选比较简单的页面比较好,如果选www.sina.com.cn,首页数据一大堆,想要找到Alexa发出的数据眼睛会累坏的,如果自己在网站上建一个空白页面就更好了)
找到一个开头为
GET /data?cli=10&dat=snba&ver=7.2&cdt=alx_vw%3D20%26wid%3D3845%26act%3D00400000000%26ss%3D1024×768%26bw%3D1018%26t%3D0%26ttl%3D0%26stc%3D%26vis%3D1%26rq%3D0&stc&url=http://www.baidu.com/ HTTP/1.1
没错,这就是Alexa发出的数据。这个数据有一部分被 urnencode 了,用PHP的urldecode解密函数解密一下,变成:
GET /data?cli=10&dat=snba&ver=7.2&cdt=alx_vw%3D20&wid=12558&act=00000000001&ss=1024×768&bw=1018&t=1&ttl=569&vis=1&rq=1&url=http://www.baidu.com/ HTTP/1.1
网上已经有很多文章讲了各个参数的意义,这里就再重复一下,如果你自己要伪造ALEXA数据刷排名的话也好用上。
cli固定,未知;
dat固定,未知;
ver版本,我已知的有 7.0,7.2,当然也有很多别的了;
cdt固定,未知;这里是cdt=alx_vx=20,我不清楚这样的数据构造是否违反了相关的标准,所以把=仍旧用 %3D 取代;
wid是随机字符,大概是一个4-5位的数字,在当前页面内,每个网站的wid是一样的,不同网站随机发送;
act是窗口状态,我见过的有 00000000000 ,00400000000,00000000001,根据我的判断,00400000000是浏览器输入地址,00000000000是网站内的点击链接,比如进入百度后进行搜索,00000000001是网站间的链接,比如在百度里搜Google,点击链接进入Google,还有人说只有 00000000001 才能提高Alexa排名,如果想要作弊,最好能够多几个循环一下,以免被Block;
ss分辨率大小;
bw浏览器宽度(浏览器宽度小于分辨率宽度);
t,有朋友说输入网址为0,点击页面链接为1,但我从百度点击链接至Google时也为0;
ttl,从客户端连接服务器的时间,可以随便填,当然,如果你填的数值越小,你在Alexa信息中的速度越快,但也可能会被alexa认为作弊,最好是在500到1000之间随机吧;
vis,是否显示工具条,当然为1咯;
rq,又一个比较模糊的概念,有人说是当前窗口的浏览页数(PV),那么发送数据时最好来个0-10之间的递增,不要递增到底,否则又有作弊的嫌疑了;
url,当前访问的网址,千万要完整的URL,否则就露馅了,在传送的时候最好用 urlencode 加密一下,以免出现服务器400错误;
可能有看过我以前写过的一篇Alexa排名调用的文章会怀疑,怎么这里没有出现AID?这正是关键,事实上,Alexa在安装完后并没有注册AID,而是在第一次使用Alexa时调用上面的页面,在返回的结果中放入AID,再下次浏览时就要加上该参数了,比如第一次调用,以访问www.baidu.com为例,返回的结果中有这样一行
<ALEXA VER=“0.9″ URL=“photozero.net/” HOME=“0″ AID=“=”>
里面有个AID,如果是第一次调用,AID这里就会有一个14位数的随机ID,如u99K81VVIpa1Oe,所以我们的作弊应该是这样的:第一次在没有AID的情况下调用,返回结果中会出现一个AID,把AID提取出来,用文本记录下来,下次调用时判断AID是否存在,存在就发送一个含有AID的请求,特别要注意的是,每次调用时还要判断AID是否是=符号,因为据Alexa作弊高手反应,一个AID用了一段时间后可能服务器会发送一个新的AID,如果发现AID更新了,当然要把更新的数据重写咯
你也许有疑问,一直不写AID,一直都是第一次访问不就得了?如果你在本地上,用ADSL拨号上网,IP每次换,还是可以的,但你要是在服务器上这样做,当心了,服务器可能会被Alexa封掉的,就像我上次一样。
得到了一个新的AID以后就应该这样发送请求了:
GET /data/u99K81VVIpa1Oe?cli=10……&url=http://www.baidu.com/ HTTP/1.1
在HTTP请求头中,Alexa工具栏还加了一些代码
Accept: */*
UA-CPU: x86
Accept-Encoding: gzip, deflate
如果要获取新的AID,还应该加入一行
User
由于这个网络探测器似乎不能探测发送的COOKIE和User-Agent,所以还得想别的办法:
User-Agent就是当前浏览器的信息了,最好伪造一个Win XP + MSIE 7之类的,别忘了加上 Alexa Toolbar字样。如
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Alexa Toolbar)
COOKIE是Alexa作弊的难点,打开IE的COOKIE目录下,找到一个类似于 xxx@alexa[x].txt(可以搜索一下包含alexa字样的TXT文件就应该是了) 这样的文件,这个文件里保存了要发送往Alexa.com的COOKIE信息;其他几个数据就不说了,有个 twym65 的参数是破解的重点。
按网上的说法,twym65里面包含了最近访问的5个站点的信息,如果没有发送“twym65”,Alexa会认为你永远都是第一次访问,如果每次发送同样的“twym65”,Alexa还以为你从来只访问这几个网站呢,作弊能成功吗?
看twym65这个数据,事实上是把每个域名经过特殊的加密后,用 %2521 分割出来,%2521也有可能是 %xxxx ,这个规律还未知;总之就是 用 % 加上4位数字就对了,每个域名是如何加密的,这需要破解Alexa才知道,不过我也不会什么反汇编,用个简单的方法可以知道每个加密值对应的域名。你多访问几个网站,再用IE打开 http://www.alexa.com/data/details/traffic_details/photozero.net ,域名可以随你写了,找到左边的“Recently Viewed”的历史浏览记录,看到没,也正好是5个!现在找他们的对应关系也不难吧,随便把一个值给篡改一下就知道某个域名对应的加密值了。
现在要做的就是浏览100个网站(如果你以刷Alexa为生,卖它100个服务,如果是自己刷,也顺便帮163,sina,baidu这些刷一下),每浏览5个网站搜集一组加密值,现在你的数据库中一共有了100个网站加密值,你要做的就是每次请求时对刚才的请求做一点点修改,不能全部修改哦!最重要的是,当前的COOKIE中一定要包含请求的网址的加密值,否则就露馅了。为什么要找100个网址,如果你只刷你自己的5个网站,每次都是这几个网站,能不露馅吗?
好了,请求的数据也构造好了,现在看你要如何刷了,脚本能用PHP最好,此外,IP方面,总不能一直用一个IP吧,这里当然是要用ADSL动态IP的好,每次用PHP,查询10次吧,然后掉线重播,更换IP,如此反复,有朋友说,10分钟就能刷到10W名!配合按键精灵,万岁!
不过我自己也没有在本地上做过作弊测试,我的PHP脚本也还没写好,等写好了发布出来大家一起作弊