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 HTTP客户端自定义Cookie实现实例
Apr 28 Python
Django 跨域请求处理的示例代码
May 02 Python
解决pycharm回车之后不能换行或不能缩进的问题
Jan 16 Python
python+Django实现防止SQL注入的办法
Oct 31 Python
Django 简单实现分页与搜索功能的示例代码
Nov 07 Python
python中自带的三个装饰器的实现
Nov 08 Python
Django使用消息提示简单的弹出个对话框实例
Nov 15 Python
推荐8款常用的Python GUI图形界面开发框架
Feb 23 Python
在pycharm中debug 实时查看数据操作(交互式)
Jun 09 Python
树莓派升级python的具体步骤
Jul 05 Python
总结python 三种常见的内存泄漏场景
Nov 20 Python
深入解析NumPy中的Broadcasting广播机制
May 30 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
PHP学习笔记之一
2011/01/17 PHP
基于php冒泡排序算法的深入理解
2013/06/09 PHP
PHP与MongoDB简介|安全|M+PHP应用实例详解
2013/06/17 PHP
dedecms中使用php语句指南
2014/11/13 PHP
Yii 使用intervention/image拓展实现图像处理功能
2019/06/22 PHP
JSON 学习之JSON in JavaScript详细使用说明
2010/02/23 Javascript
ExtJs扩展之GroupPropertyGrid代码
2010/03/05 Javascript
分享几个超级震憾的图片特效
2012/01/08 Javascript
jquery 获取表单元素里面的值示例代码
2013/07/28 Javascript
JS实现可自定义大小,可双击关闭的弹出层效果
2015/10/16 Javascript
原生JavaScript实现异步多文件上传
2015/12/02 Javascript
理解Javascript图片预加载
2016/02/23 Javascript
AngularJS使用ng-repeat指令实现下拉框
2016/08/23 Javascript
bootstrapvalidator之API学习教程
2017/06/29 Javascript
Vue和Bootstrap的整合思路详解
2017/06/30 Javascript
jQuery实现百度图片移入移出内容提示框上下左右移动的效果
2018/06/05 jQuery
微信小程序适配iphoneX的实现方法
2018/09/18 Javascript
开发Node CLI构建微信小程序脚手架的示例
2020/03/27 Javascript
[04:27]DOTA2官方论坛水友赛集锦
2013/09/16 DOTA
python获得两个数组交集、并集、差集的方法
2015/03/27 Python
Python实现控制台输入密码的方法
2015/05/29 Python
在主机商的共享服务器上部署Django站点的方法
2015/07/22 Python
对Python3 pyc 文件的使用详解
2019/02/16 Python
Python3.5运算符操作实例详解
2019/04/25 Python
Python 实现自动完成A4标签排版打印功能
2020/04/09 Python
Debenhams爱尔兰:英国知名的百货公司
2017/01/02 全球购物
.NET里面如何取得当前的屏幕分辨率
2012/12/06 面试题
简单而又朴实的个人求职信分享
2013/12/12 职场文书
应聘自荐信
2013/12/14 职场文书
商铺租赁意向书
2014/04/01 职场文书
工作检讨书怎么写
2014/10/10 职场文书
绍兴鲁迅故居导游词
2015/02/09 职场文书
企业财务经理岗位职责
2015/04/08 职场文书
学校教学工作总结2015
2015/05/19 职场文书
地道战观后感500字
2015/06/04 职场文书
2016党员学习心得体会范文
2016/01/23 职场文书