Python3.6实现12306火车票自动抢票,附源码

Python(发音:英[?pa?θ?n],美[?pa?θɑ:n]),是一种面向对象、直译式电脑编程语言,也是一种功能强大的通用型语言,已经具有近二十年的发展历史,成熟且稳定。它包含了一组完善而且容易理解的标准库,能够轻松完成很多常见的任务。它的语法非常简捷和清晰,与其它大多数程序设计语言不一样,它使用缩进来定义语句。

Python支持命令式程序设计、面向对象程序设计、函数式编程、面向切面编程、泛型编程多种编程范式。与Scheme、Ruby、Perl、Tcl等动态语言一样,Python具备垃圾回收功能,能够自动管理存储器使用。它经常被当作脚本语言用于处理系统管理任务和网络程序编写,然而它也非常适合完成各种高级任务。Python虚拟机本身几乎可以在所有的作业系统中运行。使用一些诸如py2exe、PyPy、PyInstaller之类的工具可以将Python源代码转换成可以脱离Python解释器运行的程序。

最近在学Python,所以用Python写了这个12306抢票脚本,分享出来,与大家共同交流和学习,有不对的地方,请大家多多指正。话不多说,进入正题:

这个脚本目前只能刷一趟车的,人数可以是多个,支持选取作为类型等。

实现思路是splinter.browser模拟浏览器登陆和操作,由于12306的验证码不好自动识别,所以,验证码需要用户进行手动识别,并进行登陆操作,之后的事情,就交由脚本来操作就可以了,下面是我测试时候的一些截图:

第一步:如下图,首先输入抢票基本信息

第二步:然后进入登录页,需要手动输入验证码,并点击登陆操作

第三步:登陆后,自动进入到抢票页面,如下图这样的

最后:就是坐等刷票结果就好了,如下图这样,就说是刷票成功了,刷到票后,会进行短信和邮件的通知,请记得及时前往12306进行支付,不然就白抢了。

Python运行环境:python3.6

用到的模块:re、splinter、time、sys、httplib2、urllib、smtplib、email

未安装的模块,请使用pip instatll进行安装,例如:pip install splinter

如下代码是这个脚本所有用到的模块引入:

刷票前信息准备,我主要说一下始发站和目的地的cookie值获取,因为输入城市的时候,需要通过cookie值,cookie值可以通过12306官网,然后在F12(相信所有的coder都知道这个吧)的network里面的查询请求cookie中可以看到,在请求的header里面可以找到,_jc_save_fromStation值是出发站的cookie,_jc_save_toStation的值是目的地的cookie,然后加入到代码里的城市的cookie字典city_list里即可,键是城市的首字母,值是cookie值的形式。

抢票,肯定需要先登录,我这里模拟的登录操作,会自动填充12306的账号名和密码,当然,你也可以在打开的浏览器中修改账号和密码,实现的关键代码如下:

登录之后,就是控制刷票的各种操作处理了,这里,我就不贴代码了,因为代码比较多,别担心,在最后,我会贴出完整的代码的。

当刷票成功后,我会进行短信和邮件的双重通知,当然,这里短信通知的平台,就看你用那个具体来修改代码了,我用的是互亿无线的体验版的免费短信通知接口;发送邮件模块我用的是smtplib,发送邮件服务器用的是163邮箱,如果用163邮箱的话,你还没有设置客户端授权密码,记得先设置客户端授权密码就好了,挺方便的。以下是主要实现代码:

说了那么多,感觉都是说了好多废话啊,哈哈,不好意思,耽误大家时间来看我瞎扯了,我贴上大家最关心的源码,请接码,大家在尝试运行过程中,有任何问题,可以给我留言或者私信我,我看到都会及时回复大家的:

Python可以做什么?

web开发和 爬虫是比较适合 零基础的

自动化运维 运维开发 和 自动化测试 是适合 已经在做运维和测试的人员

大数据 数据分析 这方面 是很需要专业的 专业性相对而言比较强

科学计算 一般都是科研人员 在用

机器学习 和 人工智能 首先 学历 要求高 其次 高数要求高 难度很大

我有一个微信公众号,经常会分享一些python技术相关的干货;如果你喜欢我的分享,可以用微信搜索“python语言学习”关注

欢迎大家加入千人交流答疑裙:588+090+942

原文地址:http://blog.51cto.com/13726370/2125277

时间: 2024-08-10 15:11:33

Python3.6实现12306火车票自动抢票,附源码的相关文章

C#实现自动升级(附源码)

