/loading.gif
搜索

WEB操作自动机类程序代码模版

于 11-16-2008, 18:51 由 xptool 最后提交. 共有 14 个回复.
当前第 1 页共 2 页(15 条记录)   1 2 下一页 >
帖子排序: 上个帖子 下个帖子
  •  05-21-2008, 13:30 2980

    WEB操作自动机类程序代码模版

           当使用模拟精灵编写WEB自动操作这一类应用程序时,按下面模版的示例程序结构进行修改,有利于把自动操作过程中
      各个环节的处理独立出来,使不同的处理功能模块化,使程序易写、易读、易调试。

    --------------------------------------------------------------------------------------------------- 

    <?xml version="1.0" encoding="gb2312" ?>
    <ApeML LID="CHS" MD="0" 抓屏模式="0" 名称="WEB操作自动机类程序代码模版" 作者="roking" 信息窗口="false" 速度="10" 循环次数="1" 自定义属性="运行提示=正在运行,运行次数=0">
     <!--whosay2006@163.com-->
     <脚本区块 语言="LAScript" 名称="init" 延时="0" 启用="true" 编辑密钥="" 运行公钥="">
     <![CDATA[

    --[[说明:
          当使用模拟精灵编写WEB自动操作这一类应用程序时,按下面模版的示例程序结构进行修改,有利于把自动操作过程中
      各个环节的处理独立出来,使不同的处理功能模块化,使程序易写、易读、易调试。
                                                 by roking
                                                    2006.08.06
    --]]

    ------------------------------------- 全局变量定义区 ---------------------------------------------

    wbTarget = nil;     --要自动操作的web页面所在的web对象
    strHtml = nil;     --目标页面中的“原始”html(未经web对象解析转换过的)
    bReady = nil;     --web.loadProc回调函数是否准备好执行wbTarget对象的回调事件,可在任何时候令bReady=false暂停回调函数功能的执行

    --------------------------------- web 窗体事件处理函数区 -----------------------------------------

    web.loadProc = function(url,wb)  --当一个网址重定向完成以后(无论成功或失败),自动调用它
        if (bReady and wb==wbTarget) then   --仅对目标web对象启用,可在任何时候令bReady=false暂停回调函数功能的执行
      strHtml = wbTarget:getHtml();  --原始html
      local strTitle = tostring(strHtml:match("<title>(.-)</title>"));  --网页的title

      if (strTitle=="目标网页标题1" or strTitle:match("目标网页标题1") or strHtml:match("目标网页内容中的特征字符串1")) then   --当目标网页处于状态1时
       do_my_function1();
      elseif (strTitle=="目标网页标题2" or strTitle:match("目标网页标题2") or strHtml:match("目标网页内容中的特征字符串2")) then  --当目标网页处于状态2时
       do_my_function2();
       
      --[[......--]] 
       
      elseif (strHtml:match("自动操作该结束时的特征字符串或您自定义的结束条件")) then  --自动操作完成
       do_exit();  --退出应用程序
      else --存在没有捕获的意外页面
       --[[
         ......这里记录日志或提示检查程序:自动操作过程中存在漏掉的没有考虑周全的网页页面
       --]]
       win.messageBox("请自行根据具体情况修改web.loadProc中的“页面状态检测条件”","说明");
       do_exit();  --退出应用程序
      end;
     end;
    end;


    --------------------------------------- 自定义函数区 ---------------------------------------------
    --[[当目标网页处于状态2时执行此功能--]]
    function do_my_function1()
     --这里是“当目标网页处于状态1时”应自动进行的操作代码
    end;

    --[[当目标网页处于状态2时执行此功能--]]
    function do_my_function2()
     --这里是“当目标网页处于状态2时”应自动进行的操作代码
    end;

    --[[结束应用程序--]]
    function do_exit()
     wbTarget = nil;
     stop();
     win.exit(0);
     do return false end;
    end;


    ---------------------------------------- 应用程序入口 --------------------------------------------
    bReady = false;    --禁止执行wbTarget对象的回调函数web.loadProc内的具体功能(因为可能需要在开始自动化操作前做一些准备)

    --[[

     ......这里是您的其他一些初始化语句,注意应放在wbTarget对象初始化之前,防止回调函数web.loadProc内的具体功能过早运作

    --]]

    wbTarget = web.new();  --创建对象时建议不要使用url参数
    wbTarget:setTitle(true);
    wbTarget:setScroll(true);
    wbTarget:show(true);

    bReady = true;    --启用执行wbTarget对象的回调函数web.loadProc内的具体功能
    wbTarget:go("http://your_target_url/");  --开始显示你的目标URL指定的页面,同时由web.loadProc中的代码开始自动操作
    wbTarget:wait(-1);

    do_exit();  --退出应用程序

    ]]>
     </脚本区块>
     <数据区块 />
    </ApeML>



    》》》遨游网际 我心飞翔《《《
    ▲▲▲山外青山天外天 白云深处有神仙 神仙本是凡人做 只怕凡人志不坚▲▲▲
    • 此贴赚了57个积分
    • 举报
  •  05-21-2008, 13:40 2982 回复至 2980

    回复: WEB操作自动机类程序代码模版

    这是我用此模板做的一个无心宠物外挂:

    ===========================================================

    <?xml version="1.0" encoding="gb2312" ?>
    <ApeML LID="CHS" MD="0" 抓屏模式="0" 名称="WEB操作自动机类程序代码模版" 作者="roking" 信息窗口="2" 速度="10" 循环次数="1" 自定义属性="运行提示=正在运行,运行次数=0">
     <!--whosay2006@163.com-->
     <脚本区块 语言="LAScript" 名称="init" 延时="0" 启用="true" 编辑密钥="" 运行公钥="">
     <![CDATA[

    --[[说明:
          当使用模拟精灵编写WEB自动操作这一类应用程序时,按下面模版的示例程序结构进行修改,有利于把自动操作过程中
      各个环节的处理独立出来,使不同的处理功能模块化,使程序易写、易读、易调试。
                                                 by roking
                                                    2006.08.06
    --]]

    ------------------------------------- 全局变量定义区 ---------------------------------------------
    mapurl="http://bbs.chinapyg.com/pet.php?index=fight&mapid=17";
    wbTarget = nil;     --要自动操作的web页面所在的web对象
    strHtml = nil;     --目标页面中的“原始”html(未经web对象解析转换过的)
    bReady = nil;     --web.loadProc回调函数是否准备好执行wbTarget对象的回调事件,可在任何时候令bReady=false暂停回调函数功能的执行

    _DLCTL_RESYNCHRONIZE= 0x00002000 --服务器将会被请求更新状态。如果服务器指出缓存信息是最新的,将会使用 缓存文件
    _DLCTL_PRAGMA_NO_CACHE = 0x00004000 --不管文件的更新状态如何,文件都会被从服务器重新下载

    myMP = 0;
    myMP_MAX=0;

    cwb = 0; --宠物币现金
    formhash = nil;

    SleepCount=0; --睡眠剩余次数
    t_lastkill=os.time();

    skill="mlightbomb";
    --------------------------------- web 窗体事件处理函数区 -----------------------------------------

    web.loadProc = function(url,wb)  --当一个网址重定向完成以后(无论成功或失败),自动调用它
     if (bReady and wb==wbTarget) then   --仅对目标web对象启用,可在任何时候令bReady=false暂停回调函数功能的执行
      strHtml = wbTarget:getHtml();  --原始html
      local strTitle = tostring(strHtml:match("<title>(.-)</title>"));  --网页的title
      local fh = strHtml:match(".name=.formhash..value=.(.-).>");
      if(fh) then
       formhash=fh;
      end;
      local HP_GuaiWu=strHtml:match("怪 物 HP:<font color=green>(.-)</font>");
      if (HP_GuaiWu) then
       HP_GuaiWu=tonumber(HP_GuaiWu);
      end;
      
      if(strHtml:match([[<span id="petmp">%d+ </span> / %d+ </font>]])) then
       myMP,myMP_MAX=strHtml:match([[<span id="petmp">(%d+) </span> / (%d+) </font>]]);
       myMP,myMP_MAX=tonumber(myMP),tonumber(myMP_MAX)
      end;
      
      local sc=strHtml:match("被催眠剩余 (.-) 回合")
      if (sc) then
       SleepCount=tonumber(sc);
      else
       sc=strHtml:match("alt=催眠术></span><br><b><font color=red>(%d+)</font>")
       if (sc) then
        SleepCount=tonumber(sc);
       end;
      end;
      
      if(strHtml:match("会员登录")) then
       do_login();
      elseif(strHtml:match("欢迎您回来")) then
       wbTarget:go("http://bbs.chinapyg.com/pet.php?index=bank");
      elseif(strHtml:match("快存") or strHtml:match("系统判定")) then
       delay(5000);
       buy_hbs();
       wbTarget:go(mapurl);
      elseif(strHtml:match("您的宠物已经死亡,还能打怪吗")) then
       wbTarget:go("http://bbs.chinapyg.com/pet.php?index=itemuse&storageid=45312");  --------使用复活宝石
      elseif(strHtml:match("提交答案") and strHtml:match([[1.2=]])) then
       do_answer(3);
      elseif (strHtml:match("提交答案") and strHtml:match([[5.5=]])) then
       do_answer(1);
      elseif (strHtml:match("提交答案") and strHtml:match([[少数民族]])) then
       do_answer(2);
      elseif (strHtml:match("警察") or strHtml:match("卧底") or strHtml:match("巡检") or strHtml:match("大J") or strHtml:match("Zufay") or strHtml:match("回答正确") or strHtml:match("超过60秒") or strHtml:match("这只怪兽已经死了") or strHtml:match("您存了.-块宠物币!") or strHtml:match("请输入正确的数量!")) then
       do_change_guai();
      elseif(strHtml:match("怪物死了另寻怪物")) then
       if( not strHtml:match("红宝石")) then
        buy_hbs();
        wbTarget:go(mapurl);
       end;
       cwb=strHtml:match("宠物币:.-(%d+)")
       if(cwb) then
        bReady = false;
        cwb=tonumber(cwb)
        if(cwb>50000 and formhash) then
         local savemoney="http://bbs.chinapyg.com/pet.php?index=bank&action=deposit&formhash="..formhash.."&nums="..cwb-11000;
         wbTarget:go(savemoney);  --------存钱
         wb:wait("");
        end;
        bReady = true;
       end;
       do_change_guai();
      elseif (strHtml:match("魔法不足")) then
       do_addMP();
      elseif (HP_GuaiWu) then
       if(strHtml:match("攻击过快")) then
        t_lastkill=os.time()-999;
       end;
       if((not strHtml:match("剩余时间")) and strHtml:match("三倍经验卡")) then
        wbTarget:doScript("dorequest('expcard3')","javascript");
        delay(3000);
       end;
       do_fight();
      else --存在没有捕获的意外页面
       delay(3000);
       wbTarget:go(mapurl);
      end;
     end;
    end;


    --------------------------------------- 自定义函数区 ---------------------------------------------
    --[[login--]]
    function do_login()
     local ele = wbTarget:getEle("username");
     ele:setAttribute("value","abc");
     local ele = wbTarget:getEle("password");
     ele:setAttribute("value","12345678");
     local ele = wbTarget:getEle("loginsubmit");
     ele:click();
    end;
    --[[换怪物--]]
    function do_change_guai()
     wbTarget:go(mapurl);
    end;

    --[[杀怪--]]
    function do_fight()
     if(SleepCount==0) then
      do_sleep();
     end;
     while(os.time()-t_lastkill<2) do
      delay(50);
     end;
     
     if(myMP>10000) then
      skill="mlightbomb";
     elseif(myMP<1800) then
      skill="mlight";
     end;

     wbTarget:doScript("doskill('"..skill.."');","javascript");
     t_lastkill=os.time();
    end;
    --[[补充MP--]]
    function do_addMP()
     for i=1,5 do
      wbTarget:doScript("dorequest('bmpitem');","javascript");
      delay(1000);
     end;
     do_fight();
    end;

    --[[补充背包中的红宝石--]]
    function buy_hbs()
     bReady = false;
     if(formhash) then
      local buyHBS="http://bbs.chinapyg.com/pet.php?index=itemshop&action=buyitem&itemid=40&formhash="..formhash.."&nums="..200;
      wbTarget:go(buyHBS);
      wbTarget:wait("");
      delay(5000);
      local baginHBS="http://bbs.chinapyg.com/pet.php?index=storage&action=bagin&storageid=45242&numsname=nums50&formhash="..formhash.."&nums="..200;
      wbTarget:go(baginHBS);
      wbTarget:wait("");
     end;
     bReady = true;
    end;

    --[[使用睡眠--]]
    function do_sleep()
     local isOK=false
     while((not isOK) and nStop()) do
      wbTarget:doScript("dorequest('callmcuimian');","javascript");
      delay(2000);
      local ele = wbTarget:getEle("msg");
      if(ele) then
       local str = ele:getText();
       if(str:match("怪物睡着了") or str:match("魔法效果尚未结束")) then
        isOK=true;
        local sc=strHtml:match("alt=催眠术></span><br><b><font color=red>(%d+)</font>")
        if (sc) then
         SleepCount=tonumber(sc);
        end;
        if(SleepCount==0) then
         SleepCount=1;
        end;
       elseif(str:match("MP不足")) then
        wbTarget:doScript("dorequest('bmpitem');","javascript");
       elseif(str:match("没有红宝石了")) then
        isOK=true
        wbTarget:go("http://bbs.chinapyg.com/pet.php?index=bank");
       end;
      end;
     end;
    end;

    --[[答题--]]
    function do_answer(n)
     --delay(500);
     local eles = { wbTarget:getEle("subjectkey"); }
     elesNo:setAttribute("checked","true");
       --提交答案  
     local submit;  --提交按钮ele
     local subeles = { wbTarget:eleAll() };
     for i=1,#subeles do
      local value = subelesIdea:getAttribute("value");
     
      if (value and value:match("提交答案")) then
       submit = subelesIdea;
       break;
      end;
     end;
     if (submit) then --若找到提交按钮,则按之
      submit:click();
     end;
    end;

    --[[结束应用程序--]]
    function do_exit()
     wbTarget = nil;
     stop();
     win.exit(0);
     do return false end;
    end;


    ---------------------------------------- 应用程序入口 --------------------------------------------
    bReady = false;    --禁止执行wbTarget对象的回调函数web.loadProc内的具体功能(因为可能需要在开始自动化操作前做一些准备)

    --[[

     ......这里是您的其他一些初始化语句,注意应放在wbTarget对象初始化之前,防止回调函数web.loadProc内的具体功能过早运作

    --]]

    wbTarget = web.new();  --创建对象时建议不要使用url参数
    wbTarget:setDL(_DLCTL_RESYNCHRONIZE);
    wbTarget:setSilent(true,true,true,true);
    wbTarget:setTitle(true);
    wbTarget:setScroll(false);
    wbTarget:show(true);
    hwnd = wbTarget:getWindow();
    --win.setRect(hwnd,800,600,10,10)

    bReady = true;    --启用执行wbTarget对象的回调函数web.loadProc内的具体功能
    wbTarget:go("http://bbs.chinapyg.com/pet.php?index=bank");  --开始显示你的目标URL指定的页面,同时由web.loadProc中的代码开始自动操作
    wbTarget:wait(-1);

    do_exit();  --退出应用程序

    ]]>
     </脚本区块>
     <数据区块 />
    </ApeML>


    》》》遨游网际 我心飞翔《《《
    ▲▲▲山外青山天外天 白云深处有神仙 神仙本是凡人做 只怕凡人志不坚▲▲▲
    • 此贴赚了8个积分
    • 举报
  •  05-21-2008, 14:06 2984 回复至 2980

    回复: WEB操作自动机类程序代码模版

    兄弟,你真牛

    认真学习你的大作

    • 此贴赚了1个积分
    • 举报
  •  05-21-2008, 14:08 2986 回复至 2980

    回复: WEB操作自动机类程序代码模版

    能将无心宠物外挂答题用数据库存储方式做出来就好了

    看了你的CCTV答题,看不懂

    太复杂了

    • 此贴赚了8个积分
    • 举报
  •  05-21-2008, 14:11 2987 回复至 2980

    hx 兄也过来了啊!

    lvcaolhx 兄也过来了啊!


    》》》遨游网际 我心飞翔《《《
    ▲▲▲山外青山天外天 白云深处有神仙 神仙本是凡人做 只怕凡人志不坚▲▲▲
    • 此贴赚了1个积分
    • 举报
  •  05-21-2008, 14:13 2988 回复至 2986

    回复: WEB操作自动机类程序代码模版

    lvcaolhx:

    能将无心宠物外挂答题用数据库存储方式做出来就好了

    。。

    咱那里的题目就那几道,就没有麻烦做那个功能,官方的还要搞验证码识别。


    》》》遨游网际 我心飞翔《《《
    ▲▲▲山外青山天外天 白云深处有神仙 神仙本是凡人做 只怕凡人志不坚▲▲▲
    • 此贴赚了1个积分
    • 举报
  •  05-21-2008, 20:23 3114 回复至 2980

    回复: WEB操作自动机类程序代码模版

    有点看不懂,

    • 此贴赚了1个积分
    • 举报
  •  05-22-2008, 8:20 3169 回复至 2980

    回复: WEB操作自动机类程序代码模版

    楼主高手 好好学习楼主

    • 此贴赚了1个积分
    • 举报
  •  05-26-2008, 9:24 3976 回复至 2980

    回复: WEB操作自动机类程序代码模版

    谢谢楼主了,把代码拿回去学习了
    • 此贴赚了1个积分
    • 举报
  •  05-30-2008, 9:38 4686 回复至 2980

    回复: WEB操作自动机类程序代码模版

    很复杂看不太明白,收藏,待以后再看
    • 此贴赚了8个积分
    • 举报
当前第 1 页共 2 页(15 条记录)   1 2 下一页 >
以 XML 格式显示 RSS 新闻频道
支持模拟精灵,复制本页链接给您的QQ好友    总是在下面显示回复窗口(不选可加快浏览速度)