<?xml version="1.0" encoding="gb2312" ?>
<ApeML LID="CHS" MD="0" 抓屏模式="0" 名称="icctv-vote" 作者="xing006" 信息窗口="false" 速度="15" 循环次数="20" 自定义属性="ConnectionName = adsl,ConnectionPassword = m7x9b6r4,ConnectionUser = 100001230164">
 <!--创建时间:2005年11月30日-05:07-->
 <脚本区块 语言="LAScript" 名称="init" 延时="0" 启用="true" 编辑密钥="" 运行公钥="">
  <![CDATA[
_set = ape:loadSetting(); --读取自定义属性
stopPlay = function() --这个函数回放停止时被调用.
 ape:saveSetting(_set); --保存自定义属性
 collectgarbage();--清理内存
end;

import("net");
import("clean");

Forms=net.System.Windows.Forms
Drawing=net.System.Drawing

Form=Forms.Form
TextBox=Forms.TextBox
Label=Forms.Label
Button=Forms.Button
Point=Drawing.Point
Size=Drawing.Size
FormStartPosition=Forms.FormStartPosition
wb = web.new();

identify= function()
  
  clean.IE(false,true);
  local strUrl="http://"
  
  wb:setSilent(true,true);
  wb:go(strUrl);
  wb:show(false); 
  delay(200);
  
  for i=1,100,1 do      
   if(wb:getEle("CheckCode_input"))then
    local img=image.new();   
    img:getURL("http://","*.gif");
    
    if(img:ok())then
     img:corp(5,4,41,14);--对图进行修剪;
     local img2,img3,img4,img5=img:split(1,4);
     if(img2)then
      img2:median(2);--是否加中值滤波,及中值滤波的值,要根据实际情况进行调整。;
      img3:median(2);
      img4:median(2);
      img5:median(2);
     end;
  
     imgBinKey=bytestoImg();--得到包含样本图片的表
     local str="";--识别出来的文字
     str=test(imgBinKey,img2);
     str=str..test(imgBinKey,img3);
     str=str..test(imgBinKey,img4);
     str=str..test(imgBinKey,img5);   
     local ele=wb:getEle("CheckCode_input")
     ele:setAttribute("value",str);
     ele:submit();--提交表单
     image.del(img);
     image.del(img2);
     image.del(img3);
     image.del(img4);
     image.del(img5);
     element.del(ele);
     break;         
    end;
   end;
 
   if(i==100)then
    return false;
   end;
   delay(100)   
  end; 
  return true;
end;

function isConnect(url)

local str = web.getURL(url);
 if (str=="")then 
  return false;
 end;

if( string.find( str, "找不到服务器" ) )then
   return false;
 end;

if( string.find( str , "没有可以显示的页面" ) )then
    return false;
 end;
 return true;
end;

function isConnectX()
 NETWORK_ALIVE_LAN  = 0x00000001 --是否有可用网卡
 NETWORK_ALIVE_WAN  = 0x00000002 -- 是否有可用远程连接
 NETWORK_ALIVE_AOL  = 0x00000004 -- NETWORK_ALIVE_AOL(仅对98/95有效判断是否联上美国的网络)

--IsNetworkAlive的参数是传址的,所以需要用P来标记参数类型,然后在返回值中添加一个返回值flag
 IsNetworkAlive = dll.open("sensapi.dll", "IsNetworkAlive", "I(P)","stdcall")
 ok,flag = IsNetworkAlive(NETWORK_ALIVE_WAN); --ok对应上面的默认返回值I,flag对应上面的输出参数返回值P
 -- 注意上面的参数 ,应在网络连接以后延迟一下再检测是否有活动的连接

if( ok == 0 )then
     return false;
 else
     if( (flag & NETWORK_ALIVE_WAN) == NETWORK_ALIVE_WAN)then
         return true;
     else
         return false;
     end;
 end;
end;

bytestoImg= function()
 local codeKey=ape:loadTable("验证码样本");--从数据岛读取表
 local imgBinKey={};--这个表是放真正的图像的
 
 toImage= function(k,v)
  local img9=image.new();
  img9:setBytes(string.decode(v,""),"*.gif");
  imgBinKey[k]=img9;
 end;
 
 table.foreach(codeKey,toImage)
 return imgBinKey;--调用函数,将返回包含样本图片的表
end;

test= function(imgBinKey,imgX)
 local limit=9999;
 local chr="";
 
 testImg= function(k,v)
  local n=imgX:testXX(imgBinKey[k]);
  if (n<limit) then
   limit=n;
   chr=k.."";
  end;
 end;
 
 table.foreach(imgBinKey,testImg);
 return chr
end;

function dail(connN,connU,connP)
 collectgarbage();
 win.exec(win.getSysDir().."//rasdial.exe"," "..connName.." /DISCONNECT",win.getSysDir(),0);
 delay(2*1000); --延时2秒  
 win.exec(win.getSysDir().."//rasdial.exe"," "..connName.." "..connUser.." "..connPassword,win.getSysDir(),0);
 delay(5*1000); --延时2秒
end;

function btnVote_click(sender,args)

connName = txtConnectionName.Text;
 connUser = txtConnectionUser.Text;
 connPassword = txtConnectionPassword.Text;
 
 ape:setRunNumber(txtVoteCount.Text);
 local i = 0;
 local j= ape:getRunNumber();
 while(i<j)
 do
  if(math.mod(i,10)==0)  then
   dail(connName,connUser,connPassword);
   if(isConnectX())then
       if(identify())then
     i=i+1
     lblValue.Text = i.."/"..j
     delay(1000);
    end;
   end;   
  else
   if(not isConnectX())then    
    dail(connName,connUser,connPassword);
   end;
   if(identify())then
    i = i + 1;
    lblValue.Text = i.."/"..j;
    delay(1000);
   end;
  end;  
 end;
end;

form = Form();
txtVoteCount = TextBox();
txtConnectionName = TextBox();
txtConnectionUser = TextBox();
txtConnectionPassword = TextBox();
lblVoteCount = Label();
lblConnectionName = Label();
lblConnectionUser = Label();
lblConnectionPassword = Label();
lblPercent = Label();
lblValue = Label();
btnVote = Button();
 
form:SuspendLayout();
 
lblVoteCount.Location = Point(10, 10);
lblVoteCount.Name = "lblVoteCount";
lblVoteCount.Size = Size(40, 10);
lblVoteCount.TabIndex = 0;
lblVoteCount.Text = "票数:";
 
txtVoteCount.Location = Point(80, 10);
txtVoteCount.Name = "txtVoteCount";
txtVoteCount.Size = Size(60, 60);
txtVoteCount.TabIndex = 1;
txtVoteCount.Text ="20000"
 
lblConnectionName.Location = Point(10, 40);
lblConnectionName.Name = "lblConnectionName";
lblConnectionName.Size = Size(70, 10);
lblConnectionName.TabIndex = 2;
lblConnectionName.Text = "拔号连接名:";
 
txtConnectionName.Location = Point(80, 40);
txtConnectionName.Name = "txtConnectionName";
txtConnectionName.Size = Size(60, 60);
txtConnectionName.TabIndex = 3;
txtConnectionName.Text ="adsl" 
 
lblConnectionUser.Location = Point(10, 70);
lblConnectionUser.Name = "lblConnectionUser";
lblConnectionUser.Size = Size(70, 10);
lblConnectionUser.TabIndex = 4;
lblConnectionUser.Text = "拔号用户名:";
 
txtConnectionUser.Location = Point(80, 70);
txtConnectionUser.Name = "txtConnectionUser";
txtConnectionUser.Size = Size(60, 60);
txtConnectionUser.TabIndex = 5;
txtConnectionUser.Text ="100001230164"
 
lblConnectionPassword.Location = Point(10, 100);
lblConnectionPassword.Name = "lblConnectionPassword";
lblConnectionPassword.Size = Size(70, 10);
lblConnectionPassword.TabIndex = 6;
lblConnectionPassword.Text = "拔号密码:";
 
txtConnectionPassword.Location = Point(80, 100);
txtConnectionPassword.Name = "txtConnectionPassword";
txtConnectionPassword.Size = Size(60, 60);
txtConnectionPassword.TabIndex = 7;
txtConnectionPassword.Text ="m7x9b6r4";

lblPercent.Location = Point(10, 130);
lblPercent.Name = "lblPercent";
lblPercent.Size = Size(70, 10);
lblPercent.TabIndex = 8;
lblPercent.Text = "进度:";

lblValue.Location = Point(80, 130);
lblValue.Name = "lblValue";
lblValue.Size = Size(70, 10);
lblValue.TabIndex = 9;
--lblValue.Text = "";
 
btnVote.Location = Point(70, 170);
btnVote.Name = "btnVote";
btnVote.TabIndex = 10;
btnVote.Text = "开始投票";
btnVote.Click:Add(btnVote_click);
 
form.AutoScaleBaseSize = Size(5, 13);
form.ClientSize = Size(200, 200);
form.Controls:Add(lblVoteCount);
form.Controls:Add(txtVoteCount);
form.Controls:Add(lblConnectionName);
form.Controls:Add(txtConnectionName);
form.Controls:Add(lblConnectionUser);
form.Controls:Add(txtConnectionUser);
form.Controls:Add(lblConnectionPassword);
form.Controls:Add(txtConnectionPassword);
form.Controls:Add(lblPercent);
form.Controls:Add(lblValue);
form.Controls:Add(btnVote);
form.Name = "MainForm"
form.Text = "ICCTV Vote"
form.StartPosition = FormStartPosition.CenterScreen
form.MaximizeBox=false;
form.MinimizeBox=true;
form:ResumeLayout(false);
form:ShowDialog();]]>
 </脚本区块>
 <数据区块>
  <验证码样本>
   <item key="0" value="R0lGODlhCQAKAOMAAP///wAAAMjIyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAAAAP8ALAAAAAAJAAoAAAQWEMhApaX4Bj1tB5sXhtdEViZImqjnRgA7" ktype="string" vtype="string" />
   <item key="1" value="R0lGODlhCQAKAOMAAP///wAAAMjIyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAAAAP8ALAAAAAAJAAoAAAQTEMgQpAW0Xpz31BsYehOJkZ1pRQA7" ktype="string" vtype="string" />
   <item key="2" value="R0lGODlhCQAKAOMAAP///wAAAMjIyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAAAAP8ALAAAAAAJAAoAAAQXEIAQZrXXTsl3l9SnfWFHZVyZnuTpBhEAOw==" ktype="string" vtype="string" />
   <item key="3" value="R0lGODlhCQAKAOMAAP///wAAAMjIyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAAAAP8ALAAAAAAJAAoAAAQUEIRJgb124qt3x9WWBWJWdihZXhEAOw==" ktype="string" vtype="string" />
   <item key="4" value="R0lGODlhCQAKAOMAAP///wAAAMjIyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAAAAP8ALAAAAAAJAAoAAAQWEEgZwpzV3qyp7hWGfSFQZpeYUmsaAQA7" ktype="string" vtype="string" />
   <item key="5" value="R0lGODlhCQAKAOMAAP///wAAAMjIyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAAAAP8ALAAAAAAJAAoAAAQVEIQAqpX30lxn35zHYeMmSqB3jkAEADs=" ktype="string" vtype="string" />
   <item key="6" value="R0lGODlhCQAKAOMAAP///wAAAMjIyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAAAAP8ALAAAAAAJAAoAAAQWEIAQZpVUTn01915mcZ3YjWiaiaAXAQA7" ktype="string" vtype="string" />
   <item key="7" value="R0lGODlhCQAKAOMAAP///wAAAMjIyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAAAAP8ALAAAAAAJAAoAAAQUMIA5g6T4YmA311S3iRn4mZ93ehEAOw==" ktype="string" vtype="string" />
   <item key="8" value="R0lGODlhCQAKAOMAAP///wAAAMjIyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAAAAP8ALAAAAAAJAAoAAAQVEIAQZpVUWnw391/2jR02gpmorVIEADs=" ktype="string" vtype="string" />
   <item key="9" value="R0lGODlhCQAKAOMAAP///wAAAMjIyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAAAAP8ALAAAAAAJAAoAAAQWEIAQZpVUWnwx19m3aWRHTiDYUezpRgA7" ktype="string" vtype="string" />
  </验证码样本>
 </数据区块>
