一个简单的投票机器人

东东哥的笑

东东哥的笑

2016-02-19 12:47

关注图老师设计创意栏目可以让大家能更好的了解电脑,知道有关于电脑的更多有趣教程,今天给大家分享一个简单的投票机器人教程,希望对大家能有一点小小的帮助。
一个简单的投票机器人昨天帮人报一个参加日语能力考试的朋友报名,无奈名额已满,需要不断重试碰运气。手工操作很麻烦,就决定做一个机器人试试,于是翻出了去年做的一个投票机器人。(报名机器人另文再写)      那时非典被困在宿舍,做毕设的公司正在参加一个十大新兴技术企业的评选,有网上投票的环节。闲得无聊,就花了一天时间做了这个小程序。       简单看了一下,那个投票页面做得很业余,就一个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:='HTMLmeta http-equiv="Content-Type" content="text/html; charset=gb2312"';   htmlbody:=htmlbody+'BODY background="bgpaper.gif"TITLE投票系统/TITLEp align="center" /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 (part10) 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=centerINPUT name="sub" TYPE=submit VALUE="提交"/TABLE/FORM/BODY/HTML';     end;

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)把生成的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;

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)然后模拟点击网页的提交按钮,提交表单数据:表格 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('SoftwareMicrosoftWindowsCurrentVersionInternet 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 
展开更多 50%)
分享

猜你喜欢

一个简单的投票机器人

编程语言 网络编程
一个简单的投票机器人

一个简单的PHP投票程序

PHP
一个简单的PHP投票程序

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

photoshop教程:合成一个撕开胸膛的人身机器人

PS PS教程
photoshop教程:合成一个撕开胸膛的人身机器人

机器人简笔画 机器人怎么画

机器人 简笔画 简笔画教程
机器人简笔画 机器人怎么画

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

机器人Wall

平面设计 标志设计 UI设计 VI设计
机器人Wall

机器人暴动攻略

电脑网络
机器人暴动攻略

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

使用Dephi组件的生存期管理

使用Dephi组件的生存期管理

标记语言——锚点

标记语言——锚点
下拉加载更多内容 ↓