对于PC桌面应用程序而言,自动升级功能往往是必不可少的.而自动升级可以作为一个独立的C/S系统来开发,这样,就可以在不同的桌面应用中进行复用.本文将着重介绍OAUS的相关背景.使用方法,至于详细的实现细节,大家可以直接下载源码研究.如果了解了OAUS的使用,源码的理解就非常容易了.如果需要直接部署使用自动升级系统,那么,可下载文末的可执行程序压缩包. 一.OAUS的主要功能 目前主流的程序自动升级策略是,重新下载最新的安装包,然后重新安装整个客户端.这种方式虽然简单直观,但是缺陷也很明显.比如,

c# 模拟 网页实现12306登陆、自动刷票、自动抢票完全篇(转)

这一篇文章,我将从头到尾教大家使用c#模拟网页面登陆12306网站,自动刷票,选择订票人,到最后一步提交订单.研究过HTTP协议的童鞋们都 知道,我们在访问网站时,是有两种方式的,POST和GET方式,HTTP协议是TCP/IP的一部分,有兴趣的可以使用Socket通讯可以模拟出 HTTP的访问机制.我们再说POST和GET方式,在访问一个页面时,浏览器会提交一个本地cookie提交到网站服务器,cookie的作用可以是保 存我们登陆网站成功后取得的一串钥匙,也可以是其他的一些重要的信息.这是至

聚合数据iOS SDK 12306火车票查询订票演示示例

1,将聚合数据SDK(JuheApis.framework)添加到你的程序中来,SDK依赖的包包括: 2,在聚合SDK Framework的JHSDKAPIPath.h文件中找到快递查询接口宏,以及字典参数 /* 12306火车票查询订票 *//**@brief 2306火车票查询订票--1.车次查询@param lname string 必填 车次名称,如:G4@param ldtype string 非必填 返回数据的格式,xml或json,默认json*/#define kJHAPIS_L

快彩网cai票php源码thinkphp框架开发webpack 与 vue

String.StringBuffer.StringBuilder都是JAVA中常用的字符串操作类,对于他们的区别大家也都能耳熟能详,但底层到底是怎样实现的呢?今天就再深入分析下这三种字符串操作的区别.各自的原理及使用场景. ???????请尊重作者劳动成果,转载请标明原文链接:快彩网cai票php源码https://dashengba.com 大圣源码论坛扣3266397597 一.String ???????先来看一下JDK中String中的部分源码: ????????可以看到String类

android Listview分批加载+自动加载(附源码下载)

直接上代码,代码有注释: public class TestForListviewActivity extends Activity implements OnScrollListener { private ListView mListview = null; private View mFooterView; private PaginationAdapter mAdapter; private Handler handler=new Handler(); private boolean i

Python3.x:获取iframe内嵌页面的源码

Python3.x:获取iframe内嵌页面的源码 前言 在一些网页中经常会看到ifrmae/frame标签,iframe是嵌入式框架一般用来在已有的页面中嵌入另一个页面,当一个元素在iframe里时我们应该先切换到iframe里面. 语法 1.进入iframe iframe = self.driver.find_element_by_xpath("//iframe[contains(@src,'https://************/auth?e_p=1&response_type=

360自动抢票还不够,几行js代码设置无人值守

360就是牛逼哄哄的...... 但是最近在使用360浏览器抢票的时候还是发现了一些体验不好的地方,比如搞着搞着就退出了登录,有时候能帮你自动登录进去,但是自动登录之后又不会帮你自动开始抢.然后验证码几次失败之后 流程就停住了, 所以必须的有人看守. 由于360浏览器是使用Chrome内核 而且提供了调试功能,所以我们写一小段js让360达到无人值守抢票的目的 setInterval(function () { if ($('.username').html() != undefined &&am

python自动抢票

# -*- coding: utf-8 -*- from splinter.browser import Browser from time import sleep import traceback #初始化信息 # 用户名,密码 username = u"用户名" passwd = u"密码" # cookies值得自己去找 starts = u"杭州,HZH" ends = u"黄石,HSN" # 时间格式2016-03

分享12306秒票杀手锏源码

本案通过切换地点和CDN,相对于识别验证码.开多浏览器,更能第一时间出票,从本质上解决刷票的问题.       由于是杀手锏,一旦大面积使用,容易TDB封锁.但考虑到很多人问起,暂时放出核心代码供大家一起研究: 源码下载:http://files.cnblogs.com/guozili/12306.rar 必备1:Firefox(V20以上有问题) + Greasemonkey + HostAdmin 必备2:本地架IIS .net 4.0网站切hosts 原理1:如果(广州,广州南,广州北)