一个简单的投票机器人

2016-02-19 12:47 13 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;

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

然后模拟点击网页的提交按钮,提交表单数据:表格 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;

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/) 最后界面: 图表 1 主界面(使用了一个界面的第三方包-SUIPackage 图表 2图表 1 主界面,同时查看投票过程和结果(使用了一个界面的第三方包-SUIPackage 

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

延伸阅读
机器人简笔画 材料:纸、笔 第一步:在准备的白纸上画出机器人的头部,头部和身体分为几步,首先是头部,一开始我们要画出一个正方形,在正方形上面画出一个半圆。 第二步:继续头部画法,在正方形的脑袋上一分为二在上面画出一个长方形作为眼睛半圆上面画出两个触角。 第三步:接着就是耳朵了,耳朵也不是平时耳朵那么简单画出时候...
标签: PS
Photoshop制作机器人美女     【准备要求】: 1、Photoshop CS、CC系列 2、安装磨皮滤镜(素材包有地址) 3、钢笔要有点基础(不适合毫无基础用户) 4、如要自选素材需果体人物(有衣服不合适,可比基尼) 5、提交自选素材的作业请注意尺度,切勿违反吧规。 6、原素材比较大,建议小...
标签: 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....
本教程的合成效果非常有创意。利用真人和一些机器素材组成半人半机器的人物效果。整个合成过程比较简单,不过合成的过程中要注意好各部分的衔接自然及颜色协调。 最终效果 1、打开一个人物素材。 2、新建一图层,然后使用椭圆选框,填充颜色为灰色。在女孩肚皮上啊! 3、使用加深工具(设置范围:高光; 曝光度: 35%),加深颜色...

经验教程

776

收藏

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