AAuto - 12306(不能登录)

http://www.aau.cn/thread-5196-1-1.html

import win.ui;
import fsys.ini;
import web.form;
import win.ui.statusbar;
import inet.http;
import win.cur;
import process;
import web.form.util;
import win.clip;
/*DSG{{*/
var winform = win.form(parent=...; bottom=626;right=1170;border="resizable";text="AAuto Form" )
winform.add( 
static6={ dl=1;bottom=590;text="提交速度";left=273;top=574;z=14;db=1;transparent=1;right=325;cls="static" };
ed_code={ dl=1;bottom=590;text="";left=503;top=570;z=7;db=1;right=555;edge=1;cls="edit" };
static5={ dr=1;bottom=592;color=16711680;text="作者:carl";left=1067;notify=1;top=576;font=LOGFONT( underline=1 );transparent=1;db=1;right=1120;z=11;cls="static" };
static3={ dl=1;bottom=590;text="验证码:";left=392;top=574;transparent=1;db=1;z=6;right=437;cls="static" };
ed_password={ dl=1;bottom=590;text="";left=194;top=570;right=265;z=5;db=1;password=1;edge=1;cls="edit" };
picturebox={ dl=1;bottom=590;text="picturebox";left=437;top=568;z=8;db=1;notify=1;right=494;cls="picturebox" };
button2={ dl=1;bottom=595;text="暂停";left=735;top=571;z=9;db=1;right=773;cls="button" };
ed_num={ dl=1;bottom=590;right=359;left=327;top=570;z=15;db=1;text="";edge=1;cls="edit" };
webqq={ dr=1;bottom=561;right=1170;left=950;dt=1;top=0;z=17;db=1;text="webqq";transparent=1;cls="static" };
static={ dl=1;bottom=590;text="帐号:";left=7;top=574;transparent=1;db=1;z=2;right=41;cls="static" };
static2={ dl=1;bottom=590;text="密码:";left=158;top=574;transparent=1;db=1;z=4;right=192;cls="static" };
static7={ dl=1;bottom=590;text="秒";left=364;top=574;z=16;db=1;transparent=1;right=386;cls="static" };
bt_order={ dl=1;bottom=594;text="提交订单";left=613;top=570;z=12;db=1;right=677;cls="button" };
ed_user={ dl=1;bottom=590;right=152;left=43;top=570;z=3;db=1;text="";edge=1;cls="edit" };
static4={ dr=1;bottom=591;color=16711680;text="AAuto开发源码";left=972;notify=1;top=576;font=LOGFONT( underline=1 );z=10;db=1;right=1057;transparent=1;cls="static" };
ed_url={ dr=1;dl=1;bottom=22;text="";left=0;dt=1;top=0;z=13;right=950;edge=1;cls="edit" };
wb={ dr=1;dl=1;bottom=561;text="static";left=0;dt=1;top=26;z=1;db=1;right=950;transparent=1;cls="static" }
)
/*}}*/

web.form.util.crossDomain();
wb=web.form( winform.wb )
wb.noScriptErr=true;
wb.NewWindow2=function( ppDisp, Cancel) {
    /*弹出新窗口以前触发 */ 
    winform.setTimeout( 
        function(){
            wb.go( wb.translateUrl )
        },1
    ) 
    return ppDisp, true; /*第二个返回值如果为真,则取消新窗口*/  
}

wb.translate = function( url ){
    /*解析URL时触发 */
    owner.translateUrl = url; 
}

wb.NavigateComplete2 = function (pDisp, url) {
    winform.ed_url.text=wb.location;
} 

winform.ed_url.wndproc = function(hwnd,message,wparam,lparam){ 
    if (  message == 0x101/*_WM_KEYUP*/ ) { 
        if ( wparam == 0xD/*_VK_RETURN*/ ) {
            wb.go( winform.ed_url.text );
        }
    } 
}

winform.ed_code.wndproc = function(hwnd,message,wParam,lParam){ 
    if(message==135 and wParam==13 and #winform.ed_code.text=4){//按回车登录
        if(not start()){return false; }
        if(string.find(wb.body.outerHTML,"您所要提交的订单信息")){
            winform.bt_order.oncommand();
        }else {
            login()
        }
        
    }
}

