zoukankan      html  css  js  c++  java
  • 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();

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

  • 相关阅读:
    IIS: Idle Timeout vs Recycle
    Window.location
    Web technology for developersSee Web APIsStorage
    Know the basics about NTFS permissions
    设置描述性弹性域某个字段为只读
    adb root
    nvme WVLOCK
    模拟器获取root权限
    Android模拟器emulator基本使用技巧和命令
    人工智能可以产生自主意识吗
  • 原文地址:https://www.cnblogs.com/codex/p/4193057.html
Copyright © 2011-2022 走看看