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抓取淘宝下拉框关键词的方法
Jul 08 Python
Python的Scrapy爬虫框架简单学习笔记
Jan 20 Python
tensorflow 使用flags定义命令行参数的方法
Apr 23 Python
Python Numpy:找到list中的np.nan值方法
Oct 30 Python
python爬虫超时的处理的实例
Dec 19 Python
python实现微信自动回复及批量添加好友功能
Jul 03 Python
详解python调用cmd命令三种方法
Jul 08 Python
基于Python+Appium实现京东双十一自动领金币功能
Oct 31 Python
jupyter notebook oepncv 显示一张图像的实现
Apr 24 Python
用 Python 制作地球仪的方法
Apr 24 Python
关于python3.7安装matplotlib始终无法成功的问题的解决
Jul 28 Python
使用python如何删除同一文件夹下相似的图片
May 07 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
德生PL990,目前市面上唯一一款便携式插卡蓝牙全波段高性能收音机
2021/03/02 无线电
php动态生成JavaScript代码
2009/03/09 PHP
解析php时间戳与日期的转换
2013/06/06 PHP
ThinkPHP中Session用法详解
2014/11/29 PHP
PHP巧妙利用位运算实现网站权限管理的方法
2017/03/12 PHP
javascript实现跳转菜单的具体方法
2013/07/05 Javascript
jquery的map与get方法详解
2013/11/04 Javascript
node.js操作mongoDB数据库示例分享
2014/11/26 Javascript
js实现仿百度汽车频道选择汽车图片展示实例
2015/05/06 Javascript
jquery UI Datepicker时间控件的使用方法(终结版)
2015/11/07 Javascript
JavaScript严格模式详解
2015/11/18 Javascript
浅谈JavaScript for循环 闭包
2016/06/22 Javascript
BootStrap入门教程(一)之可视化布局
2016/09/19 Javascript
JavaScript html5利用FileReader实现上传功能
2020/03/27 Javascript
jQuery导航条固定定位效果实例代码
2017/05/26 jQuery
详解VUE 定义全局变量的几种实现方式
2017/06/01 Javascript
react中的ajax封装实例详解
2017/10/17 Javascript
在vue中实现简单页面逆传值的方法
2017/11/27 Javascript
如何去除富文本中的html标签及vue、react、微信小程序中的过滤器
2018/11/21 Javascript
js中事件对象和事件委托的介绍
2019/01/21 Javascript
详解vue 自定义marquee无缝滚动组件
2019/04/09 Javascript
详解vue更改头像功能实现
2019/04/28 Javascript
[01:24]DOTA2上海特锦赛OG战队抵达 专车接机入驻总统套房
2016/02/23 DOTA
python类装饰器用法实例
2015/06/04 Python
python调用百度REST API实现语音识别
2018/08/30 Python
python3 dict ndarray 存成json,并保留原数据精度的实例
2019/12/06 Python
Pytoch之torchvision.transforms图像变换实例
2019/12/30 Python
如何在Django中使用聚合的实现示例
2020/03/23 Python
韩国三星旗下的一家超市连锁店:Home Plus
2016/07/30 全球购物
印尼美容产品购物网站:PerfectBeauty.id
2017/12/01 全球购物
应届大专毕业生个人自荐信
2013/09/22 职场文书
毕业生自我鉴定范文
2013/11/08 职场文书
银行主办会计岗位职责
2014/08/13 职场文书
关心下一代工作先进事迹
2014/08/15 职场文书
应届毕业生的自我评价
2019/06/21 职场文书
前端与RabbitMQ实时消息推送未读消息小红点实现示例
2022/07/23 Java/Android