一个简单的投票机器人

 

转载自:www.csdn.net

一个简单的投票机器人

昨天帮人报一个参加日语能力考试的朋友报名,无奈名额已满,需要不断重试碰运气。手工操作很麻烦,就决定做一个机器人试试,于是翻出了去年做的一个投票机器人。(报名机器人另文再写)

       那时非典被困在宿舍,做毕设的公司正在参加一个十大新兴技术企业的评选,有网上投票的环节。闲得无聊,就花了一天时间做了这个小程序。

       简单看了一下,那个投票页面做得很业余,就一个ASP页面,没有用户注册和IP限制,完全的匿名投票。不过为了保险起见,我还是想了不少办法,伪造IP地址很困难,我就用代理服务器,用一个代理列表中用代理服务器投票,另外选中的概率也不是100%,而是可以自由调节,投票的时间间隔也可以自由调节。

       发送投票结果有几种方法:

n         一种是通过构造一个数据包,直接post过去,这个方法当时没有成功,也没有深究原因。

n         另一种方式就是自动填写表单,然后通过表单提交结果。我用的就是这种办法。

       用Delphi7开发,主要使用了Twebbrowser控件,那时第一次用,所以现在看有很多问题。

       首先动态生成一个页面:

表格 1


构造HTML源代码: 

procedure TFrmMain.makehtml;

var

    liststr1,liststr2,checkNum1,checkNum2:string;

    htmlFile:TextFile;

    i,j,who,part1,part2,num1,probility:integer;

begin

   liststr1:='';

   liststr2:='';

   htmlbody:='<HTML><meta http-equiv="Content-Type" content="text/html; charset=gb2312">';

   htmlbody:=htmlbody+'<BODY background="bgpaper.gif"><TITLE>投票系统</TITLE><p align="center">&nbsp;</p>';

 

   htmlbody:=htmlbody+'<INPUT TYPE=hidden NAME="LinkURL" VALUE="">';

   htmlbody:=htmlbody+'<TABLE width="80%" align="center" border="1" bordercolor="#339966"><TR bordercolor="#FFFFFF">';

   htmlbody:=htmlbody+'<TD ALIGN=center COLSPAN=2>';

  。。。。。。。。。。。。

   //构造投票选项―――――――――――――――――――――

   for j:=1 to 23 do

       begin

         checklist1[j]:=false;

         checklist2[j]:=false;

       end;

 

   RandSeed:= inttime;

   Randomize;

 

  //根据设置的投票选择概率来确定本次是否选择目标选项

   if factor = 0 then

       part1 := Random(10)

   else part1 := Random(11);

   num1:=part1;

   while (part1>0) do

   begin

       who := Random(23)+1;

       for j:=1 to 23 do

           begin

               if checklist1[who] then

                   break

               else

                   begin

                       checklist1[who]:=true;

                       part1:=part1-1;

                   end;

           end;

   end;

 

   probility := Random(100)+1;

   if factor = 0 then

       checklist2[2]:=true

   else if (probility Mod factor) = 0 then

      checklist2[2]:=true;

 

   if checklist2[2] then

       part2:=(10-num1)-1

   else part2:=(10-num1);

  

   while (part2 > 0 ) do

       begin

           who := Random(23)+1;

           for j:=1 to 23 do

             begin

                 if checklist2[who] then //

                     break

                 else

                   begin

                       checklist2[who]:=true;

                       part2:=part2-1;

                   end;

             end;

       end;

 

   for j:=1 to 23 do

       begin

                   if checklist1[j] then

                       begin

                           liststr1:=liststr1+checkedlist1[j];

                           checkNum1:=checkNum1+inttostr(j)+',';

 

                       end

                   else liststr1:=liststr1+uncheckedlist1[j];

 

                   if checklist2[j] then

                       begin

                           liststr2:=liststr2+checkedlist2[j];

                           checkNum2:=checkNum2+inttostr(j)+',';

 

                       end

                   else liststr2:=liststr2+uncheckedlist2[j];

       end;

   RichEdit1.Lines.Add('第'+inttostr((times div 2)+1)+'次投票结果:');

   RichEdit1.Lines.Add('第一组选中序号('+inttostr(num1)+'个):'+checkNum1);

   RichEdit1.Lines.Add('第二组选中序号('+inttostr((10-num1))+'个):'+checkNum2);

 

            htmlbody:=htmlbody+liststr2;

       htmlbody:=htmlbody+'<INPUT TYPE=hidden NAME="CHOICE 2" VALUE="23"><TR bgcolor="#E7E8E3" bordercolor="#FFFFFF"><TD bgcolor="#CCCCCC"><TD ALIGN=center><INPUT name="sub" TYPE=submit VALUE="提交"></TABLE></FORM></BODY></HTML>';

    