mywb=web.form( winform.webqq ,0x4/*_UIFLAG_NO3DBORDER*/|0x8/*_UIFLAG_SCROLL_NO*/)
    mywb.go("http://v.t.qq.com/pendant/show.php?n=carlhk&w=220&h=560&fl=2&l=8&o=31&c=0&si=e40054364751102c5351b2da000a5accf3251e63")    

winform.picturebox.oncommand = function(id,event){
    downCode()
}

/// <summary>
/// 读取指定tag的值
/// </summary>
/// <param name="tagname">Tag名称</param>
/// <param name="idname">条件id名称</param>
/// <param name="idvalue">条件id值</param>
/// <param name="value">返回值名称</param>
/// <returns>string</returns>
readTagValue=function(html,tagname,idname,idvalue,value){
    tagname=string.lower(tagname);
    idname=string.lower(idname)
    value=string.lower(value)
    var uptag = string.upper(tagname);
    var upidname = string.upper(idname);
    var upvalue = string.upper(value);
    
    for str in string.gmatch( html,"(\<<" + tagname + ">|<" + uptag + ">\s.+?\>)") { 
        var k=string.match(str,"<" + idname + ">|<" + upidname + ">\s*?=\s*?['""]?(.+?)['""\>\s]")
        var v=string.match(str,"<" + value + ">|<" + upvalue + ">\s*?=\s*?['""]?(.+?)['""\>\s]"):"";
        if(k=idvalue){
            return v;
        }
    }
}
//初始化
load=function(){
    ini=fsys.ini("/config.ini")
    winform.ed_user.text=ini.read("CON","user"):"";
    winform.ed_password.text=ini.read("CON","password"):"";
    winform.ed_num.text=ini.read("CON","num"):"3";
    wb.go(buyUrl)
    status=win.ui.statusbar(winform)
    status.setText("操作说明:输入验证码按回车登录,点击验证码会重新刷新")
    downCode();
}
//开始
start=function(){
    status.setText("")
    user=winform.ed_user.text;
    password=winform.ed_password.text;
    delaynum=tonumber(winform.ed_num.text):3;
    if(user=="" or password==""){
        status.setText("请输入帐号密码")
        return false; 
    }
    ini.write("CON","user",user)
    ini.write("CON","password",password)
    ini.write("CON","num",delaynum)
    return true; 
}
//下载数据
downData=function(url,postdata){
    return win.invoke(
        function(url,postdata){
            import win;
            import inet.http;
            http=inet.http()
            if(postdata){
                html,msg=http.post(url,postdata);
            }else {
                html,msg=http.get(url)
            }
            http.close()
            return html,msg; 
        } ,url,postdata
    ) 
}
//下载验证码
downCode=function(){
    imgebuf=downData(codeUrl ++ math.random());
    if(imgebuf){
        //string.save("/aa.jpg",imgebuf )
        winform.picturebox.image=imgebuf;
    }
}
//登录
login=function(){
    if(not start()){return false; }
    code=winform.ed_code.text;
    winform.ed_code.text="";
    postdata="loginUser.user_name=" + user + "&nameErrorFocus=&user.password=" + password + "&passwordErrorFocus=&randCode=" + code + "&randErrorFocus="
    postUrl="https://dynamic.12306.cn/otsweb/loginAction.do?method=login";
    html,msg=downData(postUrl,postdata)
    html=string.fromto(html):""
    if(string.find(html,"当前访问用户过多")){
        status.setText("当前访问用户过多,请稍后重试!")
    }elseif(string.find(html,"请输入正确的验证码")){
        status.setText("验证码错误")
        
    }elseif(string.find(html,"欢迎您")){
        status.setText("登录成功")
        wb.refresh();
    }else {
        status.setText("其他错误")
    }
    //string.save("/html.html",html )
    downCode();
    
}


