当前位置: 首页 > 科技观察

GitHub排名第一!免费最强“抢票神器”在手,程序员抢票再不用跪求加速包

时间:2023-03-17 23:48:13 科技观察

在GitHub上排名第一!最强免费“抢票神器”在手,程序员抢票不用再苦苦哀求春运向来以抢票难着称,很多人开始使用各种软件和渠道,希望完成购票计划。按照程序员“懒惰”的工作作风,他们肯定是不愿意自己动手??的。直接写程序岂不是省时省力?今天分享一下GitHub上20000星的“抢票神器”。展望未来,展望未来,春节将至。然而,每年这个时候,最难的莫过于一张回家的火车票。据悉,今年春运期间,全国铁路发送旅客量同比增长8.0%。4.4亿人次2020铁路春运从1月10日开始,到2月18日结束,共40天,节前15天,节后25天。今年,火车票将于12月12日和1月10日开始正式发售。再难,还是要回家,还是要抢票,所以本周GitHub上用python抢票的项目重回热搜榜。这位抢票小助手诞生于2017年,作者是温咸平/温先森(testerSunshine)。目前,该项目拥有近20,000颗星。可想而知,程序员回家的愿望是多么迫切!史上超强抢票助手,12306更新后。从项目更新日志可以看出,本项目第一次更新是在2017.5.13,此后一共进行了32次更新,其中大部分是作者本人,也有部分开发者提供支持。本项目基本是随着12306网站的功能更新而更新的。比如去年春运期间新增的待机功能。门票售罄时,提前支付门票,他人退票后自动补票。该项目今年还添加了此功能。目前这款抢票助手基本支持12306的所有主要功能,包括邮件通知、智能待机等,这款抢票助手堪称史上最强抢票助手。作者在项目背后提供了交流群,9个群中有7个群已满。可想而知这是何等的强大。每一句代码,都只是为了抢一张回家的车票。作者在这个项目上花费了很多心血。首先,我们来看看作者的思路。这个想法并不复杂,而且非常紧凑。首先需要下载一个自动识别12306验证码的机器学习模型,模型需要放在项目根目录下。1、模型下载链接:https://pan.baidu.com/s/1rS155VjweWVWIJogakechA密码:bmlm2。git仓库下载:https://github.com/testerSunshine/12306model.git(1)cd12306/(2)gitclonehttps://github.com/testerSunshine/12306model.git模型的安装需要一些依赖,如如下:满足依赖后,可以安装:root用户(避免多python环境带来的问题):pip3install-ihttps://pypi。tuna.tsinghua.edu.cn/simple-rrequirements.txt非root用户(避免安装运行时使用不同环境):pip3install-ihttps://pypi.tuna.tsinghua.edu.cn/simple-rrequirements。txtMany如果Windows用户无法安装tensorflow,可以适当降低或提高版本。注意,如果过程中报错缺少上面列表中的依赖,使用pip3安装相应的依赖包即可。然后就可以启动项目了。第一步:修改配置文件#测试邮箱和服酱是否可用,服酱测试的前提是服酱开关打开#可以配置服酱提醒(推荐)【配置教程】(https://www.jianshu.com/p/8d10b5b9c4e3)#使用python3还是python完全看安装时配置的环境变量是不是python3,下面启动默认环境变量是python3python3run.pyt配置文件说明(看说明小心!):#-*-coding=utf-8-*-#关于软件的配置说明,一定要看!!!#ps:如果是候车票,需要通过身份证一致性验证并开通“铁道快车”会员的用户可以提交候车申请,请在铁路12306app上按照操作说明完成验证。#关于是否等待后可以继续捡漏的问题这里说明一下:软件是全自动的,添加了等待。若软件等待成功,将停止抢票并发送邮件通知,但不影响您继续取走失物。如果支付成功,也就是说捡漏+waitinglist可以最大化抢票成功率#刷票模式:1=刷票2=standby+刷票TICKET_TYPE=1#出发日期(list)"2018-01-06","2018-01-07"STATION_DATES=["2020-01-17"]#填写要购买的车次(列表),"G1353"#修改车次填写规则,注意:(之前设置的车次逻辑不变),如果车次号填空,那么当天的所有车次都会被纳入筛选返回#不填写车次号代表整个列表为空,如果不为空,还是会判断车次,这个是错误的写法[""],正确的写法是[]STATION_TRAINS=["G1120"]#出发城市,比如深圳北,填Shenzhen会得到FROM_STATION="Guangzhou"#到达城市如深圳北,填Shenzhen会得到TO_STATION="Wuhan"#seat(list)多个座位ex:#"商务座",#"一等座",#"二等座",#"特等座",#"软卧",#"硬卧",#"HardSeat",#"NoSeat",#"MovingSleeper",SET_TYPE=["SecondClassSeat"]#剩余客票少于该旅客时,如果选择先提交,则删除联系人人和剩余票数一致提交#boolIS_MORE_TICKET=True#Passengers(list)多名乘客ex:#"张三",#"李四"TICKET_PEOPLES=[""]#12306登录账号USER=""PWD=""#默认加入小黑屋的时间是5分钟,这个功能是为了防止僵尸票下单不成功而漏掉正常票。TICKET_BLACK_LIST_TIME=5#自动码IS_AUTO_CODE=True#设置2本地自动码,需要配置tensorflow和keras库,3是cloudcoding,由于cloudcoding服务器资源有限(2h4Ccpu服务器),请不要恶意请求,否则只能关闭服务器#ps:请不要依赖cloud一直有服务器资源,这里提供所有服务器同学们对AUTO_CODE_表示感谢TYPE=3#这里设置云打码服务器地址。如果你有自建服务器,可以自己改。HOST="120.77.154.140:8000"REQ_URL="/verify/base64/"HTTP_TYPE="http"#HOST="12306.yinaoxiong.cn"#备服务器差#REQ_URL="/verify/base64/"#HTTP_TYPE="https"#邮箱配置,如果抢票成功,会通过邮箱配置通知#List163#email:"xxx@163.com"#notice_email_list:"123@qq.com"#username:"xxxxx"#password:"xxxxx#host:"smtp.163.com"#Listqq,qq设置比较复杂,需要在邮箱-->账户-->,获取授权码中开通smtp服务==邮箱登录密码#email:"xxx@qq.com"#notice_email_list:"123@qq.com"#username:"xxxxx"#??password:"授权码"#host:"smtp.qq.com"EMAIL_CONF={"IS_MAIL":True,"email":"","notice_email_list":"","username":"","password":"","host":"smtp.qq.com",}#是否开启服务器酱微信提醒,之前使用需要到http://sc.ftqq.com/3.version扫码绑定获取SECRET关注公众号谁会收到抢票结果SERVER_CHAN_CONF={"is_server_chan":false,"secret":""}#是否开启cdn查询,查票更快1开启,2关闭IS_CDN=1#下单界面分为两种,1模拟网页自动取票up下单(不稳定),2模拟车次后面的购票按钮Order(稳定如老狗)ORDER_TYPE=2#Ordermode1预售,整点刷新,刷新间隔0.1-0.5S,然后查看时间,比如12点预售,脚本会在12.00查看tickett、刷新顺序#2是捡漏,捡漏的刷新间隔是0.5-3秒,时间间隔长,不容易被堵确保代理ip可用,并且在测试中全面测试后,再启用此功能,否则可能会耽误您宝贵的购票时间#使用方法:#1、填写代理ip在agency/proxy_list列表下#2、TestUnitTest/TestAll/testProxy测试是否可以使用代理#3、开启代理ipIS_PROXY=0#预售票放出时间,如果是missing模式,可以忽略此操作OPEN_TIME="12:59:50"#1=使用selenium获取devicesID#2=使用网页/otn/HttpZF/logdevice获取devicesId,目前这个接口的算法可能有点问题,如果登录一直是302请改成配置1#3=自己打开浏览器在headers-抓取Cookies中的RAIL_DEVICEID和RAIL_EXPIRATION,这个不需要配置seleniumCOOKIE_TYPE=3#如果COOKIE_TYPE=1,需要配置chromedriver路径,下载地址http://chromedriver.storage.googleapis.com/index.html#chromedriver配置版本只需要匹配chrome大版本可以匹配CHROME_PATH="/usr/src/app/chromedriver"#为docker37准备的环境变量,windows环境可以忽略这个参数CHROME_CHROME_PATH="/opt/google/chrome/google-chrome"#IfCOOKIE_TYPE=3,则需配置RAIL_EXPIRATION、RAIL_DEVICEID的值RAIL_EXPIRATION="1577033439142"RAIL_DEVICEID="PuV16sVaV-CTGsFZUuL8JLAk4OhuT1wgUYC_W3L2JZfWx8Ygx8LOPkko3PSOrK5_xSKhXjgyTMS8dBmj1RZHL2CKBTmVs6UG_yptlB4NJbGHldltrLMTUEgoDpSkpX2vzpGXgMQsTRzgOXfuQkAWwS4GjCxSmV3C;BIGipServerpassport=820510986.50215.0000;route=9036359bb8a8a461c164a04f8f50b252"#1=>为一直随机ua,2->只启动的时候随机OnceuaRANDOM_AGENT=2PASSENGER_TICKER_STR={'FirstClassSeat':'M','PrivateClassSeat':'P','二等座':'O','商务舱':9,'硬座':1,'无座':1,'软座':2,'软卧':4,'硬卧铺':3,}#保护12306官网请求频率,设置随机请求时间,原则是5分钟内不超过80次#最大间隔请求时间MAX_TIME=3#最小间隔请求时间MIN_TIME=1#软件版本RE_VERSION="1.2.003》第二步:启动前先屏蔽cdnpython3run.pyc第三步:启动服务python3run.pyr抢票成功后会出现如下结果!项目地址:https://github.com/testerSunshine/12306程序员抢火车票是怎么做的!程序员写代码抢票最早可以追溯到2010年初,12306网站刚出现的时候。12306网购票刚刚出现。一年后,GitHub上的程序员写了买票的脚本,但当时仅限于查询剩余票数。随后,越来越多的程序员开始“在家编程”,最大的新闻莫过于GitHub差点被打倒。2012年,一个叫iFish的大佬开发的插件被安装在了很多浏览器的春节版中,连12306官方也引用了其中的一个资源。该插件引发了著名的“12306预约助手拖累GitHub”事件。简单来说,这个“预订助手”使用的文件不是普通的静态文件(比如gist),而是一个repo的原始数据。这意味着每次有人请求这个文件时,github都必须访问这个repo来找到请求的数据。而且,如果数据请求失败,该命令将每五秒请求一次,直到成功。因此,在春节前十几天的抢票高峰期,巨大的流量导致Github被DDOS攻击,不堪重负。事后,作者本人也表示:慌了。后来随着各种买票app的出现,很多人不会为了抢票而选择写一堆代码,但程序员心中的执念永远也不会熄灭。《Programmingforhome》,再难也是值得的!最后,祝所有的朋友:今年春运抢票成功,顺利回家!