end;

把生成的HTML载入Webbrowser,生成网页

表格 2


procedure TFrmMain.loadHtml;

var

    URL,v:OleVariant;

    HTMLDocument:ihtmldocument2;

begin

     try

      

        makehtml;

      

     except

         on e:exception do

        //showmessage('出错!'+e.Message);

        //exit;

     end;

 

    HTMLDocument := (WebBrowser1.Document as IHTMLDocument2);

    v := VarArrayCreate([0, 0], varVariant);

    v[0] := htmlbody; // Here's your HTML string

    HTMLDocument.Write(PSafeArray(TVarData(v).VArray));

    HTMLDocument.Close;  

  

end;

然后模拟点击网页的提交按钮,提交表单数据:

表格 3


procedure TFrmMain.submitForm;

var

      obj:OleVariant;

      doc: ihtmldocument2;

begin

    doc:=(WebBrowser1 .Document as IHTMLDocument2);

        if doc <> nil then

            begin

                //RichEdit1.text:=doc.body.innerText;

                obj:=doc.all.item('sub',0);

                obj.click;

            end;

end;

设置代理服务器:

表格 4


function TFrmcheckproxy.ChangeProxy(const Proxy, Port,ByPass: string; const bEnabled: boolean = True): boolean;

var

 reg: Tregistry;

 info: INTERNET_PROXY_INFO;

 Fproxy:string;

begin

 Result := False;

 FProxy:=Format('%s:%s',[Proxy,Port]);

 reg := Tregistry.Create;

 try

    reg.RootKey := HKEY_CURRENT_USER;

    if reg.OpenKey('/Software/Microsoft/Windows/CurrentVersion/Internet Settings', True) then

    begin

      reg.Writestring('ProxyServer', Fproxy);

      reg.WriteInteger('ProxyEnable', integer(bEnabled));

      info.dwAccessType := INTERNET_OPEN_TYPE_PROXY;

      info.lpszProxy := pchar(proxy);

      info.lpszProxyBypass := pchar(ByPass);

      InternetSetOption(nil, INTERNET_OPTION_PROXY, @info, SizeOf(Info));

      InternetSetOption(nil, INTERNET_OPTION_SETTINGS_CHANGED, nil, 0);

//      InternetSetOption(nil, INTERNET_OPTION_REFRESH, nil, 0);

//      Sendmessage(HWND_BROADCAST, WM_SETTINGCHANGE, 0, 0);

      Result:=True;

    end

 finally

    reg.CloseKey;

    reg.free;

 end;

end;

 

最后界面:

 

图表 1 主界面(使用了一个界面的第三方包-SUIPackage)

 

图表 2图表 1 主界面,同时查看投票过程和结果(使用了一个界面的第三方包-SUIPackage)

 

时间: 2024-12-27 12:46:46

一个简单的投票机器人的相关文章

php简单 在线投票系统 源码下载,

