喜刷刷

原创 2006年06月14日 14:30:00

偶听网上投票,可以用某些程序疯狂刷票,遂实践之。
基本原理就是利用IE的自动化接口让程序命令IE反复的执行投票操作。
实现:
vc6下新建对话框工程,添加4个编辑框,分别对应投票地址m_strAction(如http://localhost/vote.aspx?id=1&id2=2) 
 每次投票数目m_lNumber = 20;
 每次投票时间间隔m_dwJG = 1500;
 投票时间m_lTime = 0;//<1时无限投票
添加开始/暂停投票按钮m_ok

包含头文件并引入_Module
#include <atlbase.h>
#include <atlcom.h>
#include <mshtml.h>
CComModule _Module;

//m_ok的响应函数
void CXiShuaShuaDlg::OnStart()
{
 bStart=!bStart;
 if(!bStart)
 {
  this->KillTimer(0);
  m_ok.SetWindowText("开始投票");
  return;
 }
 this->UpdateData();
 bAlert=false;
 m_ok.SetWindowText("暂停投票");
 SetTimer(0,m_dwJG,NULL);
 if(m_lTime>0) SetTimer(1,m_lTime*1000,NULL);
}
//
void CXiShuaShuaDlg::OnTimer(UINT nIDEvent)
{
 if(nIDEvent==1)
 {
  OnStart();
  KillTimer(1);
  return;
 }
 IHTMLWindow2* pHTMLWin;
 IHTMLDocument2* pHTMLDocument;
 CComPtr< IShellWindows > spShellWin;
 if ( FAILED ( spShellWin.CoCreateInstance( CLSID_ShellWindows ) ) )
 {
  if(!bAlert)
  {
   bAlert=true;
   MessageBox("获取 IShellWindows 接口错误");
  }
  return;
 }
 long nCount = 0;// 取得浏览器实例个数(Explorer 和 IExplorer)
 spShellWin->get_Count( &nCount );
 if( 0 == nCount )
 {
  if(!bAlert)
  {
   bAlert=true;
   MessageBox("没有在运行着的浏览器");
  }
  return;
 }
 CString strScript("var s,sm;");
 CString tmp;
 tmp.Format("s='f'+i;sm='fm'+i;if(typeof(document.all[s])=='undefined') document.body.insertAdjacentHTML('beforeEnd',/"<form id=/"+s+/" action='%s' target=/"+sm+/" method=post></form>/");",m_strAction);
 tmp+="if(typeof(document.all[sm])=='undefined') document.body.insertAdjacentHTML('beforeEnd',/"<iframe name=/"+sm+/"></iframe/");";
 strScript.Format("for(var i=0;i<%d;i++){%seval('f'+i+'.submit()');}",m_lNumber,tmp);
 VARIANT v;
 for(long i=0; i<nCount; i++)
 {
  CComPtr< IDispatch > spDispIE;
  if(FAILED(spShellWin->Item(CComVariant(i),&spDispIE))) continue;
  CComQIPtr< IWebBrowser2 > spBrowser = spDispIE;
  if(!spBrowser) continue;
  CComPtr < IDispatch > spDispDoc;
  if(FAILED(spBrowser->get_Document(&spDispDoc))) continue;
  CComQIPtr< IHTMLDocument2 > spDocument2 = spDispDoc;
  if(!spDocument2) continue;
  pHTMLDocument=spDocument2;
  if(FAILED(pHTMLDocument->get_parentWindow(&pHTMLWin))) continue;
  pHTMLWin->execScript(CComBSTR(strScript),CComBSTR("javascript"),&v);
 }
 CDialog::OnTimer(nIDEvent);
}
有的服务器端是通过Request.Forms['xx']或者其他方法获取数据的,此时要构造合适m_strAction句和strScript句
如此,一个简单的刷票工具就完成了

防止刷票?
1、客户端cookie,保存投票状态。这种方法最垃圾,但居然有人用。
2、服务器端记录IP地址。这种方法对局域网用户实在是非常不爽,,,
3、来源判断。防盗链的那种技术,判断提交数据的窗口地址是否为特定页面
4、要求注册为用户。这个就不说了,,
5、稍微进行点数据分析,判断是否刷票。
刷票具有的特征:
1、时间上连续不断
2、IP地址连续
3、某IP或时间段投票数目过多
对于1和2,高级的刷票程序会产生随机时间和随机IP地址进行伪装。
3虽然可以伪装,但这样一来刷票程序就失去其预料的效果(随机IP在10分钟内投1票?)。如果是不贪心的刷票程序,就只有利用专用数据工具或人工判断了

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

当你喜刷刷时,你可知为何朋友圈能这么流畅?

朋友圈已让人欲罢不能。有人说,早上睁眼第一件事情,是刷朋友圈;晚上睡觉最后一件事情,还是刷朋友圈。 这背后是海量的信息数据和查看请求。如此庞杂的数据,微信却做到了流畅的体验,一切井然有序,刷一下就搞定...

【千里码】Task34-喜刷刷

计算一个验证码,他是一个自然数x,能使 md5(当天日期+你的用户名+当前的票数+x)的前6位都是0 举例: 假如2015年12月4号食年已经拿到了1014票,当你想投第1015票的时候,你的验证码...

5860+线刷刷机教程.pdf

  • 2012-12-28 13:49
  • 370KB
  • 下载

没事刷刷题之三 产生冠军 HDOJ 2094

没事刷刷题之三 产生冠军 HDOJ 2094 简单代码,简单思维。

从崔老师那里弄的一个dp列表好好刷刷、、跟着崔老师学dp啊--

经典入门题:最长上升子序。O(n^2)的。。话说n*log(n)的还不会呢。。。SDUT 1299     数塔   HDU 2084 数塔     最长公共子序  HDU 1159 Common ...

12313154135刷刷刷

  • 2010-03-14 00:37
  • 54KB
  • 下载

三星note2 N7100线刷刷机包

  • 2013-10-25 14:04
  • 15.58MB
  • 下载

联想S720/S720i通刷刷机包 Vibe V1.0

ROM介绍   基于官方最新S116底包制作,保证足够的稳定性。   加入VIBE元素,看起来更加大气、美观。   首次加入VIBE元素,720i运行起来无压力,720可能会有点卡,自行酌情刷入。  ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)