版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://eric925.blogbus.com/logs/36785846.html
最近做blogbus插件广场项目,闲暇之余写了个开心网的抢车位外挂,在开心网的程序架构上学到了一些经验。
首先我注意到抢车位这个游戏停留在页面上数据是会即时更新的,而第一反映是ajax,然而为了控制服务器负载,是不应该不停产生请求的,分析后发现果然没有反复请求,而是在第一次访问页面的时候,把每个车位的盈利上限、下限、单位时间增长值等参数交给客户端,通过客户端js进行页面数据的更新。这样能有效降低请求数,同时提高用户体验。
其二,开心网的很多数据通过json传输给客户端,客户端js拼装数据展现给用户。比如侧边栏、还有很多插件的内容页。这样的好处是数据和页面的耦合度降低,调整显示效果和实现用户自定义化更容易,同时一定程度上减轻了服务器端的处理逻辑,提高开发的效率。在这方面,blogbus很多地方是通过document.write来实现,而不是json数据,虽然简化了服务器端处理逻辑,但在把数据部署在页面上的灵活性大大减少。
其三,开心网抢车位的反外挂代码。在抓包的时候看到一个acc变量,但它的值通过明文却没有搜索到,于是我意识到这是一个js生成的anti-bot校验码。最后在抢车位的页面找到如下代码:
- vargab16="c0af48b44127";
-
varacc3="cbaktr0f1";
-
functionacc()
- {
-
varacc=d7d65.length+gab16.charCodeAt(2);
-
returnacc;
- }
-
vard7d65="7ec2d7bd3de3";
-
varg761c="90fc480bdfca";
-
varacc3="cbaktr0f1";
-
functionacc()
- {
-
varacc=d8a22.charCodeAt(1)+g761c.length;
-
returnacc;
- }
-
vard8a22="640240afe45c";
var gab16 = "c0af48b44127";
var acc3 = "cbaktr0f1";
function acc()
{
var acc = d7d65.length + gab16.charCodeAt(2);
return acc;
}
var d7d65 = "7ec2d7bd3de3";
var g761c = "90fc480bdfca";
var acc3 = "cbaktr0f1";
function acc()
{
var acc = d8a22.charCodeAt(1) + g761c.length;
return acc;
}
var d8a22 = "640240afe45c";
反复测试后,发现这段代码通过随机的变量名和随机的方法来构造出acc值。有的时候是charCodeAt,有的时候是length,有的时候是substr。不过语法太过简单,轻而易举就能转化成php语法,一算就出来了。相比之下很多广告联盟的anti-bot代码更复杂很多。
其四,最近我们技术部在讨论静态文件的permanent link问题,看了看开心网这样包含不少图片\flash的页面,发现没有特别的部署permanent
link,一些可能经常升级的js文件采用了filename-n.js这样的版本号部署,可是这个方案已经被我们否决了,原因是改一个静态文件得修改相关的动态程序模板。这种模式要求上线后的静态文件不能隔三岔五的修改,否则修改版本就要死人。不过开心网通过chinacdn来cdn的静态文件,流量压力有所减少吧。
分享到:
相关推荐
<br/>我们很高兴的是 Perl 避免了所有这些问题,同时还保留了这些语言中的许多优点,同时还有一些自己的特色。Perl 的特色来自许多方面:它的特性集的工具,Perl 社区的创造性,以及开源运动的大环境。不过,...
的一个技巧,程序中考虑到捕获RejectedExecutionException同时加载的图片过多而导致程序崩溃,附加了异常处理程序。 22、Android应用程序的自动更新升级(自身升级、通过tomcat) 共4个目标文件!~如题。 23、...
博客、贴吧、人人、开心网等等,各个社交网站,软文写的好,一日破万,这都不是事,用心做你能行…… 3、微信互推 微信最快涨粉丝的方法,以大号带小号,以奇号带企号!粉丝上千后,组队互推…..最强的涨粉丝的技巧...
实例049 商品金额的大小写转换 63 实例050 设置货币值中使用的小数位数 64 实例051 格式化输入数据为货币格式 65 实例052 开发一个进制转换器 66 3.4 日期时间格式的数据处理 67 实例053 动态获得系统当前日期和时间...
放屁机这是一个小技巧,可以通过您本地网络上的 Sonos 设备播放放屁声。 更具体地说……这将停止当前在 Sonos 上播放的 Pandora 电台,调高音量,播放放屁的 mp3,使音量恢复正常并返回正在播放的 Pandora 电台。 ...