春节还怕抢不到票?Github上11k star开源神器助你一臂之力

18,673 阅读8分钟
  • 🤟 博主介绍: CSDN、头条、知乎等平台优质博主,全网粉丝2w+
  • 💬 如果文章对你有帮助、欢迎关注、点赞、收藏(一键三连)和订阅专栏哦

  光阴似箭,不知不觉春节将至,你准备好抢票了吗?每年的抢票大战都让人精神疲惫,手速不够只能求助黄牛。作为一名技术人员,我们也许能有更多、更好的方式去抢到票,今天博主就给大家安利一个Github上免费开源的抢票软件,助力大家春节归途!

  废话不多说,先给大家看抢票结果(演示):

image-20211225201121653

  我们到Github上面输入关键词:12306,你会发现有许多抢票相关的免费开源软件,但是最著名的就是下面这两个。

image-20211225200713761

  有朋友会疑问,为什么不介绍第一个开源项目?它排名靠前不是更好?原因主要如下:

  1、第一个项目master分支最后一次提交的时间是今年的1月份,博主搭建后发现并不能正确运行起来,无法达到抢票的目的,虽然也尝试与该项目的开发者沟通(提了issue),但是并未收到回复,因此只能暂时放弃。

  2、第二个项目master分支最后一次代码提交是今年10月份,它是借鉴了第一个项目的一些思想,但在此基础上提供了更丰富的功能如集群,多账户,多任务、图形化界面等,最重要的是,经过搭建运行,它是真实可以抢到票。

image-20211225202943327

♈ 项目搭建

  对项目进行一些简单的介绍后,下面正式进行项目的搭建(博主尽可能将搭建过程细致,如有遇到新问题也可以私信博主帮忙定位)。

  一、项目地址: github.com/pjialin/py1…

  二、部署要求: 项目需要运行在python3.6以上版本

  三、部署环境和技术: 京东云服务器、Python、Docker(可选)、Docker-Compose(可选)、Redis(可选)

  四、说明:

  1、按照博主教程,整个项目从搭建到运行大概需要半小时左右。

  2、为了避免有些朋友因为Github网络问题没办法直接拉取项目,博主将本次搭建项目的所需的文件都整理了一份

  3、建议抢票程序部署在自己的服务器上,不要在公司电脑或者公司服务器上运行该程序,因为该程序可能会被12306限制ip(一段时间内会自动恢复,不需要恐慌),这样公司的网络可能一段时间内会无法访问到12306(一般是1个小时左右),可能会导致其他人无法购票(不要做损害他人的事情)。

⚫ 安装python环境

  一般情况下,服务器会默认带有python,但是版本都是比较低,要运行这个项目,需要安装高版本的python(3.6以上),所以需要下检查服务器中已经存在的python版本,检查当前系统中的python版本命令:ll /usr/bin/python*。如果已经有python3.6以上的版本,则无需重新安装,直接使用即可,如果没有,则可以使用下面的教程安装。

image-20211225215632012   python安装教程:www.cnblogs.com/simuhunluo/…


♉ 搭建流程


🔴 步骤一:克隆项目到服务器

  命令:git clone github.com/pjialin/py1…

  如果出现:git command not found异常,则先执行命令:yum install -y git,安装git组件。

image-20211225220741245

image-20211225220911757

🟠 步骤二:安装项目所需依赖

  先切换到项目目录下,再执行命令:pip install -r requirements.txt

image-20211225221258640

🟡 步骤三:复制配置文件并修改

  在项目的根目录下执行命令:cp env.py.example env.py。配置相应的信息如抢票人名字、账号密码,始发站等,

  良心推荐: 因为需要配置的东西比较多,使用vi/vim命令配置可能不是很方便,可以使用nodepad++软件连接到服务器,这样我们就可以直接在Window环境下编辑Linux系统的配置文件。

  Notepad++连接linux服务器教程:www.cnblogs.com/licm/p/1266…

image-20211225222616456

🟢 步骤四:配置文件详解

  1、指定账号、密码以及登录方式

  登录方式默认使用扫码登录,直接使用密码登录的话程序会出现异常,这个应该是github登录接口有了变动,程序还没有同步更新。

image-20211225223528804

  2、打码平台配置

image-20211225224228780

  3、接收通知配置

  py12306项目现在支持语音验证码、钉钉、Telegram、微信消息、Bark、以及邮箱等方式消息推送,一般情况下,我们使用邮箱方式即可,其他的配置则保持默认。

