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读文件逐行处理的示例代码分享
Dec 27 Python
Python内置函数之filter map reduce介绍
Nov 30 Python
Python读取网页内容的方法
Jul 30 Python
用Python写冒泡排序代码
Apr 12 Python
python Matplotlib画图之调整字体大小的示例
Nov 20 Python
Python常见内置高效率函数用法示例
Jul 31 Python
django连接mysql配置方法总结(推荐)
Aug 18 Python
通过cmd进入python的实例操作
Jun 26 Python
keras中模型训练class_weight,sample_weight区别说明
May 23 Python
keras:model.compile损失函数的用法
Jul 01 Python
django序列化时使用外键的真实值操作
Jul 15 Python
Python调用REST API接口的几种方式汇总
Oct 19 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 excel reader读取excel内容存入数据库实现代码
2012/12/06 PHP
Memcached常用命令以及使用说明详解
2013/06/27 PHP
PHP函数分享之curl方式取得数据、模拟登陆、POST数据
2014/06/04 PHP
在html文件中也可以执行php语句的方法
2015/04/09 PHP
Yii2 队列 shmilyzxt/yii2-queue 简单概述
2017/08/02 PHP
PHP缓存工具XCache安装与使用方法详解
2018/04/09 PHP
数理公式,也可以这么唯美
2021/03/10 无线电
10个新的最有前途的JavaScript框架
2009/03/12 Javascript
从父页面读取和操作iframe中内容方法
2009/07/25 Javascript
你必须知道的JavaScript 中字符串连接的性能的一些问题
2013/05/07 Javascript
Iframe 自动适应页面的高度示例代码
2014/02/26 Javascript
JavaScript中的Repaint和Reflow用法详解
2015/07/27 Javascript
iOS和Android用同一个二维码实现跳转下载链接的方法
2016/09/28 Javascript
EditPlus 正则表达式 实战(3)
2016/12/15 Javascript
Vue.js实现分页查询功能
2020/11/15 Javascript
解决Vue.js 2.0 有时双向绑定img src属性失败的问题
2018/03/14 Javascript
vue兄弟组件传递数据的实例
2018/09/06 Javascript
对vue中v-if的常见使用方法详解
2018/09/28 Javascript
vue实现简单的星级评分组件源码
2018/11/16 Javascript
在Vue项目中用fullcalendar制作日程表的示例代码
2019/08/04 Javascript
原生js实现3D轮播图
2020/03/21 Javascript
微信小程序实现禁止分享代码实例
2019/10/19 Javascript
[01:53]DOTA2超级联赛专访Zhou 五年职业青春成长
2013/05/29 DOTA
python实现ip查询示例
2014/03/26 Python
深入讨论Python函数的参数的默认值所引发的问题的原因
2015/03/30 Python
使用Python对SQLite数据库操作
2017/04/06 Python
Python性能测试工具Locust安装及使用
2020/12/01 Python
英国家喻户晓的高街品牌:River Island
2017/11/28 全球购物
Chemist Warehouse中文网:澳洲连锁大药房
2021/02/05 全球购物
介绍一下EJB的分类及其各自的功能及应用
2016/08/23 面试题
自我鉴定标准格式
2014/03/19 职场文书
党性观念心得体会
2014/09/03 职场文书
2014年社区居委会主任重阳节讲话稿
2014/09/25 职场文书
学校党支部公开承诺书
2015/04/30 职场文书
win10以太网连接不上怎么办?Win10连接以太网详细教程
2022/04/08 数码科技
Python各协议下socket黏包问题原理
2022/04/12 Python