源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

Python模拟登录12306的方法

  • 时间:2022-11-30 23:40 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:Python模拟登录12306的方法
本文实例讲述了Python模拟登录12306的方法。分享给大家供大家参考。 具体实现方法如下:
[u]复制代码[/u] 代码如下:
#!/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程序设计有所帮助。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部