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 相关文章推荐
多线程爬虫批量下载pcgame图片url 保存为xml的实现代码
Jan 17 Python
使用Python对Csv文件操作实例代码
May 12 Python
python使用两种发邮件的方式smtp和outlook示例
Jun 02 Python
python 删除大文件中的某一行(最有效率的方法)
Aug 19 Python
python使用itchat库实现微信机器人(好友聊天、群聊天)
Jan 04 Python
基于Python 装饰器装饰类中的方法实例
Apr 21 Python
使用Python处理Excel表格的简单方法
Jun 07 Python
Python机器学习库scikit-learn安装与基本使用教程
Jun 25 Python
Python爬取qq空间说说的实例代码
Aug 17 Python
详解pycharm自动import所需的库的操作方法
Nov 30 Python
python温度转换华氏温度实现代码
Dec 06 Python
Python数据可视化之绘制柱状图和条形图
May 25 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中websocket的使用方法
2016/09/15 PHP
php面向对象程序设计中self与static的区别分析
2019/05/21 PHP
javascript中的对象创建 实例附注释
2011/02/08 Javascript
javascript for循环从入门到偏门(效率优化+奇特用法)
2012/08/01 Javascript
jQuery中[attribute^=value]选择器用法实例
2014/12/31 Javascript
每天一篇javascript学习小结(Boolean对象)
2015/11/12 Javascript
漂亮! js实现颜色渐变效果
2016/08/12 Javascript
使用JavaScript获取URL中的参数(两种方法)
2016/11/16 Javascript
JavaScript实现多栏目切换效果
2016/12/12 Javascript
利用jQuery实现滑动开关按钮效果(附demo源码下载)
2017/02/07 Javascript
JavaScript实现移动端轮播效果
2017/06/06 Javascript
Vue+webpack+Element 兼容问题总结(小结)
2018/08/16 Javascript
关于vue v-for循环解决img标签的src动态绑定问题
2018/09/18 Javascript
详解vue项目接入微信JSSDK的坑
2018/12/14 Javascript
vue-video-player 断点续播的实现
2021/02/01 Vue.js
[01:12](回顾)DOTA2国际邀请赛,全世界DOTAer的盛宴
2014/07/01 DOTA
python实现人人网登录示例分享
2014/01/19 Python
python fabric实现远程部署
2017/01/05 Python
python redis 删除key脚本的实例
2019/02/19 Python
基于 Django 的手机管理系统实现过程详解
2019/08/16 Python
详解一种用django_cache实现分布式锁的方式
2019/09/01 Python
pygame实现俄罗斯方块游戏(对战篇1)
2019/10/29 Python
pandas 空数据处理方法详解
2019/11/02 Python
Python的几种主动结束程序方式
2019/11/22 Python
python3 配置logging日志类的操作
2020/04/08 Python
纯CSS3制作漂亮带动画效果的主机价格表
2015/04/25 HTML / CSS
使用HTML5 Canvas绘制直线或折线等线条的方法讲解
2016/03/14 HTML / CSS
德国富尔达运动鞋店:43einhalb
2020/12/25 全球购物
职业教育毕业生求职信
2013/11/09 职场文书
写自荐信三大法宝
2014/01/24 职场文书
教师开学感言
2014/02/14 职场文书
博士生导师推荐信
2014/07/08 职场文书
相亲活动方案
2014/08/26 职场文书
2014年护士个人工作总结
2014/11/11 职场文书
2015年事业单位办公室文员工作总结
2015/04/24 职场文书
十大最强岩石系宝可梦,怪颚龙实力最强,第七破坏力很强
2022/03/18 日漫