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爬虫之模拟登陆csdn的实例代码
May 18 Python
异步任务队列Celery在Django中的使用方法
Jun 07 Python
python简易远程控制单线程版
Jun 20 Python
根据DataFrame某一列的值来选择具体的某一行方法
Jul 03 Python
TensorFlow卷积神经网络之使用训练好的模型识别猫狗图片
Mar 14 Python
python 实现将多条曲线画在一幅图上的方法
Jul 07 Python
OpenCV3.0+Python3.6实现特定颜色的物体追踪
Jul 23 Python
将数据集制作成VOC数据集格式的实例
Feb 17 Python
tensorflow模型的save与restore,及checkpoint中读取变量方式
May 26 Python
详解Windows下PyCharm安装Numpy包及无法安装问题解决方案
Jun 18 Python
宝塔面板成功部署Django项目流程(图文)
Jun 22 Python
python抢购软件/插件/脚本附完整源码
Mar 04 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使之能同时支持GIF和JPEG
2006/10/09 PHP
第4章 数据处理-php数组的处理-郑阿奇
2011/07/04 PHP
php addslashes及其他清除空格的方法是不安全的
2012/01/25 PHP
基于Jquery的动态创建DOM元素的代码
2010/12/28 Javascript
基于jQuery的公告无限循环滚动实现代码
2012/05/11 Javascript
javascript实现的元素拖动函数宿主为浏览器
2014/07/21 Javascript
javascript面向对象之访问对象属性的两种方式分析
2015/01/13 Javascript
jQuery实现折线图的方法
2015/02/28 Javascript
深入分析JSON编码格式提交表单数据
2015/06/25 Javascript
AngularJS基础 ng-non-bindable 指令详细介绍
2016/08/02 Javascript
Express的HTTP重定向到HTTPS的方法
2018/06/06 Javascript
javascrit中undefined和null的区别详解
2019/04/07 Javascript
Vue 使用计时器实现跑马灯效果的实例代码
2019/07/11 Javascript
基于vue中的scoped坑点解说
2020/09/04 Javascript
Python使用scrapy抓取网站sitemap信息的方法
2015/04/08 Python
详解Python中的变量及其命名和打印
2016/03/11 Python
Pandas 对Dataframe结构排序的实现方法
2018/04/10 Python
python在TXT文件中按照某一字符串取出该字符串所在的行方法
2018/12/10 Python
Python解压 rar、zip、tar文件的方法
2019/11/19 Python
python文件绝对路径写法介绍(windows)
2019/12/25 Python
tensorflow 实现数据类型转换
2020/02/17 Python
Python读入mnist二进制图像文件并显示实例
2020/04/24 Python
详解HTML5中的标签
2015/06/19 HTML / CSS
HTML5 虚拟键盘出现挡住输入框的解决办法
2017/02/14 HTML / CSS
瑞典廉价机票预订网站:Seat24
2018/06/19 全球购物
台湾良兴购物网:EcLife
2019/12/01 全球购物
网络公司美工设计工作个人的自我评价
2013/11/03 职场文书
开水果连锁店创业计划书
2013/12/29 职场文书
学校安全管理责任书
2014/07/23 职场文书
2014领导干部学习焦裕禄同志先进事迹思想汇报
2014/09/19 职场文书
五年级下册复习计划
2015/01/19 职场文书
2015年父亲节寄语
2015/03/23 职场文书
本科毕业答辩开场白
2015/05/27 职场文书
2016年11月份红领巾广播稿
2015/12/21 职场文书
导游词之金鞭溪风景区
2019/09/12 职场文书
MySQL中LAG()函数和LEAD()函数的使用
2022/08/14 MySQL