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利用lxml读写xml格式的文件
Aug 10 Python
Python设计模式之命令模式简单示例
Jan 10 Python
python读取txt文件并取其某一列数据的示例
Feb 19 Python
详解Python做一个名片管理系统
Mar 14 Python
python实现微信每日一句自动发送给喜欢的人
Apr 29 Python
Mac在python3环境下安装virtualwrapper遇到的问题及解决方法
Jul 09 Python
Python+Selenium使用Page Object实现页面自动化测试
Jul 14 Python
在django中,关于session的通用设置方法
Aug 06 Python
利用python实现AR教程
Nov 20 Python
Python使用socket模块实现简单tcp通信
Aug 18 Python
python 基于opencv操作摄像头
Dec 24 Python
Python实战之大鱼吃小鱼游戏的实现
Apr 01 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 随机生成10位字符代码
2009/03/26 PHP
PHP 下载文件时如何自动添加bom头及解释BOM头和去掉bom头的方法
2016/01/04 PHP
PHP实现的构造sql语句类实例
2016/02/03 PHP
PHP判断数组是否为空的常用方法(五种方法)
2017/02/08 PHP
Laravel配置全局公共函数的方法步骤
2019/05/09 PHP
Thinkphp 框架扩展之Widget扩展实现方法分析
2020/04/23 PHP
ThinkPHP5.1验证码功能实现的示例代码
2020/06/08 PHP
jQuery contains过滤器实现精确匹配使用方法
2013/04/12 Javascript
java、javascript实现附件下载示例
2014/08/14 Javascript
javascript上下方向键控制表格行选中并高亮显示的方法
2015/02/13 Javascript
JS动态创建DOM元素的方法
2015/06/09 Javascript
如何使用AngularJs打造权限管理系统【简易型】
2016/05/09 Javascript
jQuery列表检索功能实现代码
2017/07/17 jQuery
了解JavaScript表单操作和表单域
2019/05/27 Javascript
JavaScript canvas实现跟随鼠标移动小球
2021/02/09 Javascript
[33:23]Secret vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python复制目录结构脚本代码分享
2015/03/06 Python
python中随机函数random用法实例
2015/04/30 Python
Python数据类型中的“冒号“[::]——分片与步长操作示例
2018/01/24 Python
python实现文件的备份流程详解
2019/06/18 Python
python虚拟环境完美部署教程
2019/08/06 Python
Python爬虫实现模拟点击动态页面
2020/03/05 Python
Python中内建模块collections如何使用
2020/05/27 Python
解决keras加入lambda层时shape的问题
2020/06/11 Python
纪伊国屋新加坡网上书店:Kinokuniya新加坡
2017/12/29 全球购物
西安夏日科技有限公司Java笔试题
2013/01/11 面试题
J2EE模式面试题
2016/10/11 面试题
教你怎样写好自我评价
2013/10/05 职场文书
求职者简历中的自我评价
2013/10/20 职场文书
校长就职演讲稿
2014/01/06 职场文书
《小儿垂钓》教学反思
2014/02/23 职场文书
就业协议书范本
2014/04/11 职场文书
2014办公室副主任四风对照检查材料思想汇报
2014/09/20 职场文书
升职自荐信范文
2015/03/27 职场文书
2015年乡镇纪委工作总结
2015/05/26 职场文书
Python+Selenium实现抖音、快手、B站、小红书、微视、百度好看视频、西瓜视频、微信视频号、搜狐视频、一点号、大风号、趣头条等短视频自动发布
2022/04/13 Python