百度贴吧的投票系统反重复投的技术实在太牛,大家去体会下就知道了。
在贴吧里的投票,限制一个ip一天一票,我投了一票后,尝试过重新拨号换ip,尝试多次都显示“已经投过了”,但总票数就1票是我刚刚投的,那些新ip绝对未投。
我把ie的安全级别设置为高,拒绝一切cookie,然后拨号换ip,再投,还是“已经投过了”。
百度这些反刷票措施都是什么技术??有什么相关资料吗?
有人用超级兔子清理上网残留信息,重拨号,百度允许他投票,也就是说欺骗baidu成功了,而且是清理本机信息后成功的。
那么百度这些措施还有什么不足吗?还有能欺骗重复投票的漏洞吗?

解决方案 »

  1.   

    你可以试一下把Cookie清除掉~~或者…………关掉猫然后再开开。。换一个IP
    我去研究一下~~
      

  2.   

    大致分析出来了:
    投票首先用的是XmlHttpRequest对象,也就是Ajax投票,截取到的流如下:[code=截取流]POST /sys/commit/ HTTP/1.1
    Accept: */*
    Accept-Language: zh-cn
    Referer: http://toupiao.baidu.com/sys/dtview/1/aa2c280be17300f2ec33c8bf?bu=http%3A//tieba.baidu.com/f%3Fkz%3D327757432&t=0.8847724953756559
    x-requested-with: XMLHttpRequest
    Content-Type: application/x-www-form-urlencoded
    Accept-Encoding: gzip, deflate
    User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)
    Host: toupiao.baidu.com
    Content-Length: 84
    Connection: Keep-Alive
    Cache-Control: no-cache
    Cookie: BAIDUID=7CAE24D1837E45A61E848B69F36F5EE7:FG=1; BD_UTK_DVT=1; BDSTAT=cffc1e17d18c044674134b44d1c10c74f4c10f1bb151f8199218367ad8b4c157; _BDSC=1; BDUSS={我的Cookie,我删掉了}
    cm=2&pid=1&voteid=aa2c280be17300f2ec33c8bf&checkset=1&opt0=1&t=0.6540096781835398&_=[/code]然后关猫,重新上线,就可以重新投票了,不过……我怀疑那个BAIDUID很可能就是用来辨别的,因为我这两天一直在分析百度,用IdHttp模仿的时候,BAIDUID根本不知道从那里的来的,但是从浏览器里面就可以截取到,但是不用BAIDUID也不妨碍登陆、发帖、上传等功能~~
      

  3.   

    idhttp模仿??如何提交选项?能指点一下吗?
      

  4.   

    看到这一行了么?cm=2&pid=1&voteid=aa2c280be17300f2ec33c8bf&checkset=1&opt0=1&t=0.6540096781835398&_=[/如果不是用XmlHttpRequest对象发送出去的信息,而是使用网页方式提交,那么这些就是参数表,可以建立一个TStrings类型,用子类TStringList实例化
    var
      T:TStrings;
      Response:TStringStream;
    begin
      T:=TStringList.Create;
      Response:=TStringStream.Crate('');
      T.Add('cm='+ cm);
      T.Add('pid=' + pid);//这些都是变量
      //....
      try
        IdHttp1.post(Url,T,Response);//<--这里,Url是'http://toupiao.baidu.com/sys/commit/',T是列表,就是参数表,模拟方式很多~~网上就有,Response是一个接受返回信息的流
      except
        //....
      end;
      T.free;
      Response.free;
    end;