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实现apahce网站日志分析示例
Apr 02 Python
python使用正则搜索字符串或文件中的浮点数代码实例
Jul 11 Python
使用Python3中的gettext模块翻译Python源码以支持多语言
Mar 31 Python
python实现的守护进程(Daemon)用法实例
Jun 02 Python
Python中functools模块的常用函数解析
Jun 30 Python
Python中new方法的详解
Jan 15 Python
使用浏览器访问python写的服务器程序
Oct 10 Python
浅谈python中频繁的print到底能浪费多长时间
Feb 21 Python
一文了解python 3 字符串格式化 F-string 用法
Mar 04 Python
Python request使用方法及问题总结
Apr 26 Python
如何验证python安装成功
Jul 06 Python
Python类型转换的魔术方法详解
Dec 23 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
超神学院:鹤熙已踏入神圣领域,实力不比凯莎弱
2020/03/02 国漫
php面向对象全攻略 (十五) 多态的应用
2009/09/30 PHP
在Nginx上部署ThinkPHP项目教程
2015/02/02 PHP
php实现兼容2038年后Unix时间戳转换函数
2015/03/18 PHP
理解Javascript_10_对象模型
2010/10/16 Javascript
javascript 运算数的求值顺序
2011/08/23 Javascript
JS 无限级 Select效果实现代码(json格式)
2011/08/30 Javascript
node.js中的favicon.ico请求问题处理
2014/12/15 Javascript
jquery滚动加载数据的方法
2015/03/09 Javascript
浅谈Sticky组件的改进实现
2016/03/22 Javascript
JS随机洗牌算法之数组随机排序
2016/03/23 Javascript
JS判断字符串变量是否含有某个字串的实现方法
2016/06/03 Javascript
jQuery实现的简单悬浮层功能完整实例
2017/01/23 Javascript
vue-rx的初步使用教程
2018/09/21 Javascript
9102年webpack4搭建vue项目的方法步骤
2019/02/20 Javascript
JavaScript中的事件与异常捕获详析
2019/02/24 Javascript
js+css3实现简单时钟特效
2020/09/13 Javascript
微信小程序将页面按钮悬浮固定在底部的实现代码
2020/10/29 Javascript
python&MongoDB爬取图书馆借阅记录
2016/02/05 Python
Python实现进程同步和通信的方法
2018/01/02 Python
Python即时网络爬虫项目启动说明详解
2018/02/23 Python
python 3利用Dlib 19.7实现摄像头人脸检测特征点标定
2018/02/26 Python
Python实现接受任意个数参数的函数方法
2018/04/21 Python
Python 实例方法、类方法、静态方法的区别与作用
2019/08/14 Python
美国孕妇装品牌:Destination Maternity
2018/02/04 全球购物
Zavvi西班牙:电子游戏、极客服装、Blu-ray、Funko Pop等
2019/05/03 全球购物
银行出纳岗位职责
2013/11/25 职场文书
网络教育自我鉴定
2014/02/04 职场文书
遥感技术与仪器求职信
2014/02/22 职场文书
广告学专业自荐信范文
2014/02/24 职场文书
集中采购方案
2014/06/10 职场文书
大专学生求职自荐信
2014/07/06 职场文书
语文课外活动总结
2014/08/27 职场文书
改作风抓落实促发展心得体会
2014/09/10 职场文书
2015质检员个人年终工作总结
2015/10/23 职场文书
python如何正确使用yield
2021/05/21 Python