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的SQLAlchemy框架使用入门
Apr 29 Python
python 基础教程之Map使用方法
Jan 17 Python
浅谈Series和DataFrame中的sort_index方法
Jun 07 Python
python利用微信公众号实现报警功能
Jun 10 Python
Django框架实现逆向解析url的方法
Jul 04 Python
python安装pywin32clipboard的操作方法
Jan 24 Python
python实现微信防撤回神器
Apr 29 Python
如何通过python的fabric包完成代码上传部署
Jul 29 Python
Python实现序列化及csv文件读取
Jan 19 Python
django 外键创建注意事项说明
May 20 Python
Python 发送邮件方法总结
Aug 10 Python
用python删除文件夹中的重复图片(图片去重)
May 12 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
《一拳超人》埼玉一拳下去,他们存在了800年毫无意义!
2020/03/02 日漫
深入PHP empty(),isset(),is_null()的实例测试详解
2013/06/06 PHP
zf框架的db类select查询器join链表使用示例(zend框架)
2014/03/14 PHP
php图像处理函数imagecopyresampled用法详解
2016/12/02 PHP
PHP设计模式(七)组合模式Composite实例详解【结构型】
2020/05/02 PHP
JavaScript DOM学习第四章 getElementByTagNames
2010/02/19 Javascript
基于jquery的当鼠标滚轮到最底端继续加载新数据思路分享(多用于微博、空间、论坛 )
2011/10/10 Javascript
javascript实现五星评价代码(源码下载)
2015/08/11 Javascript
AngularJS实现数据列表的增加、删除和上移下移等功能实例
2016/09/05 Javascript
提升页面加载速度的插件InstantClick
2017/09/12 Javascript
vue中的适配px2rem示例代码
2018/11/19 Javascript
js实现跟随鼠标移动的小球
2019/08/26 Javascript
Vue el-autocomplete远程搜索下拉框并实现自动填充功能(推荐)
2019/10/25 Javascript
详解js location.href和window.open的几种用法和区别
2019/12/02 Javascript
Threejs实现滴滴官网首页地球动画功能
2020/07/13 Javascript
vue前端和Django后端如何查询一定时间段内的数据
2021/02/28 Vue.js
[56:13]DOTA2-DPC中国联赛定级赛 LBZS vs Phoenix BO3第一场 1月10日
2021/03/11 DOTA
python列表去重的二种方法
2014/02/14 Python
Web服务器框架 Tornado简介
2014/07/16 Python
Python中集合类型(set)学习小结
2015/01/28 Python
Python操作串口的方法
2015/06/17 Python
Python实现的基于优先等级分配糖果问题算法示例
2018/04/25 Python
十分钟搞定pandas(入门教程)
2019/06/21 Python
Python shelve模块实现解析
2019/08/28 Python
python super的使用方法及实例详解
2019/09/25 Python
DHC美国官网:日本通信销售第一的化妆品品牌
2017/11/12 全球购物
汇智创新科技发展有限公司
2015/12/06 面试题
最新的咖啡店创业计划书
2013/12/30 职场文书
学前班评语大全
2014/05/04 职场文书
司机工作自我鉴定
2014/09/19 职场文书
通用员工手册范本
2015/05/14 职场文书
篮球拉拉队口号
2015/12/25 职场文书
2016年“节能宣传周”活动总结
2016/04/05 职场文书
发言稿之优秀教师篇
2019/09/26 职场文书
Javascript的promise,async和await的区别详解
2022/03/24 Javascript
PHP 时间处理类Carbon
2022/05/20 PHP