Python模拟登录12306的方法


Posted in Python onDecember 30, 2014

本文实例讲述了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程序设计有所帮助。

Python 相关文章推荐
编写简单的Python程序来判断文本的语种
Apr 07 Python
Python实现PS图像调整黑白效果示例
Jan 25 Python
Python中.join()和os.path.join()两个函数的用法详解
Jun 11 Python
如何实现Django Rest framework版本控制
Jul 25 Python
python 调试冷知识(小结)
Nov 11 Python
python图形开发GUI库pyqt5的详细使用方法及各控件的属性与方法
Feb 14 Python
详解Pycharm出现out of memory的终极解决方法
Mar 03 Python
使用tensorflow框架在Colab上跑通猫狗识别代码
Apr 26 Python
keras在构建LSTM模型时对变长序列的处理操作
Jun 29 Python
Python 实现 T00ls 自动签到脚本代码(邮件+钉钉通知)
Jul 06 Python
如何利用Matlab制作一款真正的拼图小游戏
May 11 Python
Python OpenGL基本配置方式
May 20 Python
python执行shell获取硬件参数写入mysql的方法
Dec 29 #Python
简单的抓取淘宝图片的Python爬虫
Dec 25 #Python
简单使用Python自动生成文章
Dec 25 #Python
Python 抓取动态网页内容方案详解
Dec 25 #Python
利用Psyco提升Python运行速度
Dec 24 #Python
Python解决鸡兔同笼问题的方法
Dec 20 #Python
Python列表计数及插入实例
Dec 17 #Python
You might like
Apache下禁止php文件被直接访问的解决方案
2013/04/25 PHP
解析Win7 XAMPP apache无法启动的问题
2013/06/26 PHP
使用ob系列函数实现PHP网站页面静态化
2014/08/13 PHP
浅谈PHP中JSON数据操作
2015/07/01 PHP
非常实用的php验证码类
2016/05/15 PHP
thinkphp在低版本Nginx 下支持PATHINFO的方法分享
2016/05/27 PHP
Zend Framework动作控制器用法示例
2016/12/09 PHP
php闭包中使用use声明变量的作用域实例分析
2018/08/09 PHP
JavaScript加密解密7种方法总结分析
2007/10/07 Javascript
Javascript玩转继承(三)
2014/05/08 Javascript
基于豆瓣API+Angular开发的web App
2015/01/02 Javascript
Javascript 拖拽雏形中的一些问题(逐行分析代码,让你轻松了拖拽的原理)
2015/01/23 Javascript
JavaScript中getUTCMinutes()方法的使用详解
2015/06/10 Javascript
详解javascript数组去重问题
2015/11/06 Javascript
Javascript实现检测客户端类型代码封包
2015/12/03 Javascript
Angularjs在初始化未完毕时出现闪烁问题的解决方法分析
2016/08/05 Javascript
JS常用函数和常用技巧小结
2016/10/15 Javascript
JS原生带小白点轮播图实例讲解
2017/07/22 Javascript
jQuery实现文字超过1行、2行或规定的行数时自动加省略号的方法
2018/03/28 jQuery
vue click.stop阻止点击事件继续传播的方法
2018/09/04 Javascript
jQuery实现的网站banner图片无缝轮播效果完整实例
2019/01/28 jQuery
通过javascript实现扫雷游戏代码实例
2020/02/09 Javascript
python实现批量监控网站
2016/09/09 Python
Python如何通过subprocess调用adb命令详解
2017/08/27 Python
使用Django连接Mysql数据库步骤
2019/01/15 Python
python感知机实现代码
2019/01/18 Python
在Python 的线程中运行协程的方法
2020/02/24 Python
PyCharm GUI界面开发和exe文件生成的实现
2020/03/04 Python
使用jupyter Nodebook查看函数或方法的参数以及使用情况
2020/04/14 Python
给面试官的感谢信
2014/02/01 职场文书
活动宣传策划方案
2014/05/23 职场文书
中国在我心中演讲稿
2014/09/13 职场文书
师德标兵先进事迹材料
2014/12/19 职场文书
laravel ajax curd 搜索登录判断功能的实现
2021/04/17 PHP
js中Object.create实例用法详解
2021/10/05 Javascript
Python使用永中文档转换服务
2022/05/06 Python