用AutoIt写网页外挂系列之 开心网的X世界网页游戏自动送免费礼物

本文介绍了一款用于开心网X世界的外挂开发过程,该外挂能够自动为好友发送急救包,采用AutoIt与jQuery实现自动化操作。

外挂是个不错的东西, 它可以将你从重复和无聊的点击中解放出来,帮助你更快的升级, 本文主要是针对开心网的X世界做的一个开发外挂教程。这个外挂的功能非常简单,主要用来自动发送“急救包”给你的好友,开发这个外挂用到技术包括AutoIt和jQuery, 如果你有这2方面的经验,应该能更好的理解以下的内容。

 

首先, 你要先登录开心网。然后,转到免费礼物页面: “http://www.kaixin001.com/!spiderman/gift.php”。点击右键->“查看源代码”,在打开的窗口中搜索“急救包”, 我们注意到“急救包”所在的div块, 它的id属性是“free_Nlkuai_Inv”:

image

我们知道如果要发送一个免费礼品给好友,必须先点一个“送给好友”图标 ,一般位于小窗口的底部。在源代码的“急救包”下面第2行,大家能看到一个”a”标签,它的title属性正好就是“送给好友”, 这一行就是我们要找的点击图标。 我们可以看到它的class属性值为”sr_butt”,那么, 我们在jQuery如何定位到这个元素呢? 其实很简单, 可以参考以下代码:

jQuery('#free_Nlkuai_Inv').find('.sr_butt')

 

我们的思路很简单, 利用AutoIt找到这个发送按钮节点,然后执行click事件。关于如何在AutoIt里使用JQuery,可以参考以前的文章“AutoIt结合JQuery开发教程”。打开AutoIt应用程序, 新建一个空白文件,主要代码如下:

Opt('MustDeclareVars', 1)
Opt("SendKeyDelay",250)

Local $objCOMError, $objAppIE, $jQuery
$objCOMError = ObjEvent("AutoIt.Error", "_COMErrorHandler")
;~ //创建IE对象
$objAppIE = ObjCreate("InternetExplorer.Application")
$objAppIE.visible = True

;~ //定义好友列表
Local $avArray[1]
$avArray[0] = "a";

;~ //入口方法
Main()

Func Main()
    FOR $element IN $avArray
        Sleep(1000)
        if(StringLen ($element) <= 0) Then ContinueLoop
        SendGift($objAppIE, $element)
    Next
EndFunc

;~ //点击按钮,发送免费礼物
Func SendGift($objAppIE, $user)
    Local $url = "http://www.kaixin001.com/!spiderman/gift.php"

    $objAppIE.navigate($url)
    $jQuery = _insertjQuery($objAppIE)
;~     //找到“救急包”,并执行click事件
    $jQuery.jQuery('#free_Nlkuai_Inv').find('.sr_butt').get(0).click()
;~    //弹出窗口,定位到第一个文本框
    $jQuery.jQuery('#gift_friend').get(0).focus()
;~   //执行click
    $jQuery.jQuery('#gift_friend').get(0).click()
    Sleep(1000)
;~    //输入好友名称
    Send($user)
;~    //循环,直到好友名称返回

    Local $Count = 0
    Do
        Sleep(1000)
        $Count = $Count + 1
;~        //返回的值
        Local $userName = $jQuery.jQuery('.sgt_on').get(0)
        If(IsObj($userName) == 1) Then
            ExitLoop
        Else
;~           //如果没有返回名称,再次输入用户名
            $jQuery.jQuery('#gift_friend').get(0).focus()
            $jQuery.jQuery('#gift_friend').get(0).click()
            Send($user)
        EndIf
    Until $Count == 5
;~     //无法找到该用户名称,返回
    If($Count == 5) Then
        Return
    EndIf
;~    //返回的名称
    Local $userName = $jQuery.jQuery('#f_suggest_0').get(0)
    If(IsObj($userName) == 1) Then
        Send("{ENTER}")
;~        //点击“赠送”图标
        $jQuery.jQuery('.btn_con').find('.promote').get(0).click();
;~         //成功窗口
        Local $Succ = $jQuery.jQuery('.xworld_popup').find('.popup_con > .promote').get(0)
        If(IsObj($Succ) == 1) Then
           Local $text = $Succ.innerText;
           if("关闭" == $text) Then
              $jQuery.jQuery('.popup_con').find('.promote').get(0).click()
           EndIf
        EndIf
    Else
;~          //关闭窗口
          $jQuery.jQuery('.btn_con').find('.promote').get(1).click()
    EndIf

EndFunc

Func _insertjQuery($objAppIE)
    Local $objWindow, $objHead, $objScript
    _IEPageLoadWait($objAppIE)
    $objWindow = $objAppIE.document.parentWindow
    $objHead = $objAppIE.document.getElementsByTagName('head').item(0)
    If Not(IsObj($objWindow.jQuery)) Then
        $objScript = $objAppIE.document.createElement('script')
        $objScript.type = 'text/javascript'
        $objScript.defer = 'defer'
        $objScript.text = FileRead(@ScriptDir & '\jquery-1.4.2.min.js')
        $objHead.appendChild($objScript)

        While Not(IsObj($objWindow.jQuery))
            Sleep(100)
        WEnd

        $objWindow.jQuery.noConflict()
    EndIf
    Return $objWindow
EndFunc

Func _IEPageLoadWait($objAppIE)
    Do
        Sleep(100)
    Until ($objAppIE.readyState = 'complete' Or $objAppIE.readyState = 4)
    Do
        Sleep(100)
    Until ($objAppIE.document.readyState = 'complete' Or $objAppIE.document.readyState = 4)
