• [织梦吧]唯一域名:www.dedecms8.com,织梦DedeCMS学习平台.

当前位置: > 编程与数据库 > ASP编程 >

网站投票作弊 说说网站投票作弊的技术(3)

来源: www.dedecms8.com 编辑:织梦吧 时间:2013-07-13点击:

  //由于所有页面下载完后都会执行这个函数,所以必须根据URL判断消息来源网页

  if(strUrl=="http://www.onlytest.com/vote.htm")

  {

  CComPtrpDisp;

  if(HasItem(objAllElement,"voteform")==true) //voteform为投票选项所在的Form

  {

  objAllElement->item(COleVariant("voteform"),COleVariant((long)0),&pDisp);

  CComQIPtrpElement;

  if(pDisp==NULL)

  {

  //接口指针获取失败,结束程序,不另外作处理,原因见后

  EndDialog(IDOK);

  return;

  }

  else

  {

  //如果投票结果在新窗口打开,则应该修改网页代码,让结果在本控件中显示

  pElement=pDisp;

  pElement->put_target(CComBSTR("_self")); //等效于target="_self"

  pElement->put_action(CComBSTR("vote2.asp"));//等效于action="vote2.asp"

  }

  CheckItem(objAllElement,"chk2"); //将form中id为chk2的CheckBox选中

  SubmitPage(objAllElement,"vote"); //提交网页,vote为submit按钮的id或name

  }

  }

  else if(strUrl=="http://www.onlytest.com/vote2.asp")

  {

  EndDialog(IDOK); //如果投票处理页面已经下载完毕,则结束程序,原因见后。

  }

  }

  现在票已经投出去了,但看过程序你可能会奇怪,为什么投完票或中间出了错要用EndDialog结束程序,而不是继续投票呢?事情是这样的,有些网站一个session只能投一票,而一个IE控件创建好,与服务器连接后(有了Session),那个Session Key就定好了(一家之言),所以如果继续用这个IE控件投票,服务器会告诉你你已经投过票了(当然如果投票程序写的笨,没管这个,那就简单多了)。这个问题本来我想通过分析WinInet API的运行过程对付的,可是好像很麻烦,所以用了一个很笨的但简单的方法:投票程序作为一个程序,然后另一个程序调用这个投票程序,投完票后投票程序结束,主程序再次运行投票程序,如此反复。至于投票程序数量的限制之类的东西,用共享内存段是最简单的(一家之言),具体就不在这里讨论了。

About D8

  • ©2014 织梦吧(d8) DedeCMS学习交流平台
  • 唯一网址 www.DedeCMS8.com 网站地图
  • 联系我们 1170734538@qq.com ,  QQ