百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

马上就过年了!你买到回家的票了吗?Python给你24小时抢票!

off999 2024-09-27 13:47 29 浏览 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官网购票

此项目仅允许学习交流使用,切勿作为商业用途

最后,希望大家再看到有人在朋友圈或微信群里发帮抢火车票的链接,直接把这篇文章扔过去,以帮助“迷途”中的孩纸,不再让那些商家耽误回家的行程

相关推荐

Linux 网络协议栈_linux网络协议栈

前言;更多学习资料(包含视频、技术学习路线图谱、文档等)后台私信《资料》免费领取技术点包含了C/C++,Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,Z...

揭秘 BPF map 前生今世_bpfdm

1.前言众所周知,map可用于内核BPF程序和用户应用程序之间实现双向的数据交换,为BPF技术中的重要基础数据结构。在BPF程序中可以通过声明structbpf_map_def...

教你简单 提取fmpeg 视频,音频,字幕 方法

ffmpeg提取视频,音频,字幕方法(HowtoExtractVideo,Audio,SubtitlefromOriginalVideo?)1.提取视频(ExtractVi...

Linux内核原理到代码详解《内核视频教程》

Linux内核原理-进程入门进程进程不仅仅是一段可执行程序的代码,通常进程还包括其他资源,比如打开的文件,挂起的信号,内核内部的数据结构,处理器状态,内存地址空间,或多个执行线程,存放全局变量的数据段...

Linux C Socket UDP编程详解及实例分享

1、UDP网络编程主要流程UDP协议的程序设计框架,客户端和服务器之间的差别在于服务器必须使用bind()函数来绑定侦听的本地UDP端口,而客户端则可以不进行绑定,直接发送到服务器地址的某个端口地址。...

libevent源码分析之bufferevent使用详解

libevent的bufferevent在event的基础上自己维护了一个buffer,这样的话,就不需要再自己管理一个buffer了。先看看structbufferevent这个结构体struct...

一次解决Linux内核内存泄漏实战全过程

什么是内存泄漏:程序向系统申请内存,使用完不需要之后,不释放内存还给系统回收,造成申请的内存被浪费.发现系统中内存使用量随着时间的流逝,消耗的越来越多,例如下图所示:接下来的排查思路是:1.监控系统中...

彻底搞清楚内存泄漏的原因,如何避免内存泄漏,如何定位内存泄漏

作为C/C++开发人员,内存泄漏是最容易遇到的问题之一,这是由C/C++语言的特性引起的。C/C++语言与其他语言不同,需要开发者去申请和释放内存,即需要开发者去管理内存,如果内存使用不当,就容易造成...

linux网络编程常见API详解_linux网络编程视频教程

Linux网络编程API函数初步剖析今天我们来分析一下前几篇博文中提到的网络编程中几个核心的API,探究一下当我们调用每个API时,内核中具体做了哪些准备和初始化工作。1、socket(family...

Linux下C++访问web—使用libcurl库调用http接口发送解析json数据

一、背景这两天由于一些原因研究了研究如何在客户端C++代码中调用web服务端接口,需要访问url,并传入json数据,拿到返回值,并解析。 现在的情形是远程服务端的接口参数和返回类型都是json的字符...

平衡感知调节:“系统如人” 视角下的架构设计与业务稳定之道

在今天这个到处都是数字化的时代,系统可不是一堆冷冰冰的代码。它就像一个活生生的“数字人”,没了它,业务根本转不起来。总说“技术要为业务服务”,但实际操作起来问题不少:系统怎么才能快速响应业务需求?...

谈谈分布式文件系统下的本地缓存_什么是分布式文件存储

在分布式文件系统中,为了提高系统的性能,常常会引入不同类型的缓存存储系统(算法优化所带来的的效果可能远远不如缓存带来的优化效果)。在软件中缓存存储系统一般可分为了两类:一、分布式缓存,例如:Memca...

进程间通信之信号量semaphore--linux内核剖析

什么是信号量信号量的使用主要是用来保护共享资源,使得资源在一个时刻只有一个进程(线程)所拥有。信号量的值为正的时候,说明它空闲。所测试的线程可以锁定而使用它。若为0,说明它被占用,测试的线程要进入睡眠...

Qt编写推流程序/支持webrtc265/从此不用再转码/打开新世界的大门

一、前言在推流领域,尤其是监控行业,现在主流设备基本上都是265格式的视频流,想要在网页上直接显示监控流,之前的方案是,要么转成hls,要么魔改支持265格式的flv,要么265转成264,如果要追求...

30 分钟搞定 SpringBoot 视频推拉流!实战避坑指南

30分钟搞定SpringBoot视频推拉流!实战避坑指南在音视频开发领域,SpringBoot凭借其快速开发特性,成为很多开发者实现视频推拉流功能的首选框架。但实际开发中,从环境搭建到流处理优...

取消回复欢迎 发表评论: