[as3]Flash自动进入方便面三国游戏

之前有一段时间在玩webgame,本来打算看能不能看发出简单的外挂,让自己玩游戏玩得更简单些,可惜没时间,最终只是用flash开发了一个账号登陆器,就是预先存多个账号,然后选择对应的账号,就会登陆到游戏里面,绕过每次输入帐户密码的过程。
下面发送的是根据账号自动登陆的flash,把生成出来的gameurl复制到浏览器上,就可以马上进去游戏了
演示flash:


接下是简单的原理说明:其实就是利用Flash去请求网页,然后解析网页返回的数据,提取出自己所需要的数据,然后再进一步请求页面,如此反复而已:


再接下来就是代码的简单说明了
这是初始函数
程序代码 程序代码

/**
             * 程序入口
             * @author 弃天笑
             * @date 2008.06.10
             */  
            private function init():void
            {
                System.useCodePage = true;
                //获取登陆首页数据
                loader = new URLLoader();
                request = new URLRequest();
                requestEsate = "fmbMain";
                request.url = "http://baidu.51wan.com/login_51wan.php?game=fbmsg";
                request.method = URLRequestMethod.POST;
                loader.addEventListener(Event.COMPLETE,onLoader);
                loader.load(request);
                
                serverList.dataProvider = boxData;
                loginBtn.enabled = false;
                copyBtn.enabled = false;
                nameText.text = "sujun.org";
                passText.text = "123456";
            }

程序代码 程序代码

//进行登陆请求,分析出必须的参数
                    var idNameFind:String = "test.setAttribute('name','";
                    var idName:String = getStringValue(contents,idNameFind,"')");
                    var timestampValue:String = getStringValue(contents,"'timestamp').value='","';");
                    var signValue:String = getStringValue(contents,"('sign').value='","';");
                    //加入参数,分析页面代码
                    var variables:URLVariables    = new URLVariables();
                    variables[idName] = idName;
                    variables["timestamp"] = timestampValue;
                    variables["sign"] = signValue;
                    variables["dontupdateagain"] = "dont";
                    variables["gamename"] = "fbmsg";
                    variables["username"] = nameText.text;
                    variables["password"] = passText.text;
                    //进行登陆连接
                    requestEsate = "login"
                    request.url = LOGIN_URL;
                    request.data = variables;
                    loader.load(request);

这一段是解析登陆页面的一些数据,例如解析出页面包含的验证码什么的
程序代码 程序代码

//根据从字符串中取出所需的数据
            private function getStringValue(contents:String,findStr:String,endSign:String):String
            {
                var idNameFind:String = findStr;
                var idNameStart:int = contents.indexOf(idNameFind);
                var idNameEnd:int = contents.indexOf(endSign,idNameStart);
                var idName:String = contents.substring(idNameStart + idNameFind.length,idNameEnd);
                return idName;
            }


全部代码就不贴出来了,大家可以把代码下载下去,用flex编译一下就可以运行看到效果了
代码下载:
下载文件 点击下载此代码


[本日志由 弃天笑 于 2008-11-13 02:45 PM 编辑]
文章来自: 本站原创
引用通告地址: http://www.sujun.org/trackback.asp?tbID=39
Tags:
评论: 4 | 引用: 0 | 查看次数: 2861
  • 1
弃天笑 [2008-11-24 02:45 PM]
解析他的html代码,把所有需要提交的内容都用程序过去,包括html里面隐含的提交数据,例如那个验证码等等

轻骑兵 [2008-11-24 11:44 AM]
问题是他post一大堆变量过去,都不知道哪个对哪个呢:)
弃天笑 [2008-11-21 11:21 PM]
解析他的HTML代码就可以了呀
轻骑兵 [2008-11-21 09:46 AM]
你怎么分析到这个webgame登陆时,post过去的用户名的变量和密码的变量呢。
  • 1
发表评论
昵 称:
密 码: 游客发言不需要密码.
验证码:
内 容:
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.
字数限制 1000 字 | UBB代码 开启 | [img]标签 关闭
Google