</ApeML>

注意:需要dotnet1.1支持.

用模拟精灵写的自动投票系统相关推荐

  1. 自动投票系统【二】模拟登录提交

    当然现在就要模拟的登录,跟目标主机的交互,就要进行欺骗.咳,先来baidu,google一下.百度自动投票.资料还不少,还有现成的软件.还有专门做这样的公司.真是 .算了不评论了.我们来学习技术.下面 ...

  2. 如何写一个自动投票工具

    当然,自动投票这个违反了正常竞争,不提倡,这里只就技术问题做个探讨. 投票服务器一般的验证条件: [list] [*]IP地址不能重复 [*]Cookie验证 [*]验证码验证 [/list] 一个自 ...

  3. 模拟实现简单的自动售货系统

    题目描述 1 总体说明 考生需要模拟实现一个简单的自动售货系统,实现投币.购买商品.退币.查询库存商品及存钱盒信息的功能. 系统初始化时自动售货机中商品为6种商品,商品的单价参见1.1规格说明,存钱盒 ...

  4. 自动投票系统【四】C# 清除Cookies

    现在都已经准备好了就欠东风了cookies和更换ip. 在越来越多的网站使用了Cookie技术,它给我们带来方便的同时,也给我们带来了一点小麻烦. 比如网站的自动登录. 在网上没有找到合适的代码,于是 ...

  5. 自己写的微信投票系统的小功能

    一. 微信投票活动功能介绍 1. 活动添加.修改.删除(包含:活动名称.关键词.模板选择.背景音乐.广告图片.微信分享描述.微信分享外链图标.微信引导关注提示语.投票引导关注提示语.每个微信用户可投票 ...

  6. 记一次简单的自动投票操作

    朋友在社区居委会上班,偶尔会有一些投票活动,每个人都有任务,得投到多少票才行,有点烦人又浪费时间,所以就想写一个自动投票的,这次是这个网址,规则: 选择其中一个视频,点击下方的 "投票&qu ...

  7. java 模拟投票代码_求投票系统(Java源代码)

    求投票系统(Java源代码) 关注:175  答案:3  mip版 解决时间 2021-02-02 21:06 提问者 侑點尐悲伤 2021-02-02 16:54 设计一个投票系统来进行调查.评选或 ...

  8. 模拟投票系统--c语言版

    模拟投票系统–c语言版 题目及要求 请设计完成一个投票系统,实现三个角色: 选民.备选对象.管理员: 实现参加票选.管理投票过程.结果查询与公布.加入投票等.代码要能提供以下几个基本功能. (1)注册 ...

  9. 教大家用按键精灵写一个快手自动抢红包脚本

    教大家用按键精灵写一个快手自动抢红包脚本 先设计好界面,为了节省大家的时间,界面方面我们早就设计好了,请看下面 设计好界面后就进入写代码的步骤,这个其实你可以先录制一遍,然后把录制的代码进行二次修改, ...

最新文章

  1. golang 日志输出
  2. iftop 监控linux服务器网卡流量
  3. 基于linux-2.6.35的class_create(),device_create解析
  4. SAP gateway系统和后台系统的OData双重cache机制
  5. vsftp服务器搭建
  6. jpa 托管_java – jpa非托管实体
  7. SharePoint Server 2016 部署安装(七)—— 配置SharePoint Server
  8. 201521123054 《Java程序设计》 第2周学习总结
  9. 理解 Delphi 的类(三) - 初识类的属性
  10. ubuntuQQ怎末安装
  11. 422串口线互连的接法
  12. ps图标长投影如何做?
  13. 北京大学 引进一位人工智能世界级专家!
  14. Python-字符串
  15. android 九宫格封装,Android 实现九宫格、点击图片放大全屏浏览等
  16. 【PBL项目实战】户外智慧农场项目实战系列——1.阿里云物联网平台的开通与云端可视化应用的新建
  17. 软件设计师知识点(七):程序设计语言与语言处理程序、法律法规知识
  18. 电子商务格局下的营销未来
  19. SCAU 2018 初出茅庐 题解
  20. CSS 学成网(二)

热门文章

  1. 新概念二册 Lesson 28 No parking禁止停车 ( 定语从句)
  2. 我现在正在使用blender,我从HDRI网站上面下载的.exr格式的世界贴图,但是使用的时候,非常的暗,和网站上面的效果图不一样,效果图非常明亮,我该怎么做才能变成那样...
  3. ios ScrollerView之图片轮播器
  4. 动物代谢成像(SPECT/PET)放射性同位素标记实验/18f/99mtc/125l/68Ga放射性标记
  5. 全网最全抓包攻略丨傻瓜式Fiddler教程大全丨手把手从安装到抓包
  6. MySQL | 存储
  7. paddlepaddle初步印象
  8. vue开发饿了吗外卖app④——使用vue-resource获取数据
  9. 【项目一】 认识linux操作系统
  10. Qt Debug 各种错误解决方法