EndFunc

Func _COMErrorHandler()
    Switch $objCOMError.number
    Case -2147352570
        Return 0
    Case Else
; Don't use central errorhandler
        MsgBox(8240, "Automation Error", "Unhandled COM Automation Error." & @CRLF & @CRLF & _
                    "This operation resulted in an unhandled error." & @CRLF & @CRLF & _
                    "Technical Information: " & @CRLF & _
                    "Error Number: " & $objCOMError.number & @CRLF & _
                    "Error Description: " & $objCOMError.winDescription & @CRLF & _
                    "Line Number: " & $objCOMError.scriptLine & @CRLF & @CRLF & _
                    "Contact technical support for furthur help.")
        Exit
    EndSwitch
EndFunc

 

源代码示例:http://files.cnblogs.com/zhaojin/kaixin_training.rar

转载于:https://www.cnblogs.com/zhaojin/archive/2011/01/29/1947555.html

AuAceBox 是 Skyfore 开发的一款 Au3 辅助工具:该工具涵盖了大多 数 Au3 编程常用操作,可完美替代官方的 AccAu3Box. 开发语言:AU3、C++、等等,所以文件偏大! 版本特点: 1.酷炫 UI,扁平化窗口设计 2.常用操作一键集成,绝对给力; 3.支持用户自定义工具,方便功能扩展,支持展开环境变量 使用帮助: 1.程序中大部分都有气泡提示,根据气泡提示操作即可。 2.配置 AuMFCompiler 1.程序默认不自带 AuMFCompiler,如果您需要使用,请根据以下步骤配置: 2.到 Au3.Cc -> AuMFC专区 花200A币下载 AuMFC 3.打开主程序 AuAceBox.exe 打开 主菜单 -> 扩展功能 -> 配置 AuMFC 编译器 4.根据提示操作,完成后您就可以直接在主界面调用 AuMFC 编译器了! 3.创建桌面方式 1.如果您觉得本工具好用的话,可以按以下步骤直接创建快捷方式: 2.打开主程序 AuAceBox.exe 打开 主菜单 -> 扩展功能 -> 程序设置 -> 选中 为 AuAceBox 创建桌面快捷方式 即可! 3.然后桌面上就会跳出快捷方式 "AuAceBox 专业版",OK,以后您就可以直接通过快捷方式运行本工具了 4.用户自定义工具 1.AuAceBox v2.1+ 版本提供用户自定义工具功能 2.点击 首页大图标 -> 实用工具汇总 -> 用户工具 -> 配置用户工具箱 即可配置工具; 3.工具格式:每行一个工具,格式如: 工具名=路径(或URL) 4.自定义工具支持如下环境变量: %APPDIR%:AuAceBox.exe 所在目录 %AU3DIR%:AutoIt3.exe 所在目录 %ScriptFile%:载入 Au3 脚本路径 5.检查更新窗口弹出为何有延时 1.更新先获取网络版本号,更新日志,更新地址 2.再显示更新窗口,所以会有些延迟,具体时间与网络环境有关 6.本程序是否开源 1.对不起,本程序为闭源程序,未来也不打算开源 2.要问原因?1.这个程序本来就没什么开源价值 2.伸手党泛滥... AutoIt v3 编程交流学习网 - Au3.Cc 版本更新日志: [2015/3/7 2.1.2.6] 1.修正 取消所有窗口半透明 2.修正 更新窗口若无可用更新自适应为 初始化程序 3.新增 原生支持托盘功能,适应不同用户需求 4.新增 托盘双击显示、隐藏主窗口 5.新增 托盘显示 内置/用户 工具 6.修正 关于对话框标题栏显示程序版本号 7.新增 Ctrl+F12 显示隐藏主界面 8.修正 AuAceBox 更新逻辑 9.新增 AuAceBox 设置中心 AuAceManager 10.新增 支持手动限制自动吸附 11.优化 AuAceBox 吸附效率/未知吸附情况 12.修正 新功能增加后对应控件/托盘说明 [2015/3/5 2.1.2.4] 1.新增 检查更新功能 2.新增 AuAceBox 专属浏览器 3.新增 修正 N 多窗口主题 4.新增 无人值守自动更新 功能 5.新增 Au3.Cc 链接支持两种打开方式 6.修正 菜单文字以及描述 7.修正 访问网站链接指向 AuAceBox 专属浏览器. 8.修复 2.1 版本中的某些 BUG. 9.修正 关于页文字说明来自 ReadMe.Txt (如果存在) 10.优化 保证效率下减小附加组件内存及CPU占用率 [2015/3/2 2.1.0.34] 1.删除 Au3 脚本录制工具链接 2.新增 内置实用工具 ,用于放置 AU3 辅助工具,从此本人的所有 AU3 辅助工具就都会直接嵌入至 AuAceBox ! 3.新增 GUID 生成器; 4.新增 RegExTester 内嵌插件,绝对给力! [2015/3/2 2.1.0.9] 1.调整 根据用户反馈,调整编译栏背景色 2.修正 部分文字描述 [2015/3/1 2.1.0.6] 1.调整 调整UI,使其看起来更和谐; 2.修正 AuAceBox.Tool 增加部分工具; [2015/3/1 2.1.0.5] 1.修正 修复1.0版本的 N 多 BUG; 2.修正 完全重代码,加快程序运行速度 3.新增 用户自定义工具功能 4.修正 窗口乱跑的问题 5.去除 托盘,用户定义工具集成于图标菜单 6.新增 支持程序环境变量(支持系统原有的如%WINDIR%) %AU3DIR% %APPDIR% %ScriptFile%
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值