image-20211225224706059

  注意,如果要使用邮箱接收通知,需要登录到邮箱开启smtp协议,开启教程如下: 邮箱开启STMP协议教程

  4、分布式集群配置

image-20211225230845731

  5、web界面配置

  一般默认即可,运行程序后我们可以使用浏览器通过ip:8008访问到程序的界面,查看抢票情况(注意需要在防火墙中放行8008端口)

image-20211225225218091

  6、默认登录设置

  如果你不想使用第一步描述的每次都扫描登录,可以手动登录电脑端12306官网,然后看任意一个接口中的cookie值,将他们复制到此处并开启即可(程序会根据这个值自动登录)。

image-20211225232339589

  获取RAIL_EXPIRATION和RAIL_DEVICEID两个字段对应的值,登录到网页版12306,使用F12打开控制台,然后在Network中查看请求任意12306接口携带的cookie值。

image-20211225232914552

  7、配置购票信息

  根据自己实际情况进行配置即可,每个属性都有相应的说明。

image-20211225233002435

🔵 步骤五:启动前测试

  目前程序提供了一些简单的测试,包括用户账号检测,乘客信息检测,车站检测等。

  开始测试:python main.py -t -n

image-20211225234322989

🟣 步骤六:启动程序

  方式1(python): 在py12306根目录下执行命令:python main.py

image-20211225235153145


  方式2(docker): 需要安装docker环境,然后执行下面的命令:

  命令1、下载配置文件到本地:

curl https://raw.githubusercontent.com/pjialin/py12306/master/env.docker.py.example -o env.py

  命令2、使用docker运行程序:

docker run --rm --name py12306 -p 8008:8008 -d -v $(pwd):/config -v py12306:/data pjialin/py12306`

  方式3(docker-compose): docker-compose方式需要依赖docker,因此在启动前需要先启动docker服务(systemctl start docker),然后执行下面的命令:

  命令1、复制执行配置文件:

cp docker-compose.yml.example docker-compose.yml

  命令2、运行程序:

docker-compose up -d

🟤 步骤七:进入web页面,查看抢票情况

  在浏览器输入:服务器ip:8008(需要在防火墙中开放8008端口),抢票成功后会推送消息到你之前配置的邮箱或者其他配置好的通知方式中,大功告成!

image-20211225235247469

image-20211225201121653


♊ 搭建方式推荐

  看完教程,大家应该已经跃跃欲试了,在此处,博主建议将项目搭建在Linux环境下,理由如下:

  1、搭建在Linux中,可以一天24小时运行,无需担心网络或者电脑因为异常情况而导致抢票终止。

  2、运行在Linux上,可以任意时刻、地点查看抢票情况,排查ip限制问题,简单方便。


  有些朋友可能会疑问,现在购买服务器的费用会不会很贵?叫黄牛不是更快?那下面我们来简单对比两者之间的差别。

  1、现在市场上让黄牛帮抢票,一张[票价钱大概100-150之间,有些甚至还根据起始站不同价格上涨,如果还需要帮家人购买的话,来回一趟至少要500~600左右,况且黄牛也不能够保证百分百抢到票,它们的抢票机制本质和我们自己搭建的这个程序一样,只不过内部可能有多套系统。

  2、再来看看2022年后面的假期,除了春节还有清明节、劳动节、端午节、中秋节、国庆节等,如果我们搭建了自己的一套系统,那么后续只需要修改一下抢票时间和始发站,程序就可以自动我们抢票,无需再求助他人。

  3、其实购买一个服务器并不像想象的那么贵,只需要一瓶水的价格就够了,所以相比之下,自己搭建一个程序抢票比叫黄牛抢票的花费要低得多。


♍ 博主支持

  1、搭建技术支持: 博主知道,可能有些小伙伴就算完整跟着教程搭建中间也会遇到一些奇奇怪怪的问题,有些网上并不是很好找到答案,所以博主提供了友情帮助,如果小伙伴在搭建中出现了任何不能解决的问题,可以私信博主协助解决。

  博主最近在参加人气创作者榜单,如果大家觉的文章有帮助,请点击下方链接给作者投票,感谢! rank.juejin.cn/rank/2021/6…

  最后,祝福每一位在外的游子都能够买到回家的车票,和家人团聚!如果文章有帮助,请给作者关注、点赞、收藏、评论,让博主有动力创作更加优质的文章。