12306網站火車票預定輔助工具 C#源碼
12306網站火車票預定輔助工具(搶票器),其實只是做了自動登錄和自動搶票兩個功能,
正常情況下用瀏覽器手動是很難登成功的,這個你懂的,人太多了,
下面源碼需要手動輸入驗證碼,半自動登錄,利用發包登錄,會比用網頁登錄成功率來得高,
登錄后,選擇需預定的車票,在填好車票信息后,設置好提交速度,點擊提交訂單,將自己動開始搶票,直到成功,
下單成功后45分鐘內付款,這票就是你的啦
全自動登錄,我這里也已實現驗證碼識別,識別率有70%以上吧,
祝大家春節快樂!
附自動搶票步驟:
車票預訂頁面選擇車次--預訂--填好乘車人信息--在頁面輸入驗證碼--在程序界面點擊提交訂單按鈕--然后就不要再去動任何東西,程序會一直自動提交直到搶到票
完整請看:
12306網站火車票預定輔助工具 AAuto源碼
import win.ui;
import fsys.ini;
import web.form;
import win.ui.statusbar;
import inet.http;
import win.cur;
import process;
/DSG{{/
var winform = win.form(parent=...; bottom=626;right=929;border="resizable";text="AAuto Form" )
winform.add(
ed_code={ dl=1;bottom=593;right=501;left=438;top=573;z=7;db=1;text="";edge=1;cls="edit" };
static={ dl=1;bottom=594;text="帳號:";left=23;top=578;transparent=1;db=1;right=57;z=2;cls="static" };
static2={ dl=1;bottom=592;text="密碼:";left=174;top=576;transparent=1;db=1;right=208;z=4;cls="static" };
static5={ dr=1;bottom=606;color=16711680;text="作者:carl";left=811;notify=1;top=590;font=LOGFONT( underline=1 );transparent=1;db=1;right=864;z=11;cls="static" };
ed_url={ dr=1;dl=1;bottom=22;text="";left=0;dt=1;top=0;z=9;right=929;edge=1;cls="edit" };
static3={ dl=1;bottom=592;text="驗證碼:";left=327;top=576;transparent=1;db=1;right=372;z=6;cls="static" };
ed_password={ dl=1;bottom=592;right=319;left=210;top=572;text="";z=5;db=1;password=1;edge=1;cls="edit" };
ed_user={ dl=1;bottom=594;text="";left=59;top=574;z=3;db=1;right=168;edge=1;cls="edit" };
picturebox={ dl=1;bottom=596;text="picturebox";left=372;top=574;z=8;db=1;notify=1;right=429;cls="picturebox" };
static4={ dr=1;bottom=587;color=16711680;text="AAuto開發源碼";left=811;notify=1;top=572;font=LOGFONT( underline=1 );z=10;db=1;right=896;transparent=1;cls="static" };
wb={ dr=1;dl=1;bottom=560;text="static";left=0;dt=1;top=23;z=1;db=1;right=929;transparent=1;cls="static" }
)
/}}/
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; }
login()
}
}
winform.picturebox.oncommand = function(id,event){
downCode()
}
//10分鐘自動刷新一次,防止cookie失效
var tmId = winform.addtimer(
10006010,
function(hwnd,msg,id,tick){
wb.refresh();
}
)
//初始化
load=function(){
ini=fsys.ini("/config.ini")
winform.ed_user.text=ini.read("CON","user"):"";
winform.ed_password.text=ini.read("CON","password"):"";
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;
if(user=="" or password==""){
status.setText("請輸入帳號密碼")
return false;
}
ini.write("CON","user",user)
ini.write("CON","password",password)
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.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="http://www.12306.cn/mormhweb/kyfw/"
codeUrl="https://dynamic.12306.cn/otsweb/passCodeAction.do?rand=lrand&"
hwndmouse=win.cur.load(32649/_IDC_HAND/)//鼠標形狀變成手狀句柄
winform.text="12306網站火車票預定輔助工具"
winform.show()
load();
win.loopMessage();
return winform;</pre>