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

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

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

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

网站投票作弊 方法2:通过WinInet API来实现表单提交的工作

  这种方法实现代码量很少,而且由于不需要下载太多的无用数据(如图片等),form所在的页面也不需要下载,所以效率要高得多,另外实现代码是一个函数,很适合用在线程中。

  用这种方法关键是要知道应该给服务器提交些什么数据如果自己去看网页文件,然后分析应该向服务器提交什么数据,网页很简单时还差不多,如果网页很复杂,那就属于费力不讨好的事。现在不是考试,那种事情我们就不做了,现在有一个更简单的办法,就是用Win2000下的网络监视器,手工投一票看看向服务器提交了些什么数据。这样我们就可以把那数据中属于HTTP协议的部分Copy下来。直接从监视器里拷出来的数据是没法用的,因为监视器显示文本的部分把回车换行之类的字符都用小数点代替了,这些部分要先改回原来的回车、换行(HTTP头部分的就可以不用管了,只要你能分清边界就可以了)。另外注意,提交信息中可能会有Content-Length这个信息,如果你修改了提交数据的内容,而且数据长度发生了变化,Content-Length项的值一定要跟着改。比如Content-Length原来的值是100,数据中有一条数据“1”,你现在改成了“12”,则Content-Length一定要改成101,否则服务器会返回错误。

  下面列出的就是投票函数:

  UINT Vote(LPVOID)

  {

  CInternetSession session;

  theApp.m_nThreads++; //用来记录投票线程数的

  try

  {

  CHttpConnection* pConnection =session.GetHttpConnection("www.onlytest.net"); //网站服务器

  CHttpFile* pFile = pConnection->OpenRequest(CHttpConnection::HTTP_VERB_POST,"vote2.asp"); //直接向投票处理页面提交数据

  //下面向提交数据中添加HTTP头,这些可以由网络监视器得到

  pFile->AddRequestHeaders("Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, */*");

  pFile->AddRequestHeaders("Referer: http://www.onlytest.net/vote.htm");

  pFile->AddRequestHeaders("Accept-Language: zh-cn");

  pFile->AddRequestHeaders("Content-Type: multipart/form-data; boundary=---------------------------7d11dc24268052c");

  pFile->AddRequestHeaders("Accept-Encoding: gzip, deflate");

  pFile->AddRequestHeaders("User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");

  pFile->AddRequestHeaders("Content-Length: 1351");

  pFile->AddRequestHeaders("Connection: Keep-Alive");

  pFile->AddRequestHeaders("Cache-Control: no-cache");

  //HTTP头后面就应该是真正的数据了,下面theApp.m_strFormData中就是要提交的数据,服务器处理返回的信息在pFile中

  pFile->SendRequest(NULL,0,theApp.m_strFormData.GetBuffer(0),theApp.m_strFormData.GetLength()); //提交所有数据

  //其实到这里投票已经可以结束了,不过你如果想看看成果,完全可以把返回的页面分析分析,得到些数据

  char szBuffer[11001]; //用来存放返回的处理页面,要多大看实际情况。当然也可以动态分配,不嫌累的话

  int nLen=pFile->Read(szBuffer,11000);//读取返回的内容,其实是投票结果页面的HTML代码

About D8

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