本文实例讲述了Python模拟登录12306的方法。分享给大家供大家参考。
具体实现方法如下:
复制代码 代码如下:
#!/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();
希望本文所述对大家的Python程序设计有所帮助。