From e5ad41e8571d7986788e3e6d221aeb8739c98a9a Mon Sep 17 00:00:00 2001 From: victor Date: Tue, 23 Apr 2019 15:24:10 +0800 Subject: [PATCH] =?UTF-8?q?12306=E7=99=BB=E5=BD=95=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- conf/urls_conf.py | 30 +++++++++++++++++++++++------- fuckeverything.py | 7 ++++--- ip.db | Bin 58368 -> 58368 bytes train/login/Capthca.py | 12 +++++++----- train/login/Login.py | 15 +++++++++------ train/submit/Submit.py | 13 +++++++++++-- 6 files changed, 54 insertions(+), 23 deletions(-) diff --git a/conf/urls_conf.py b/conf/urls_conf.py index 8b425ff..51a09d2 100644 --- a/conf/urls_conf.py +++ b/conf/urls_conf.py @@ -2,6 +2,20 @@ import time loginUrls = { 'normal': { + 'index':{ + 'url': r'https://www.12306.cn/index/', + 'method': 'GET', + 'headers': { + 'Accept': r'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', + 'Upgrade-Insecure-Requests': '1', + }, + 'response': 'html', + }, + 'conf':{ + 'url':'https://kyfw.12306.cn/otn/login/conf', + 'method': 'GET', + 'response': 'html', + }, 'init': { 'url': r'https://kyfw.12306.cn/otn/login/init', 'method': 'GET', @@ -17,6 +31,8 @@ 'headers': { 'Accept': r'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'Referer': r'https://www.12306.cn/index/', + 'Upgrade-Insecure-Requests': '1', + 'Accept-Encoding':'gzip, deflate, br', }, 'response': 'html', }, @@ -113,8 +129,13 @@ 'response': 'html', }, "getDevicesId": { # 获取用户信息 - "url": "https://kyfw.12306.cn/otn/HttpZF/logdevice", + "url": "https://kyfw.12306.cn/otn/HttpZF/logdevice?algID=z0nwCFNNFy&hashCode=Sonomt4GXxQ8y5nP8OKANN4uqj_LKFPbEeGZQpQSQLc&FMQw=0&q4f3=zh-CN&VySQ=FGF9QEe67lYGavdZicwJH4vsu9jHLwS5&VPIf=1&custID=133&VEek=unknown&dzuS=0&yD16=0&EOQP=f57fa883099df9e46e7ee35d22644d2b&lEnu=3232235621&jp76=52d67b2a5aa5e031084733d5006cc664&hAqN=Win32&platform=WEB&ks0Q=d22ca0b81584fbea62237b14bd04c866&TeRS=1080x1920&tOHY=24xx1080x1920&Fvje=i1l1o1s1&q5aJ=-8&wNLf=99115dfb07133750ba677d055874de87&0aew=Mozilla/5.0%20(Windows%20NT%206.1;%20Win64;%20x64)%20AppleWebKit/537.36%20(KHTML,%20like%20Gecko)%20Chrome/68.0.3440.106%20Safari/537.36&E3gR=6ffe6a32e9af788920458ef31ceafe4a×tamp=", "method": "GET", + 'headers' :{ + 'Host': 'kyfw.12306.cn', + 'Referer': 'https://kyfw.12306.cn/otn/resources/login.html', + 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36', + } } }, # -------------------------------------------------------------------------------------------------------- @@ -251,13 +272,8 @@ 'method': 'POST', 'headers': { 'Referer': 'https://kyfw.12306.cn/otn/leftTicket/init', - 'Content-Type': r'application/x-www-form-urlencoded; charset=UTF-8', + 'Content-Type': r'application/x-www-form-urlencoded', 'Host': r'kyfw.12306.cn', - 'X-Requested-With':'XMLHttpRequest', - 'Accept-Encoding':'gzip, deflate, br', - 'Accept-Language':'zh-CN,zh;q=0.9', - 'Origin':'https://kyfw.12306.cn', - 'Upgrade-Insecure-Requests':'1', }, 'response': 'html', }, diff --git a/fuckeverything.py b/fuckeverything.py index 814cf0d..000a1fb 100644 --- a/fuckeverything.py +++ b/fuckeverything.py @@ -1,5 +1,5 @@ import time - +from conf.urls_conf import loginUrls from conf.constant import SEAT_TYPE from configure import * from net import init_ip_pool @@ -34,8 +34,8 @@ def main(): cookies = {c.name: c.value for c in EasyHttp.get_session().cookies} RAIL_EXPIRATION = cookies.get('RAIL_EXPIRATION') - #当前实际显示有效时间为4天,实际访问可下单时间大概为2天(细节可按实际情况调节) - if 'RAIL_EXPIRATION' in cookies and (int(RAIL_EXPIRATION)-172800000) < int(time.time()*1000) : + #(int(RAIL_EXPIRATION)-172800000) < int(time.time()*1000) + if 'RAIL_EXPIRATION' in cookies and int(RAIL_EXPIRATION) < int(time.time()*1000) : Log.v('cookie登录已过期,重新请求') EasyHttp.removeCookies() status,login = do_login() @@ -48,6 +48,7 @@ def main(): return else: login = Login() + login._urlInfo = loginUrls['normal'] Log.v('已登录状态,开始寻找小票票') seatTypesCode = SEAT_TYPE_CODE if SEAT_TYPE_CODE else [SEAT_TYPE[key] for key in SEAT_TYPE.keys()] diff --git a/ip.db b/ip.db index 2526fb830f2b0d2914a3aa0b6bd9749a228a1deb..25fca94e8da995ac07380962a0dee8eff6861055 100644 GIT binary patch literal 58368 zcmeI5dypJO9ml(8vJjFS5R>I3Byc-3fdI*5dS)Lp%Om7fgb*N*D@zOE63m4hMMx^I zA{f+}1%!&I;9r&nz7UNuP#`K&XenAgDg;D)X?}voiyCGZB1L z>bH~M-e&i={rGfm_pkfc)4l4_6(d`R2i9%eykX7O0gp{!oU`)=1{j;s&ln3JKE#IT zkO`3PgLhwy{TE@(JNR%P6u5pj!#{cu0U}VEz-oSU|EyU&oVIn%Ro4!WY#Lg>aod*U zueSKIr3(j_4h$|_v|{N%_tQBeYX>g4cyR8f%^R=ZF|=mw=HV?{1_qbDdvNa79h-*L zt993|xjKGzdPP6LChCvM6dkX>tUs+kq5nvKOn+4Wwf+*WL%8nlU8NIFibQ}2{O1W& zBH24ni%!9FUvw0nj|w;7c~Us2A7T^nNhVXoPXF8tsu#V>`5a{Add^@DV^l$1@ zwf+3>{1LvApP}8%E83M>TfbA^7+=eETPL!il$v}wT1A! zl$NQqJ|~2LR?8N?u^`H`)!)^+gKW90l!*G9|)s0WGi_IcVA+nepaH>ApK)SGcHFQ7Cr9 zwOtQT>JGBggQB}dVVqK{@cGqh4PgXzgyGmA(ya)RtNsEzryJp6{~ZYDSG0Kma$gr( z!)_(P$Mwt#ZN+S_@I7R}M{PtxQmKg5j42h~s8*-M#AKCiq6|?ReW#fe9+Fp71r9q0 z^aUb71dbR2eQZCQ%0s zW!wbx)aq{N3Kek5KVNRPTWvK&B?au{FxG&G$TjFI6tvM&{?8S@Af`%jI{_o z2)bR4e#v&xYom{7_(>-h>uAf^X+<3Hxf#t<5zZBLm=7^gbT){v6|@qlW`uqob`L+( zbz>_-IOwyScHQ$+UAXoSc1KZ^(2=%j!2??77poMOvk{#Z+jRWYIA=lAZUnXmP(t`g z-t=X~6~>H|-N!8$dN5!FDvT`YY_aHflqlg^1mjSaoq@Up`>_G+%|Mo2&lW<~i|ykA zK8NvfA78+ZVTYLhpuR}ktKF(C;rH{~@asRsz8qgeY^>`rVkuJnNeOsGVW`iMo#Lty zjwo~gC25Vqbar82p&T;5Gc#NtS9|um#0-Ne<~Flh{Mix%l~O4;!(kQQZ-p!E&Xyfp ze>qFp3fC&*@Ha`ST(n-k$Rnq5~ME3}psX+fuu=Rmkx8MVIz&w3N%A~Z>DACKgR zrafISnlZvFRhhgXglo4zz=09(v_0YWLb1XtRPKKvWQ*ls*nt9Uh<3B#IlYmZUMlxR zImhP+sJL%3!uP0@|6BBdDKtN^sfa3T_g9s1-B0vO)01-IS2=r-RVAI))Oh2H1Rli+dr=P3$YX`M`+6T4E zwT5;a|2_Xczl(2|UI9J$vUX+-{Fv7f+84aoTuav`c;Wq3h zhFuP#$c}Jfd&&{+6&RKY1n)NR*X_+5#|bf`L8Y}y_;L;cxq{^tviY`=I%cYY;dP4#Xi5u;@ zU$6Jf@LIH7jdm|c8^-yNmZ^}=@3~7_b~87eK}{=R7@N^j71k0pV}q1okl;77b0cQ7 zSZOVi^~rVMXOJb7v)8R?k*b^vdzDi_RB*6z(Yp;qVToXn`L0t?cGByxq+ z$8KiFvLVi1VY@NXe^P&5e@OqRzFuFV&(xmMzM@^Fovp6?JV4N9OL2|=FhitOI?WzQ z&uKY1+I&XwAkzo~HOzXr=Q(lVNy=1AZiWCY({x&5oKAGi^sE0Av5C%VOkrW(yorV1D#x&o=RKh^5gbJI4+T!{u{ zc8JCaQ^o9u(laW96HWZWJ+%3*sHbyyzRKYby6JN5X1>V`m#B*QJvED1w=s$RhKgy1 zs&QhEr4o-R$7~j@5Uq~%s(vSFO)!(_VsbM_Vu2#@?QXKrN_e^MwL~$K3K1XzM1Tko z0U~gO5$I!&!~X~W|8x3-+Uwf0+FI=#t)K71Tk^VMoa=2P@p$1XB{Q0!#xi;`9D~aa z!>o+K!~ewoS(qqo7duc!>1#zw2&mZOy{nAJyC^1xs7jctR=87{g|8=Op$8i?Zx$l3 zVyBiF-k{9Yze?LtdLo;0@+CKJv%(!J#=j)R;$yhgdV|{aO6|3bnwwkMpc`d;WN_IR zC*KISDbx3mbP~F9Mn}5avmP=l+^UlGXE`w>T+9YYhgv;nZKHHPURXj>;hJKtqJ<5` zAuwiz8&$GjPKsG(&dFK-R(PFK`$JC+WrOLE%x|VljHE*ZhyW2F0z`la99abV*iYG1 zOzpEhZ~_eT1==F*B>oD!g+GZ&`B(Yw*dOpQeMDcJpZ_n#!RpM6tq}gH#PowN5Ywqy zE5ztnvAxDWAA8`0-H_A7ZGk&C;+q*_2b|TJp~CuP5*F?f!Ah`fSo|Z!&V*VA_oc{% zn7gHy4wJfAPAu)d^a3iQGrEBE-qc)dkQ;KCodGp4`E=~=lPkXvp5OL-C+JNOTb+|t z%I`{2?#XpxISSf(Hfv0(W@mI6?w(X~-28e(vopF_^&S@<#rhh((Kd}g3rWmH|Yt)8o(y*L`ko-MZTUN zGjFL6_~z7q-qK4x=PiA`{Flv+uK;`_<7CDlDC1=AV5PWpGCv@1*a{>}_!64A>3E}q zHQ?}G@cX6JF5Tu>-r0g_pAO3EUotFIN%^cskQ-E{zUuB$8q6ja?2{ z!H$ufoAXzf&n9US0U|&IhyW2F0!IpgKDLidlJox$>5H-A=QZ2`bQM3y_i;7ofb zdV3J;D>JoiM6;ABGqby_r{%q2m6&!yITN!u-TWqYL6H`8iszw=0#TnM;RP#=jOYZF z|7yzk&#!7SqpGqnr@NT(#-cWj$vc+v11TdqUM1@|xt1v2i~vg~v6d)(|Brr6iIq)IDlQl!>Qm9- z{`usl9W3n0jBKoEin6mO_ZHg8^*^~4M^-dhsZEM!+L1eX?~?ChV+g0wOx8i^&zDF% zgI3}FR#r4oMR;^FoRn)~MQ$vC0xSkmT*{>Y5g-CYfCvx) zB0vO)01+SpM1Tko0U|&IhyW2F0z`la5CI}U1c(3;AOb{y2oM1xKm>>Y5g-CYfCvx) zB0vO)01+SpM1Tko0U|&IhyW2F0z`la5CI}U1c(3;AOb{y2oM1xKm>>Y5g-CYfCvx) zB0vO)z`skN4+not!_gjmH$RKrgcmQfAM=~^1EZ&aFV<&iukqFKN#M6=L)uX46p%7e z8qqaspVg7%wDovv)Z9L+BWgd>_2~^%aYl4@164kqoji7&Mzl%Av{9a`AaI}?Heq#f za=q{P$sVj`v_b7fdu?|wTAclXQ!TRlzViL-w6P;fJ~5)TD#rK4fyD<~i~Q+vwazi> zq>)>3%)E#5IB<%5-OFxkYeYDRP9D^-rF&4b+|4zYs9Ll}1++R=!pRVIoHde7IFfc} zlDz-Y3;x~lBC01tLkR&%9($2vV0I>{pl(Yx$3?99gW}B&w$PQQaeO$n|F4_h+1KoFrS&1RmI`iuw= z0U|&IhyW2F0z`la5CI}U1c(3;AOb{y2oM1xKm>>Y5g-CYfCvx)B0vO)01+SpM1Tko z0U|&IhyW2F0z`la5CI}U1c(3;AOb{y2oM1xKm>>Y5%`}Hn1|R;fOrrW;y`SOe19&a z0XYLQA2J6b?~gqdG8$?r?iAoL&tM1Tko0U|&I HQUv}5^IuSX literal 58368 zcmeI5d5{#<9mn76W(9#o0Y^}Qotd8X0-EXWIai5t8972cmI@IC7Fl4q&y?Unbw^`) z;*skg%~7dD6HN>yi6-VUmx%_;Xq7@NlS)-gnTkoYv?!yo^8LNH)6>(-Zg)y!Y5Cjc zF~jzccYNOKe!qUd-|zLs7cT1C*_&OnW&5U{omo!|6Hk>i9XoyZeHj z+jsSf{ERkP&SYjdH4mrjwp%LMuG{6fl}c0Sh&Up${aGIMBRi)}I+@HIH@~e-dJ{5R z9TZh7+fJ!wJN0T<$r|xD%w>v z%ByvGj@zuUwGtdBWLCHkagmi%av@adsuzpJuvz)#s;tW#2YpdQrAv^B)hBx?x@Zq+V(t+g@MiOwd6LB8b|tA1UqimIYG;!|_FYQ>7G4|Rm`4{`Y*|God$keD^J zM8eseixy`xZlwq+AW}z*E3LIKmx%Kca!GNzqeG4K4)Ah|HM>@_t8PnUk;k`E2Pz=>y-MbqutKCbKrN`&t4-zN8YOczXG~&C9~UcG3}QeyNW8;D#Wm<59M|% zz3Pfa)2n6Mt+y6sJ}i0@I74Li&?1n?4keM_rRuuVrMeQgx?{)nviwdZv!g}EX{{{E zNW{BcWwVVmau;1)L22>9+%B%g^}k%051R|jg7LPoPu?f5mp$TDaj#e||7|>L-bn{m z0;9+Bp_)(D6auZE#9@>wRp1egF5U;<2l2`~XBzyz286JP>NfC(@GCcp$f$OPK4 z&_7Z=MNb>li?m2tMbRxZac{i7VqMB{iboBe8vmG(j~MX&izRtvCotR0uh zs0Kq2e!^8z`AxC$-KaY9NnBmEf|K=9?nw=UqD!mMu{B{UI7v%QY+58>6pAhQ8uyDk zlIjha%}Fu>LW$G&M^yj1_|8^hg<_ENoSjS9ENw zuzS^_TW%JY#=cVs+I3!|LyLuS4~sccS;1({YE)w+kYOWk_$vgXbY>&T7VN47rZj}3 zE^A=0Fb#(k7frjkS&R~Egn6ndjfad*c>nE_>t$9vD;~hF8^>&zJqI4C>Oex4-=$hF z9wq}I%rLN`z%~*yf{8biuc(4wQ-s9#$*M`+MlOA2r>j!-icQl;&aW!tmiQhyY1Qo# z(TsWQ$@5b1vHY^G`Gd+HPTqLrUIxotF=G3Xe@L!*-uJYre}7{Hz#dqOdF17NR||c& zAw8_%bHl3fpByj1x z5-*Eii7$&iVu^X!xWzm`M}NJR3{k&)uu0*P8ylk-SA2cI9dV<+BW`eNr zk6BeWXsPv%i}U2dOFkem&y7N`Uf(zSw66o)S;=JTb-DFgy*U+i27P*-ftN0FA$vUC z`|DI_)WKHXkj8*+1#5NH)X40Cu_Q`#T|(A!R1g>kym~>#^8P20InJnU;_VV0`1~P`2Wo`%-hWk=6o{`55NcE1Nao?|JCv% zh{ahgX394jhk01cj2s0YE@b57`b_xj1Gie2yhWqFbe6BZ0L9ahS%g9}TKq-jWU(o! zv5-kpXp*wf=Ph450g5NXnFjNb8&kC9O@czF2LG}A#p)g_eixl)iZKB1 zj}bEB;z=0+JEdyXX=*3(jU=zOoDT;;xa^7FdcaJRUkTACao7uVm3|Y>>~MAU;>!94 zYgmp6FaajO1egF5_%IP@mzEeS`UEum zTg6-AIegtO`{Zo-G}ij|nd`)D=4|s6<2B=;aZt>O9sdicf{*10QlnmODs5PgKo~{K zvqFb|wN|6vA~njh%P@epEW*?B!tm?BFIF%@HC+x@ z3%r0xgRL4{(<=lzHdC6>06VpVLiDk<5Fj=agruP(w`lp9Vu%1TxN z;Dbh>-8dvh$$Nx($XsjY5CM3zvBo&Zm?&SBPsn?4;yxTvpa1Chl#P8dIp#BEPKjb@ z&7mYA$lRGiW=oQcKt?G7Y!kCdC6Egc^9#=)iHK+Q`V zE2*}tg@;kmYdRuX!3-@0-OychBg#aPH{ zF%;4{_9q8O7lOPlG1u%F#AU)St;OH2UA&0+pHB(x?FV1KNydG~3ZrI>mtU1viATj< zI7!Dv1CCVV_UJ+dKdUMyz7+b*AuJR@oOo?au-A#f16jXu0(YXIr&d0VN z<#J2)M#!ux0ai`B;iz7YL<*52{SaSlb`c_MV?AW~6V+8A zz7R%F!AlXZ*J+8KGOkZkc}OK!KJRBV_0M9sJGcVz2cCqjBemdT?+nmfj>#j``AJyuE8~ zm+`U7|7HSAfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XB zzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XB zzyz286JP>NfC(@GCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XB zzyz286JP>NfC(@GCcp&5G%z?3$wP9HibyunbR;@gMmiH|2GZ$Bryh@Sy8rWde2zzIN1BX8G9=s9|7qZpf0zIhU;<2l2{3^Of&T)KD9#lC diff --git a/train/login/Capthca.py b/train/login/Capthca.py index 0e7d149..51f1f3d 100644 --- a/train/login/Capthca.py +++ b/train/login/Capthca.py @@ -1,3 +1,4 @@ +import json import os from io import BytesIO @@ -93,7 +94,7 @@ def verifyCaptchaByHand(self, type=TYPE_LOGIN_NORMAL_WAY): return results, self.check(results, type) def __indexTransCaptchaResults(self, indexes, sep=r','): - coordinates = ['40,40', '110,40', '180,40', '250,40', '40,110', '110,110', '180,110', '250,110'] + coordinates = ['31, 35', '116, 46', '191, 24', '243, 50', '22, 114', '117, 94', '167, 120', '251, 105'] results = [] for index in indexes.split(sep=sep): results.append(coordinates[int(index)]) @@ -121,9 +122,10 @@ def verifyCodeAuto(self): # img_base64 = result body = {'base64': img_base64} - response = requests.post(autoVerifyUrls['api']['url'],json=body,headers ={ - 'Content-Type': 'application/json', - }).json() + response = EasyHttp.post_custom(autoVerifyUrls['api'],data=json.dumps(body)).json() + # response = requests.post(autoVerifyUrls['api']['url'],json=body,headers ={ + # 'Content-Type': 'application/json', + # }).json() if response['success'] != True: return None, False @@ -134,7 +136,7 @@ def verifyCodeAuto(self): 'type': 'D', '=':'' } - response = requests.post(autoVerifyUrls['img_url']['url'],json=body).json() + response = EasyHttp.post_custom(autoVerifyUrls['img_url'],data=json.dumps(body)).json() content = str(response['res']) results = content.replace('(','').replace(')','') Log.d('识别坐标:%s'%results) diff --git a/train/login/Login.py b/train/login/Login.py index 6dc171e..482bc77 100644 --- a/train/login/Login.py +++ b/train/login/Login.py @@ -53,6 +53,7 @@ def isSuccess(response): jsonRet['newapptk'] if jsonRet and 'newapptk' in jsonRet else 'no newapptk' def _uamtk_static(self): + EasyHttp.send(self._urlInfo['conf']) jsonRet = EasyHttp.send(self._urlInfo['uamtk-static'], data={'appid': 'otn'}) def isSuccess(response): @@ -110,15 +111,15 @@ def _loginNormal(self, userName, userPwd, autoCheck=2): payload['appid'] = 'otn' payload['answer'] = results - jsonRet = EasyHttp.send(self._urlInfo['login'], data=payload) + response = EasyHttp.post_custom(self._urlInfo['login'], data=payload) def isLoginSuccess(responseJson): return 0 == responseJson['result_code'] if responseJson and 'result_code' in responseJson else False, \ responseJson[ 'result_message'] if responseJson and 'result_message' in responseJson else '登录失败' - result, msg = isLoginSuccess(jsonRet) - if not result: + result, msg = isLoginSuccess(response.json()) + if not result : return False, msg self._userLogin() self._passportRedirect() @@ -171,16 +172,18 @@ def _init(self): EasyHttp.send(self._urlInfo['init']) def _login_init(self): - EasyHttp.send(self._urlInfo['loginInit']) + self._urlInfo["getDevicesId"]['url'] = self._urlInfo["getDevicesId"]['url'] + str(int(time.time()*1000)) devices_id_rsp = EasyHttp.get_custom(self._urlInfo["getDevicesId"]) if devices_id_rsp: callback = devices_id_rsp.text.replace("callbackFunction('", '').replace("')", '') text = json.loads(callback) devices_id = text.get('dfp') exp = text.get('exp') - EasyHttp.setCookies(RAIL_DEVICEID=devices_id,RAIL_EXPIRATION=exp) + EasyHttp.setCookies(RAIL_DEVICEID=devices_id, RAIL_EXPIRATION=exp) # Log.d('设备Id:%s'%devices_id) - return True,'获取设备指纹成功' + return True, '获取设备指纹成功' + EasyHttp.send(self._urlInfo['index']) + EasyHttp.send(self._urlInfo['loginInit']) return False,'获取设备指纹失败' diff --git a/train/submit/Submit.py b/train/submit/Submit.py index eaf895c..7a467af 100644 --- a/train/submit/Submit.py +++ b/train/submit/Submit.py @@ -57,8 +57,17 @@ def getRepeatSubmitToken(html): # print('RepeatSubmitToken = %s' % repeatSubmitToken) return repeatSubmitToken + formData = { + '_json_att': '' + } self._urlInfo['getExtraInfo']['headers']['Referer'] = self._urlInfo['getExtraInfo']['headers']['Referer']+ '?linktypeid='+self.__ticket.tourFlag - html = EasyHttp.send(self._urlInfo['getExtraInfo']) + response = EasyHttp.post_custom(self._urlInfo['getExtraInfo'],data=formData) + + if response and response.status_code == requests.codes.ok: + html = response.text + else: + html = None + # html = EasyHttp.send(self._urlInfo['getExtraInfo']) if not Utils.check(html, 'getExtraInfoUrl: failed to visit %s' % self._urlInfo['getExtraInfo']['url']): return False self.__ticket.repeatSubmitToken = getRepeatSubmitToken(html) @@ -109,7 +118,7 @@ def _getPassengerDTOs(self): jsonRet = EasyHttp.send(self._urlInfo['getPassengerDTOs'], data=formData) passengersList = jsonRet['data']['normal_passengers'] return jsonRet['status'] if 'status' in jsonRet else False, \ - jsonRet['messages'] if 'messages' in jsonRet else '无法获取乘客信息,请先进行添加!', \ + jsonRet['messages'] if jsonRet and 'messages' in jsonRet else '无法获取乘客信息,请先进行添加!', \ self.__getPassengerInfo(passengersList) # passengerName:乘客姓名