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脚本实现下载合并SAE日志
Feb 10 Python
Python人脸识别初探
Dec 21 Python
用tensorflow构建线性回归模型的示例代码
Mar 05 Python
python操作xlsx文件的包openpyxl实例
May 03 Python
tensorflow: 查看 tensor详细数值方法
Jun 13 Python
python 列表转为字典的两个小方法(小结)
Jun 28 Python
使用Python实现图像标记点的坐标输出功能
Aug 14 Python
Python字典的概念及常见应用实例详解
Oct 30 Python
tensorflow之读取jpg图像长和宽实例
Jun 18 Python
python3实现简单飞机大战
Nov 29 Python
Python爬虫教程之利用正则表达式匹配网页内容
Dec 08 Python
Python可视化学习之matplotlib内置单颜色
Feb 24 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 获取远程文件内容的函数代码
2010/03/24 PHP
php将fileterms函数返回的结果变成可读的形式
2011/04/21 PHP
php 邮件发送问题解决
2014/03/22 PHP
php 类中的常量、静态属性、非静态属性的区别
2017/04/09 PHP
jQuery asp.net 用json格式返回自定义对象
2010/04/07 Javascript
javascript之学会吝啬 精简代码
2010/04/25 Javascript
捕获浏览器关闭、刷新事件不同情况下的处理方法
2013/06/02 Javascript
Jquery中LigerUi的弹出编辑框(实现方法)
2013/07/09 Javascript
使用jQuery和Bootstrap实现多层、自适应模态窗口
2014/12/22 Javascript
javascript作用域问题实例分析
2015/07/13 Javascript
微信小程序 生命周期详解
2016/10/12 Javascript
webpack配置之后端渲染详解
2017/10/26 Javascript
详解IWinter 一个路由转控制器的 Nodejs 库
2017/11/15 NodeJs
Vue + Node.js + MongoDB图片上传组件实现图片预览和删除功能详解
2020/04/29 Javascript
Vant 在vue-cli 4.x中按需加载操作
2020/11/05 Javascript
[02:30]DOTA2放量测试专访海涛:呼吁保护新手玩家
2013/08/26 DOTA
Python入门_浅谈逻辑判断与运算符
2017/05/16 Python
django admin添加数据自动记录user到表中的实现方法
2018/01/05 Python
Python基于BeautifulSoup和requests实现的爬虫功能示例
2019/08/02 Python
python爬虫-模拟微博登录功能
2019/09/12 Python
python银行系统实现源码
2019/10/25 Python
简单了解python中的f.b.u.r函数
2019/11/02 Python
如何基于Python + requests实现发送HTTP请求
2020/01/13 Python
利用PyQt中的QThread类实现多线程
2020/02/18 Python
印度最大的旅游网站:MakeMyTrip
2016/10/05 全球购物
苹果Mac升级:MacSales.com
2017/11/20 全球购物
成龙霸王洗发水广告词
2014/03/14 职场文书
电子信息专业应届生自荐信
2014/06/04 职场文书
商场客服专员岗位职责
2014/06/13 职场文书
大学军训自我鉴定大全
2014/09/18 职场文书
长城导游词400字
2015/01/30 职场文书
小浪底导游词
2015/02/12 职场文书
圣诞晚会主持词开场白
2015/05/28 职场文书
手把手教你使用TensorFlow2实现RNN
2021/07/15 Python
基于Go语言构建RESTful API服务
2021/07/25 Golang
Python万能模板案例之matplotlib绘制甘特图
2022/04/13 Python