php简单 在线投票系统 源码下载,上次要和你一家公合作他们说要我写一个简单的投票系统,但是每一个IP只能投一次,好了下面就是我写的一个最最简单的投票系统了,是用php实现的. 先来创建数据库.有两个一个记录投票次数与相关信息一个是记录IP. CREATE TABLE IF NOT EXISTS `lj_vote` (   `id` int(8) NOT NULL auto_increment,   `v_type` int(4) default '1',   `v_caption` varch

连线杂志:如何造一个有自我意识的机器人?

宇宙中充满了一些非常酷的东西:例如,每一小匙重达一吨的中子星,连光都能吞噬的特大质量黑洞,恰好能够流穿过脱氧钢的无穷小的中微子,以及地球上那些奇异的动植物们-不过,在宇宙所有已知的事物里,最神奇的莫过于人脑. 人类大脑能够了解中子星,了解黑洞.中微子,以及地球上众多的动植物.人类大脑能够计算出数学真理,能够辨别出道德上半真半假的陈述,也能够思考出哲学上的模棱两可.它能够从我们脚下的泥土中,提取出原材料,构建城市,能建造汽车.飞机和火箭,以及有线和无线信号,并将这些迥然不同的"意识"汇聚

Java核心技术卷I基础知识3.1 一个简单的Java应用程序

第3章 Java的基本程序设计结构 ▲  一个简单的Java应用程序     ▲  字符串 ▲  注释                      ▲  输入输出 ▲  数据类型               ▲  控制流 ▲  变量                      ▲  大数值 ▲  运算符                  ▲  数组   现在,假定已经成功地安装了JDK,并且能够运行第2章中给出的示例程序.我们从现在开始将介绍Java应用程序设计.本章主要介绍程序设计的基本概念(如数

使用 CodeIgniter 创建一个简单的 Web 站点

原文:使用 CodeIgniter 创建一个简单的 Web 站点   参考源自: http://www.ibm.com/developerworks/cn/web/wa-codeigniter/index.html 我的第一个 CodeIgniter 项目(除HelloWorld外),现整理记录下来.   相关环境: 系统:ubuntu-10.04.3 Apache:httpd-2.4.7 PHP:php-5.4.22 MySQL:mysql-5.6.16 CI:CodeIgniter-2.2.

介绍一个简单的推广方案

企业怎样做好网络推广,相对来说企业网站的推广更简单,因为企业有两大优势是其他网站比不了的.一就是企业在线下已经有一定的品牌;二就是企业有自己的产品或者服务.所以针对这两个优势来说,大多数中小企业的网络推广还是比较好做的.以下是守护制作的一个简单的推广方案. 一.企业网络推广想达到什么效果.       对于网络推广来说,大家最关注的就是能达到什么效果,所以在做企业推广的时候我们就应该有一个定位,我们想要达到的效果是什么?是网络品牌或者是成交产品.对于企业网站运营者来说,设定这个目标后完成需要的时

如何使用SQLyogEnt来建立一个简单的数据库

如果你选择PHP进行网站建设,那你必须懂得php建立数据库,那用mysql数据就是必须的了.刚接触php的朋友也许对这个mysql数据库很陌生,但如果有一款非常好用的数据库管理工具,那是用起来就方便多了,笔者几天就向大家介绍一款mysql的管理工具SQLyogEnt,笔者是用的 SQLyogEnt是英文版,目前好像没有中文版,由于功能强大,所以SQLyogEnt很受PHP用户的喜爱,接下就用实例来讲解下如何使用 SQLyogEnt来建立一个简单的数据库. 今天我建立的数据库名叫"mydb&quo

c c++-求用c编写的一个简单的爬虫程序,高手赐教,不胜感激

问题描述 求用c编写的一个简单的爬虫程序,高手赐教,不胜感激 本人是初学者,要编写一爬虫程序,抓取60多万个网页上的信息,实在是无从下手,请高手给一个能看得懂的简单的爬虫程序学习用,多谢 解决方案 我也要写一个C爬虫,不过遇到了一些问题,比如58这样的网站,用getaddrinfo返回的ip无法连接,已经耽误了我好几天了,别的问题到还没遇到

C/C++中一个简单的enum手法(idiom)

今天写程序的时候,又用到这个idiom了,于是顺便贴出来.这个idiom蛮简单的,估计很 多人都用过.今天主要是贴出来给新手参考(老手们就甭费时看此帖了). 为了说明这个手法具体该咋用,咱举一个简单的例子来说事儿.比方说要开发一个网络程 序,其中需要统计各种网络协议的数据包数量. ★版本1 假设一开始只需要处理HTTP和FTP两种协议.有些同学不假思索,立即会声明如下两个整 数用于统计: int nCntHttp = 0; int nCntFtp = 0; 猛一看,似乎没啥问题.但是,如果需求发

如何做一个简单的小网站

如何做一个简单的小网站,请注意:拥有域名不代表你就有了网站.做之前要想一下,网站用来干什么?静态的还是动态的,自己至少要懂一点代码知识,不懂程序的话,也要对html多少了解一些. 不然,我建议你还是到各大网站申请个Blog写日志算了:) 如果你: 1.做个简历式的小网站 上面就放些文章,图片或者资料,且文件不多,那么选择静态空间就搞定.你可以自己或者找人来做个网页的模版,自己套内容就 可以. 整体下来只要99元,包括域名和空间.在http://www.nicenic.com/design/?s=