马上就过年了!你买到回家的票了吗?Python给你24小时抢票!
off999 2024-09-27 13:47 21 浏览 0 评论
转眼间,又快到了一年一度数以几十亿计的人口迁移时间了,你买到过年回家的票了吗
除了高铁管家、智行火车票、携程、去哪儿等“专业”抢票,连美团和京东这些也开始“不务正业”的加入抢票软件的大军,朋友圈、微信群里惊现各种点击加速抢票的链接,通过其他人点击加速抢票,大家都想不花钱抢票,估计大多数人都没抢到,这只是商家宣传自己的噱头,主要目的还是要用户花钱买加速包,即使用户花了很多钱,达到“光速”抢票,这也只是一个概率问题,也不一定能抢到票。
而且第三方抢票软件很不安全,可还记得2018年12月月底网上流传的60万账号,410万联系人信息,这些数据是从第三方泄露出去的,所以说还是用官方工具购票为好。
这里说一下我对加速抢票的理解,正常购票发送请求需要服务器响应,人工一次又一次的刷新页面,刷新时间间隔和服务器响应时间会直接影响到购票。12306使用CDN内容分发网络,由中心平台统一调度和管理。CDN分布在全国各地,用户购票时,会连接最近的可用的CDN,这会降低网络拥堵,提高用户响应速度。抢票软件就是找到附近所有可用的CDN,在持续不断的刷新页面时会不断的换CDN,直到抢到票为止。在抢票高峰期,抢票软件多了,普通用户就很难刷新出页面,等页面刷新出来,也就没票了。
所以,网上有大神自己写了一个抢票工具,首先祭出大神的项目地址 https://github.com/testerSunshine/12306,以示感谢。据说,该大神也是因为过年回家买不到票,“一怒之下”写了这个项目。该项目购票流程如下图:
这里话不多说,先上效果图,有图才有真相(ps:这里尝试预定1月30号从武汉到上海的车票,余票只有1张,一下子就成功了)
大神的项目只能运行在python2.7,且小白用户可能连环境都弄不好,更别说使用它抢票了。本着好东西不能浪费的精神,花了两天时间,将此项目从python2.7升级到python3.7,并增加微信通知的功能,目前已经踩了很多坑,可能还有一些坑没踩出来,欢迎各位帮忙踩坑。目前已将该项目打包,小白用户可以直接使用。欢迎去我的github上下载,地址:https://github.com/leeyoshinari/12306
使用方式
以管理员身份运行命令提示符,一定要以管理员身份运行,然后进入到项目所在的文件夹下,如图所示
运行下面命令
getTicket.exe --username 123456 --password 123456 --departure_date 2019-01-15 --from_station北京 --to_station上海 --train_typeG, D, O --seat_type 二等座 --is_by_time False --train_no G1722, D3025 --departure_time 00:00--arrival_time 23:59 --ticket_people 张三 --is_more_ticket True --notification 2 --receive_wechat 张三 --send_msg_interval 0 --ticket_black_time 5 --is_auto_code False --rkusername 123 --rkpassword 123 --order_model 2 --open_time 07:00:00
参数说明:
--username 12306账户用户名,必须
--password 12306账户密码,必须
--departure_date 出发日期,必须
--from_station 出发地,必须
--to_station 目的地,必须
--train_type 列车类型,G为高铁,D为动车,O为其他火车,默认为所有列车
--seat_type 座位类型,默认为动车或高铁二等座
--is_by_time 是否按时间选择车次,True为按时间选择车次,False为指定车次,默认为False
--train_no 指定购买的车次,如果is_by_time为False,此参数必须
--departure_time 最早出发时间,如果is_by_time为True,此参数必须,默认为00:00
--arrival_time 最晚到达时间,如果is_by_time为True,此参数必须,默认为23:59
--ticket_people 乘车人,12306账户已有的乘车人的名字,必须
--is_more_ticket 当余票数小于乘车人数,是否提交,True为删除乘车人和余票数一样后提交,False为不提交,默认为True
--notification 信息通知方式,0为不通知,1为邮件通知,2为微信通知,默认为2
--receive_wechat 将信息发送到指定好友,如果notification为2,此参数必须
--send_msg_interval 每隔多长时间将查询状态信息发送给微信好友,单位为秒,主要预防微信登陆状态失效,0为不发送信息,大于0为间隔时间,默认为300。尽管如此,微信登录状态仍有可能失效,如果间隔时间太短,会被骚扰,因此建议使用邮件
--ticket_black_time 僵尸票关小黑屋时间,单位为秒,有些车次查询剩余票只有1张或2张,但就是买不到,此类票为僵尸票,为避免影响程序购买其他车次的票,默认时间为5s
-- is_auto_code 是否自动识别验证码,由于12306恶心的验证码,要想自动识别,需要注册若快账号,并充值,注册地址:http://www.ruokuai.com/client/index?6726,充值很便宜,5块钱就够玩很长时间了。True为自动识别,需注册账号,False为人工识别,默认为False。(ps:在登陆时会有验证码,部分情况下,点击预定按钮后,可能还会有一个验证码,而且在查询过程中,登陆状态很可能失效,这时如果查询有票,是无法自动预定成功的,如果票很难买,还是建议使用自动识别验证码功能,否则很难预定成功。这里不是给若快打广告,此参数可以设置为False。如果有其他识别12306验证码的工具,可以交流交流。此功能暂未调试,请尝试使用)
--rkusername 若快账号,如果is_auto_code为True,此参数必须
--rkpassword 若快密码,如果is_auto_code为True,此参数必须
--order_model 订票模式,分为预售和捡漏两种模式,1为预售模式,2为捡漏模式,在预售模式下,订单刷新时间间隔为0.1-0.5s,在捡漏模式下,订单刷新时间间隔为0.5-3s,默认为2。建议不要使用预售模式,小心你的账号和IP被12306关小黑屋
--open_time 预售放票时间,如果order_model为1,此参数必须
注:以上所有“必须”的参数,必须要传参,否则会报错。
说明:您输入的12306用户名和密码只用来登陆12306官网,只会存储在本地,不会存储到其他任何地方。您输入的所有参数会存储在12306\config\ticket_config.yaml文件中,建议买到票后,删除该文件。
下面是给“懒人”准备的输入参数,其他参数均采用默认配置
getTicket.exe --username 123456 --password 123456 --departure_date 2019-01-30 --from_station 武汉 --to_station 上海 --seat_type 二等座 --train_no G1774,D3008 --ticket_people 张二, 张三 --receive_wechat 张二, 张三
注:以上除汉字以外的所有字母和符号必须在英文输入法下输入
如需查看帮助信息,可在命令提示符中输入getTickets.exe -h
进群:960410445 即可获取书十套PDF!
订票成功后,程序会停止运行,此时会以指定的方式通知您,然后务必及时登陆12306官网,在“未完成订单”里查询订单信息,并完成付款
由于12306官网可能会采取某些策略,这会导致程序在运行时报错,请持续关注此微信公众号或github获取最新的版本。
在使用中,如果有任何问题,欢迎在github上进行反馈,或直接在微信公众号里反馈,一般情况下我都会回复的。
此项目也只能增加您买到票的概率,不保证一定买到票。如果使用中您的账号或IP不幸被12306关小黑屋,此项目概不负责。不过放心,基本上不会被关小黑屋
购买火车票,还是12306最靠谱,请大家尽量通过12306官网购票
此项目仅允许学习交流使用,切勿作为商业用途
最后,希望大家再看到有人在朋友圈或微信群里发帮抢火车票的链接,直接把这篇文章扔过去,以帮助“迷途”中的孩纸,不再让那些商家耽误回家的行程
相关推荐
- 编写更多 pythonic 代码(十三)——Python类型检查
-
一、概述在本文中,您将了解Python类型检查。传统上,类型由Python解释器以灵活但隐式的方式处理。最新版本的Python允许您指定显式类型提示,这些提示可由不同的工具使用,以帮助您更...
- [827]ScalersTalk成长会Python小组第11周学习笔记
-
Scalers点评:在2015年,ScalersTalk成长会完成Python小组完成了《Python核心编程》第1轮的学习。到2016年,我们开始第二轮的学习,并且将重点放在章节的习题上。Pytho...
- 用 Python 画一颗会跳动的爱心:代码里的浪漫仪式感
-
在编程的世界里,代码不仅是逻辑的组合,也能成为表达情感的载体。今天我们就来聊聊如何用Python绘制一颗「会跳动的爱心」,让技术宅也能用代码传递浪漫。无论是写给爱人、朋友,还是单纯记录编程乐趣,这...
- Python面向对象编程(OOP)实践教程
-
一、OOP理论基础1.面向对象编程概述面向对象编程(Object-OrientedProgramming,OOP)是一种编程范式,它使用"对象"来设计应用程序和软件。OOP的核心...
- 如何在 Python 中制作 GIF(python做gif)
-
在数据分析中使用GIF并发现其严肃的一面照片由GregRakozy在Unsplash上拍摄感谢社交媒体,您可能已经对GIF非常熟悉。在短短的几帧中,他们传达了非常具体的反应,只有图片才能传达...
- Python用内置模块来构建REST服务、RPC服务
-
1写在前面和小伙伴们分享一些Python网络编程的一些笔记,博文为《PythonCookbook》读书后笔记整理博文涉及内容包括:TCP/UDP服务构建不使用框架创建一个REST风格的HTTP...
- 第七章:Python面向对象编程(python面向对象六大原则)
-
7.1类与对象基础7.1.1理论知识面向对象编程(OOP)是一种编程范式,它将数据(属性)和操作数据的函数(方法)封装在一起,形成一个称为类(Class)的结构。类是对象(Object)的蓝图,对...
- 30天学会Python编程:8. Python面向对象编程
-
8.1OOP基础概念8.1.1面向对象三大特性8.1.2类与对象关系核心概念:类(Class):对象的蓝图/模板对象(Object):类的具体实例属性(Attribute):对象的状态/数据方法...
- RPython GC 对象分配速度大揭秘(废土种田,分配的对象超给力)
-
最近,对RPythonGC的对象分配速度产生了浓厚的兴趣。于是编写了一个小型的RPython基准测试程序,试图探究它对象分配的大致速度。初步测试与问题发现最初的设想是通过一个紧密循环来分配实...
- 30天学会Python编程:2. Python基础语法结构
-
2.1代码结构与缩进规则定义与原理Python使用缩进作为代码块的分界符,这是Python最显著的特征之一。不同于其他语言使用大括号{},Python强制使用缩进来表示代码层次结构。特性与规范缩进量...
- Python 类和方法(python类的方法与普通的方法)
-
Python类和方法Python类创建、属性和方法具体是如何体现的,代码中如何设计,请继续看下去。蟒蛇类解释在Python中使用OOP?什么是Python类?Python类创建Pyt...
- 动态类型是如何一步步拖慢你的python程序的
-
杂谈人人都知道python慢,这都变成了人尽皆知的事情了,但你知道具体是什么拖慢了python的运行吗?动态类型肯定要算一个!动态类型,能够提高开发效率,能够让我们更加专注逻辑开发,使得编程更加灵活。...
- 用Python让图表动起来,居然这么简单
-
我好像看到这个emoji:动起来了!编译:佑铭参考:https://towardsdatascience.com/how-to-create-animated-graphs-in-python-bb6...
- Python类型提示工程实践:提升代码质量的静态验证方案
-
根据GitHub年度开发者调查报告,采用类型提示的Python项目维护成本降低42%,代码审查效率提升35%。本文通过9个生产案例,解析类型系统在工程实践中的应用,覆盖API设计、数据校验、IDE辅助...
- Python:深度剖析实例方法、类方法和静态方法的区别
-
在Python中,类方法(classmethod)、实例方法(instancemethod)和静态方法(staticmethod)是三种不同类型的函数,它们在使用方式和功能上有一些重要的区别。理...
你 发表评论:
欢迎- 一周热门
- 最近发表
-
- 编写更多 pythonic 代码(十三)——Python类型检查
- [827]ScalersTalk成长会Python小组第11周学习笔记
- 用 Python 画一颗会跳动的爱心:代码里的浪漫仪式感
- Python面向对象编程(OOP)实践教程
- 如何在 Python 中制作 GIF(python做gif)
- Python用内置模块来构建REST服务、RPC服务
- 第七章:Python面向对象编程(python面向对象六大原则)
- 30天学会Python编程:8. Python面向对象编程
- RPython GC 对象分配速度大揭秘(废土种田,分配的对象超给力)
- 30天学会Python编程:2. Python基础语法结构
- 标签列表
-
- python计时 (73)
- python安装路径 (56)
- python类型转换 (93)
- python自定义函数 (53)
- python进度条 (67)
- python吧 (67)
- python字典遍历 (54)
- python的for循环 (65)
- python格式化字符串 (61)
- python静态方法 (57)
- python串口编程 (60)
- python读取文件夹下所有文件 (59)
- java调用python脚本 (56)
- python操作mysql数据库 (66)
- python字典增加键值对 (53)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python人脸识别 (54)
- python多态 (60)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)