首页 > 学院 > 开发设计 > 正文

Python模拟登录12306

2019-11-14 17:26:02
字体:
来源:转载
供稿:网友
#!/usr/bin/python# -*- coding: utf-8 -*- import re;import sys;import cookielib;import urllib;import urllib2;import optparse;import json;import httplib2;reload(sys)sys.setdefaultencoding('utf8');def Login():     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);    for index, cookie in enumerate(cj):        print '[',index, ']',cookie;         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': "sunyuke@QQ.com"    };    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();

原帖来自 http://bbs.csdn.net/topics/390765711 


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表