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中使用pprint函数进行格式化输出的教程
Apr 07 Python
一张图带我们入门Python基础教程
Feb 05 Python
python数据结构之链表的实例讲解
Jul 25 Python
TensorFlow实现Logistic回归
Sep 07 Python
Python3爬虫爬取百姓网列表并保存为json功能示例【基于request、lxml和json模块】
Dec 05 Python
在Python中调用Ping命令,批量IP的方法
Jan 26 Python
python gensim使用word2vec词向量处理中文语料的方法
Jul 05 Python
django 简单实现登录验证给你
Nov 06 Python
PyTorch 普通卷积和空洞卷积实例
Jan 07 Python
python使用Geany编辑器配置方法
Feb 21 Python
Python面向对象程序设计之私有变量,私有方法原理与用法分析
Mar 23 Python
Python中用xlwt制作表格实例讲解
Nov 05 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
PHP4实际应用经验篇(9)
2006/10/09 PHP
PHP中4个加速、缓存扩展的区别和选用建议
2014/03/12 PHP
PHP-Java-Bridge使用笔记
2014/09/22 PHP
php递归删除目录与文件的方法
2015/01/30 PHP
ThinkPHP中使用Ueditor富文本编辑器
2015/09/02 PHP
php提交post数组参数实例分析
2015/12/17 PHP
Ajax和PHP正则表达式验证表单及验证码
2016/09/24 PHP
学习ExtJS Panel常用方法
2009/10/07 Javascript
javascript中RegExp保留小数点后几位数的方法分享
2013/08/13 Javascript
a标签click和href执行顺序探讨
2014/06/23 Javascript
JavaScript基础语法、dom操作树及document对象
2014/12/02 Javascript
基于JS代码实现实时显示系统时间
2016/06/16 Javascript
JS简单实现移动端日历功能示例
2016/12/28 Javascript
Node.JS文件系统解析实例详解
2017/05/15 Javascript
Javascript调试之console对象——你不知道的一些小技巧
2017/07/10 Javascript
jquery获取transform里的值实现方法
2017/12/12 jQuery
基于webpack4.X从零搭建React脚手架的方法步骤
2018/12/23 Javascript
深入了解Hybrid App技术的相关知识
2019/07/17 Javascript
Vue封装Axios请求和拦截器的步骤
2020/09/16 Javascript
python实现分析apache和nginx日志文件并输出访客ip列表的方法
2015/04/04 Python
Python函数返回值实例分析
2015/06/08 Python
Python实现TCP/IP协议下的端口转发及重定向示例
2016/06/14 Python
一个基于flask的web应用诞生 使用模板引擎和表单插件(2)
2017/04/11 Python
Python学习笔记之变量、自定义函数用法示例
2019/05/28 Python
button在IE6/7下的黑边去除方案
2012/12/24 HTML / CSS
浅析CSS3中鲜为人知的属性:-webkit-tap-highlight-color
2017/01/12 HTML / CSS
详解CSS3中强大的filter(滤镜)属性
2017/06/29 HTML / CSS
英国DIY汽车维修配件网站:DIY Car Service Parts
2019/08/30 全球购物
大学生个人简历自我评价
2013/11/16 职场文书
会计与审计专业自荐信范文
2014/03/15 职场文书
《雨点儿》教学反思
2014/04/14 职场文书
2016年三严三实党课学习心得体会
2016/01/06 职场文书
女性励志书籍推荐
2019/08/19 职场文书
OpenCV-Python模板匹配人眼的实例
2021/06/08 Python
详解如何用Python实现感知器算法
2021/06/18 Python
vue中的可拖拽宽度div的实现示例
2022/04/08 Vue.js