//提交订单
winform.bt_order.oncommand = function(id,event){
    pause="";
    if(not start()){return false; }
    status.setText("请稍等,可以适当修改提交速度,速度不能太快,否则会被封IP哦!~~~~")
    orderUrl="https://dynamic.12306.cn/otsweb/order/confirmPassengerAction.do?method=confirmPassengerInfoSingle"
    win.delay(300)
    if(!string.find(wb.body.outerHTML,"您所要提交的订单信息")){
        webFram=wb.getWebForm("main");
        html=webFram.body.outerHTML;
        if(!string.find(html,"confirmPassenger")){
            status.setText("请先打开车票预订页面,并填好车票信息和验证码")
            return false; 
        }
        
        wb.doScript("submit_form_confirm('confirmPassenger')","main");
        win.delay(5000)
        webFram=wb.getWebForm("main");
        html=webFram.body.outerHTML;
        loginnum=0
        pause="";
        html=string.replace(html,"\<script.+?\<\/script\>","")
        var webform = win.form(bottom=249;scroll=1;right=349;text="AAuto Form" )
        var wbs = web.form( webform )
        wbs.noScriptErr=true;
        wbs.write(html)
        jQ=wbs.jQuery("#confirmPassenger")
        postdata=jQ.serialize()
        webform.close();
    }else {
        code=winform.ed_code.text;
        winform.ed_code.text="";
        postdata=string.replace(postdata,"randCode=.*?\&","randCode=" ++ code ++ "&")
    }
    while(true){        
        loginnum++;
        html,msg=downData(orderUrl,postdata)
        html=string.fromto(html):""
        if(string.find(html,"payButton")){
            status.setText(loginnum ++ ",车票预订成功,恭喜!")
            wb.go(userInfoUrl)
            return true; 
        }elseif(string.find(html,"未处理的订单")){
            status.setText(loginnum ++ ",有未处理的订单!")
            wb.go(userInfoUrl)
            return true;
        }elseif(string.find(html,"验证码不正确") or string.find(html,"验证码 必须输入")){
            status.setText(loginnum ++ ",验证码不正确,程序已停止,请输入界面的验证码,按回车继续")
            winform.ed_code.hide=true;
            win.delay(500);
            webFram.doScript("refreshImg();");//下载验证码
            win.delay(delaynum*1000)
            ele=webFram.getEle("img_rrand_code");
            webFram.execEle(ele,"Copy")
            var bmp = win.clip.readBitmap()
            winform.picturebox.setImage(bmp)
            winform.ed_code.hide=false;
            winform.ed_code.setFocus();
            return ; 
        }else {
            msg=string.match(html,'var message = "(.*?)"'):"出错了。。。。 啥错? 我也不知道。。。。。"
            status.setText(loginnum ++ "," ++ msg)
        }
        //string.save("/html.html",html )
        token=readTagValue(html,"input","name","org.apache.struts.taglib.html.TOKEN","value")
        if(token){
            postdata=string.replace(postdata,"html\.TOKEN=.*?\&","html.TOKEN=" ++ token ++ "&")
        }
        if(pause="stop"){status.setText("用户暂停");return false; }
        win.delay(delaynum*1000);       
    }   
    
}
winform.button2.oncommand = function(id,event){
    pause="stop";
}
winform.static4.wndproc = function(hwnd,message,wParam,lParam){
    if(message = 0x200/*_WM_MOUSEMOVE*/){
        win.cur.setCur(hwndmouse);              //鼠标形状变成手状
    }
}
winform.static4.oncommand = function(id,event){
    process.execute("http://www.aau.cn/thread-4850-1-1.html")
}
winform.static5.wndproc = function(hwnd,message,wParam,lParam){
    if(message = 0x200/*_WM_MOUSEMOVE*/){
        win.cur.setCur(hwndmouse);              //鼠标形状变成手状
    }
}
winform.static5.oncommand = function(id,event){
    process.execute("http://t.qq.com/carlhk")
}

math.randomize(tonumber(time()))
buyUrl="https://dynamic.12306.cn/otsweb/"
userInfoUrl = "https://dynamic.12306.cn/otsweb/sysuser/user_info.jsp";
codeUrl="https://dynamic.12306.cn/otsweb/passCodeAction.do?rand=lrand&"
hwndmouse=win.cur.load(32649/*_IDC_HAND*/)//鼠标形状变成手状句柄
winform.text="12306网站火车票预定辅助工具 - 手动输验证码_V1.1"
winform.show() 
load();
win.loopMessage();
return winform;


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值