#!/usr/bin/python#-*-coding:utf-8-*- Importre;ImportSys;ImportCookielib;ImportUrllib;Importurllib2;ImportOptparse;ImportJSON;Importhttplib2;reload (SYS) sys.setdefaultencoding ('UTF8');defLogin (): CJ=Cookielib. Cookiejar (); Opener=Urllib2.build_opener (urllib2. Httpcookieprocessor (CJ)); Urllib2.install_opener (opener); Print "--------------[Step1] to get cookie"; URL="Https://kyfw.12306.cn/otn/login/init"; Resp=Urllib2.urlopen (URL); forIndex, CookieinchEnumerate (CJ):Print '[', Index,']', cookies; Print "--------------[Step2] to get code"; Url2="Https://kyfw.12306.cn/otn/passcodeNew/getPassCodeNew?module=login&rand=sjrand"; RESP2=Urllib2.urlopen (URL2); #RespInfo2 = Resp2.info (); #print "respinfo=", RespInfo2;With Open ("Code.png","WB") as Image:image.write (Resp2.read ()) Codestr=Sys.stdin.readline (); Codestr= Codestr[:-1] Print "--------------[step3] to check code"; Ajax_url="Https://kyfw.12306.cn/otn/passcodeNew/checkRandCodeAnsyn"; DC= { 'Randcode': Codestr,'Rand':"Sjrand" }; Request=Urllib2. Request (Ajax_url, Urllib.urlencode (DC)) Request.add_header ("Content-type","application/x-www-form-urlencoded; Charset=utf-8") Request.add_header ('X-requested-with','XMLHttpRequest') Request.add_header ('user-agent','mozilla/5.0 (Windows NT 6.1) applewebkit/537.36 (khtml, like Gecko) chrome/33.0.1750.154 safari/537.36') Request.add_header ('Referer','Https://kyfw.12306.cn/otn/login/init') Request.add_header ('Accept','*/*') Request.add_header ('accept-encoding','gzip, deflate') F=Urllib2.urlopen (Request)Print(F.read ())Print "--------------[STEP4] to login"; Loginurl="http://kyfw.12306.cn/otn/login/loginAysnSuggest"; DC= { 'Randcode': Codestr,'Userdto.password':"sunyuke1989", 'Loginuserdto.user_name':"[email protected]" }; Req=Urllib2. Request (loginurl, Urllib.urlencode (DC)); Req.add_header ('Content-type',"application/x-www-form-urlencoded"); Req.add_header ('X-requested-with','XMLHttpRequest'); Req.add_header ('Origin','https://kyfw.12306.cn'); Req.add_header ('Referer','Https://kyfw.12306.cn/otn/login/init'); Req.add_header ('Accept','*/*'); Req.add_header ('accept-encoding','gzip, deflate'); Req.add_header ('Connection','keep-live'); Request.add_header ('user-agent','mozilla/5.0 (Windows NT 6.1) applewebkit/537.36 (khtml, like Gecko) chrome/33.0.1750.154 safari/537.36') Resp=Urllib2.urlopen (req); Print(Resp.read (). Encode ('GB18030')); Loginingurl="Https://kyfw.12306.cn/otn/login/userLogin"; Req= Urllib2. Request (Loginingurl,""); Print "--------------[step5] to Queryuserinfo"; Loginingurl="Https://kyfw.12306.cn/otn/modifyUser/initQueryUserInfo"; Req= Urllib2. Request (Loginingurl,""); Resp=Urllib2.urlopen (req); Info=Resp.read (); Print(Resp.read (). Encode ('GB18030')); if __name__=="__main__": Login ();
Original posts from http://bbs.csdn.net/topics/390765711
Python emulation Login 12306