这是一个真实的事,一家比较大的公司举办的一个全国性的投票,然而,页面确实写得很烂,做假太容易。
首先,找到投票按钮的源代码:
这个”tp”类就是投票事件的定位关键字。
然后,打开source下的源文件,搜索“.tp”:
可以看到,这就是投票事件的代码
分析源代码
//投票jq('#scrollText_01>ul li .tp').click(function () {//判断是否对此人投票var index = jq(this).parent().index();var id = index + 1;if(jq.cookie('chenyi_'+id)){alert('您已经投票,不可重复!');}else{var num = jq("#"+index).html();//点赞jq.getJSON(rootPath + "dztr/index.php?_c=dztr&_a=prized&callback=?", {"id": id,"num": num}, function (json) {var data = eval(json);var vote_num = data.prized_num;if (data.msg == 'no') {vote_num = num;alert('投票失败,请重新投!');}else{jq.cookie('chenyi_'+id, 1, { expires: 365 });}jq('#' + index).text("" + vote_num + "");});}});
很明显,它是通过cookie来判断用户的。
那不看代码,怎么猜测一个投票网站是通过哪种方式识别用户呢?
可以在一个浏览器投一次票,然后再换一个浏览器偷,如果能投,说明是通过cookie来判断用户的。如果不能,那就可能是通过ip来限制的。
通过cookie来限制的,可以删除cookie来绕过,直接在浏览器的开发工具的就可以找到和删除。但是,这种方法每投一次票就要删除一次cookie.如果刚巧这个网站又用了js来验证cookie,那么我们就可以修改验证的代码来绕过。我们知道html是事件驱动的,那么就可以从事件绑定代码入手,进行修改。
上面的网站就是犯了:1、不用登录,使用cookie识别用户投票状态 2、使用js验证cookie 两个大忌
通过分析,现将投票事件解绑:
jq('#scrollText_01>ul li .tp').off()
再重新绑定事件,把验证cookie的代码删去即可:
jq('#scrollText_01>ul li .tp').click(function () {//判断是否对此人投票var index = jq(this).parent().index();var id = index + 1;// 只需修改这里if(false){alert('您已经投票,不可重复!');}else{var num = jq("#"+index).html();//点赞jq.getJSON(rootPath + "dztr/index.php?_c=dztr&_a=prized&callback=?", {"id": id,"num": num}, function (json) {var data = eval(json);var vote_num = data.prized_num;if (data.msg == 'no') {vote_num = num;alert('投票失败,请重新投!');}else{jq.cookie('chenyi_'+id, 1, { expires: 365 });}jq('#' + index).text("" + vote_num + "");});}});
然后就可以一直点击投票,再也不会被限制了。