一个简单的投票机器人

2016-02-19 12:47 8 1 收藏

关注图老师设计创意栏目可以让大家能更好的了解电脑,知道有关于电脑的更多有趣教程,今天给大家分享一个简单的投票机器人教程,希望对大家能有一点小小的帮助。

【 tulaoshi.com - 编程语言 】

一个简单的投票机器人昨天帮人报一个参加日语能力考试的朋友报名,无奈名额已满,需要不断重试碰运气。手工操作很麻烦,就决定做一个机器人试试,于是翻出了去年做的一个投票机器人。(报名机器人另文再写)      那时非典被困在宿舍,做毕设的公司正在参加一个十大新兴技术企业的评选,有网上投票的环节。闲得无聊,就花了一天时间做了这个小程序。       简单看了一下,那个投票页面做得很业余,就一个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;

把生成的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;

(本文来源于图老师网站,更多请访问https://www.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;

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)设置代理服务器:表格 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 

来源:https://www.tulaoshi.com/n/20160219/1601952.html

延伸阅读
标签: ASP
  下面zip文件:http://www.content.aspdir.co.uk/files/Article-11.zip During this article you will learn how to construct your own web poll using ASP. The article presumes you already understand basic database interaction. The following samples of code allow a user to select one of four options to a question....
标签: PS
Photoshop制作机器人美女     【准备要求】: 1、Photoshop CS、CC系列 2、安装磨皮滤镜(素材包有地址) 3、钢笔要有点基础(不适合毫无基础用户) 4、如要自选素材需果体人物(有衣服不合适,可比基尼) 5、提交自选素材的作业请注意尺度,切勿违反吧规。 6、原素材比较大,建议小...
标签: PS
PS合成机器人   PS合成机器人
标签: PS
PS绘制设计剖析简单的机器人EVA   绘制设计剖析简单的机器人EVA教大家一些PS小知识咯! www.Tulaoshi.com

经验教程

811

收藏

81
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部