Python模拟登录12306的方法

Python模拟登录12306的方法,第1张

概述本文实例讲述了Python模拟登录12306的方法。分享给大家供大家参考。具体实现方法如下:

本文实例讲述了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': "[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',deflate');
    req.add_header('Connection','keep-live');
    request.add_header('User-Agent',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程序设计有所帮助。

您可能感兴趣的文章:利用python代码写的12306订票代码Python脚本实现12306火车票查询系统使用Python神器对付12306变态验证码使用Python+Splinter自动刷新抢12306火车票Python实现破解12306图片验证码的方法分析python实现12306火车票查询器python编程实现12306的一个小爬虫实例Python使用面向对象方式创建线程实现12306售票系统python+pyqt实现12306图片验证效果python自动查询12306余票并发送邮箱提醒脚本 总结

以上是内存溢出为你收集整理的Python模拟登录12306的方法全部内容,希望文章能够帮你解决Python模拟登录12306的方法所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1204676.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存