今日可抢回程火车票,实测两款GitHub开源抢票插件,所有坑我们都帮你踩过了
晓查 郭一璞 发自 凹非寺量子位 报道 | 公众号 QbitAI
今天,已经可以抢过完年回来的火车票了。
如果你对自己手速和市面上的各种加速包都没什么信心的话,不妨试试用程序员的手段抢票?
如果你对自己手速和市面上的各种加速包都没什么信心的话,不妨试试用程序员的手段抢票?
况且,12306官方宣布屏蔽了一大批付费抢票软件,这也意味着你即使给这些软件付了会员费,也依旧抢不到票。
所以只能回到最初的手动抢票?No!No!No!
GitHub上有两个年经项目,每到春运前一段时间,就会定时定点的登顶热榜,助力一代又一代程序员和姿势丰富的非程序员们抢票回家。
那么,这两个项目究竟怎么用?好不好用?
和手动抢票、第三方软件抢票比起来优势是否明显?
安装使用过程中,会不会遇到不可名状的bug?
今天为大家一一横评。
霸占热榜的两个项目
排在GitHub热榜第1的项目名字简单粗暴,就直接叫12306,已经有21300星,来自ID为testerSunshine的作者。
testerSunshine的12306项目可以自动登录用户账户,能卡点抢票,也能捡漏候补,抢到票后会通过邮件进行通知。
排在热榜第2位的,叫做py12306,目前已有8300星,今年初就已经非常火了。
我该选哪个抢票软件
那么整体来看,这两款开源软件,哪个更好用呢?
py12306从去年开始就已经被大家广泛使用,其优点是设置比较简洁,甚至还有图形界面。但是它在验证码登录过程中容易出现下载失败的情况,如果把打码接口从free换成若快平台,还需要充值。
如果你对运行代码一无所知,建议使用py12306.
testerSunshine的12306插件设置比较复杂,自动获取cookie经常失败,因此需要手动填写,这一点比不上py12306;但是它自带了开发者的12306图片识别模型,我们可以在本地完成图片识别码的登录过程。
从实际使用效果来看,我们更推荐testerSunshine的12306,目前它在GitHub上的高人气,也反映的用户们的选择。
测评细节&使用教程
两个抢票插件的关键都在配置文件的修改:testerSunshine/12306的关键在于TickerConfig.py,而py12306的关键在于env.py。
热榜第一:12306
我们先开始测试现在趋势榜第一的12306,先将项目复制到本地:
git clone https://github.com/testerSunshine/12306
cd 12306
再安装依赖项,为了避免多python环境产生问题,建议以root用户方式安装:
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt
下面到了整个过程最关键的环节,配置TickerConfig.py文件,这一步将决定你的成败!非常重要!
看到配置文件里一长串字符,你是不是觉得很头疼呢?我们经过测试,找到了其中的几个关键点:
1、如果你没有抢到票,寄希望于其他人退票后捡漏,令TICKET_TYPE = 2,否则设置为1;
刷票模式:1=刷票 2=候补+刷票
TICKET_TYPE = 1
2、STATION_TRAINS可以填入一串你想要抢的车次,比如北京到合肥方向,你想购买G267、G29次列车,就设置为STATION_TRAINS = [G267, G29],中间用逗号隔开,不填写等于抢当日全部车次;
出发日期(list) "2018-01-06", "2018-01-07"
STATION_DATES = [
"2020-01-30"
]
填入需要购买的车次(list),"G1353"
修改车次填入规则,注:(以前设置的车次逻辑不变),如果车次填入为空,那么就是当日乘车所有车次都纳入筛选返回
不填车次是整个list为空才算,如果不是为空,依然会判断车次的,这种是错误的写法 [""], 正确的写法 []
STATION_TRAINS = ["G267","G29"]
3、STATION_DATES填入你出发的日期,这一步不难;
4、出发站FROM_STATION和到达站TO_STATION不必精确到具体的站,只需填入城市,除非你想从特定站点出发;
出发城市,比如深圳北,就填深圳就搜得到
FROM_STATION = "北京"
到达城市 比如深圳北,就填深圳就搜得到
TO_STATION = "合肥"
5、乘车人填入你12306账号中常用联系人的姓名,比如TICKET_PEOPLES = [张三],如果没有,需要登录12306手动添加;
乘车人(list) 多个乘车人ex:
"张三",
"李四"
TICKET_PEOPLES = ["李雷","韩梅梅"]
6、填入你的12306账户名和密码;
12306登录账号
USER = "Lilei"
PWD = "123456"
7、如果不需要邮箱和Server酱提醒,请把EMAIL_CONF和SERVER_CHAN_CONF的第一项都设置为False;
8、开放抢票时间根据自己车次填入,可以提前几秒,比如下午一点开发抢票,则填入OPEN_TIME = 12:29:57 ;
预售放票时间, 如果是捡漏模式,可以忽略此操作
OPEN_TIME = "12:29:57"
9、cookie设置这一步尤为关键,经过我们实测,COOKIE_TYPE设置为1或2都有些问题,建议设置为3;
1=使用selenium获取devicesID
2=使用网页端/otn/HttpZF/logdevice获取devicesId,这个接口的算法目前可能有点问题,如果登录一直302的请改为配置1
3=自己打开浏览器在headers-Cookies中抓取RAIL_DEVICEID和RAIL_EXPIRATION,这个就不用配置selenium
COOKIE_TYPE = 3
10、上一步设置为3以后,还需要手动设置后面的两个参数RAIL_EXPIRATION和RAIL_DEVICEID。
如果COOKIE_TYPE=3, 则需配置RAIL_EXPIRATION、RAIL_DEVICEID的值
RAIL_EXPIRATION = "1577327361278"
RAIL_DEVICEID = "jFAKbAeAInPnm0pAdqdCNG0ID_dU6SW6L8gaX7zDEewcWVJC5w7nTSw63oMK9sd9c6FcdhyDMsuVUV4aknfXwzHhO8c_Z-nLU4W8F4_gj_HlrOrsrR29U82HR4pnMRqoRFBKuCZ3tKAgQrhuYnR5RWsBCe5g7goV"
RAIL_EXPIRATION = "1577034103293"
RAIL_DEVICEID = "CDno29Erc_Pf3FSXb4dzq-Op64EhWrsi5yUZKVIKR1MAfYo2qFlCeXD8VkexY7_1qg-ClV-fE8j9jgVlPZxRh3wVc2iqLe_5A8sdr62qZx4B22JPF8lFCjpgTKZ5ODW90HJd5tiQsJ1KR9nOqHRxHj1FT5LEIwfw"
如何找到这两个参数?先用Chrome浏览器打开http://12306.cn,点击网站地址左边的锁形图标:再点击下发的Cookie
接着会出现一组Cookie,选择来自http://12306.cn的Cookie:
看到RAIL_EXPIRATION和RAIL_DEVICEID两个参数,点击它,将内容里的一串字符复制到配置文件中。
需要注意的是RAIL_DEVICEID参数很长,可能显示不全,请完整复制。
至此,准备工作已全部完成,启动前请先筛选cdn,这点很重要!
python3 run.py c
接着启动服务:
python3 run.py r
接着它会提出登录成功,并列出当日所有相关车次信息,然后开始抢票:
抢票成功后,这个软件不能帮你完成支付,你还需要在手机或者电脑上登录12306网站,在30分钟内完成支付动作,否则你辛辛苦苦抢的票就没了。
热榜第二:py12306
py12306的安装方式与前者类似:
git clone https://github.com/pjialin/py12306
cd py12306
pip3 install -r requirements.txt
然后修改配置文件,现更改后缀名
cp env.py.example env.py
默认配置文件中需要修改的选项有:
1、你的12306账户和密码;
12306 账号
USER_ACCOUNTS = [
目前已支持仅查询,不下单,屏蔽掉下面的账号即可
{
key: lilei, 如使用多个账号 key 不能重复
user_name: Lilei,
password: 123456
},
2、查询任务QUERY_JOBS中的各项参数,包括出发日期left_dates、出发站left和到达站arrive、乘客姓名members、坐席seats、车次train_numbers;
查询任务
QUERY_JOBS = [
{
job_name: bj -> yl, 任务名称,不填默认会以车站名命名,不可重复
account_key: 0, 将会使用指定账号下单
left_dates: [ 出发日期 :Array
"2020-01-22",
],
stations: { 车站 支持多个车站同时查询 :Dict or :List
left: 北京,
arrive: 合肥,
},
members: [ 乘客姓名,会根据当前账号自动识别乘客类型 购买儿童票 设置两个相同的姓名即可,程序会自动识别 如 [张三, 张三]
"李雷",
"韩梅梅"在姓名前加*表示学生购买成人票
7, 支持通过序号确定唯一乘客,序号查看可通过 python main.py -t 登录成功之后在 runtime/user/ 下找到对应的 用户名_passengers.json 文件,找到对应的 code 填入
],
allow_less_member: 0, 是否允许余票不足时提交部分乘客
seats: [ 筛选座位 有先后顺序 :Array
可用值: 特等座, 商务座, 一等座, 二等座, 软卧, 硬卧, 动卧, 软座, 硬座, 无座
二等座
],
train_numbers: [ 筛选车次 可以为空,为空则所有车次都可以提交 如 [] 注意大小写需要保持一致
"G267",
],
except_train_numbers: [ 筛选车次,排除车次 train_numbers 和 except_train_numbers 不可同时存在
],
period: { 筛选时间
from: 00:00,
to: 24:00
}
},
接着运行程序:
python3 main.py
如果你不善于使用命令行模式,还可以使用图形界面观察抢票任务。
将配置中的WEB_ENABLE打开,启动程序后访问当前主机地址+端口号 (默认 8008) 即可,然后在浏览器中输入http://127.0.0.1:8008。
现在,就可以让程序帮你抢票啦。
不过,抢票软件并非万能,巧coder难为无票之炊,除了技术,你可能还需要一点点运气。
无论采取哪种交通方式,祝大家都能开开心心过年回家,平平安安回来搬砖~
2020已经开始,量子位也祝大家新年快乐^_^
传送门
testerSunshine/12306https://github.com/testerSunshine/12306
py12306https://github.com/pjialin/py12306
— 完 —诚挚招聘量子位正在招募编辑/,工作地点在北京中关村。期待有才气、有热情的同学加入我们!相关细节,请在量子位公众号(QbitAI)对话界面,回复招聘两个字。量子位 QbitAI · 头条号签约作者վᴗ ի 追踪AI技术和产品新动态
十一黄金周期间,铁道部门12306订票网站流量巨大,网络拥堵,登录缓慢,且车票一经放出短短几分钟就被一抢而空。虽然12306显示没有余票。但一些抢票软件只要多花钱还可以抢到票,它们是怎么做到的呢?
一、抢票软件的原理是什么?
抢票软件主要分为两种,第一种是安装在浏览器上的插件,用于在12306网站上抢票。
常规情况下,使用12306网站订票时,如果刷新页面就需要再次填写个人信息,这就耽误了不少时间。这一耽误,可能需要秒杀的热门火车票就已经落入他人之手,而查看剩余车票时也需要在计算机前不断地点击刷新页面。
而抢票软件能够记录个人信息,自动重复登录,直到登录成功,代替缓慢的人工操作。并通过对12306网站的不断刷新和监控,一旦有人退票,抢票软件能立即发现。此外,部分软件从查询到下单可以直接勾选,不需再填写任何信息。有了这些便利功能,抢票软件确实有资格声称抢票成功率将提高10倍。
目前,Chrome、火狐、360 安全浏览器、搜狗浏览器和猎豹浏览器等都可以此类抢票插件。在淘宝上,各类抢票软件也热销。
第二种抢票软件用于电话购票渠道抢票。
电话订票最容易遇到的问题就是占线打不进去,为了打通订票热线只能不停的重拨直到接通为止。这一类抢票软件可以实现多次自动重拨并提供接通提醒,以安卓系统上的应用为主。
二、抢票软件有效么?
有不少网友在微博上晒出了利用抢票软件订票成功的记录,技术人员也认为利用软件购票,效率大大提高。中国铁路研究院电子所副所长朱建生承认此类抢票软件确实有效。甚至1月18日有消息传出,铁道部约谈了金山网络,要求其立刻停止猎豹春运抢票版。稍后,工信部也正式下达通知,要求金山、360、傲游、搜狗等浏览器停止使用抢票插件。可见抢票软件确实有效。
当然,也有网友表示使用了抢票软件也未能如愿,这种情况可能因为在软件开启时车票已经售完,使用抢票软件也无法购买到车票。
抢票软件是如何抢到票的?
ChatGPT的15个使用技巧!
这时间过的真快,一晃眼,Chatgpt出来已经大半年了,2024年还差2月就要来了,很多人都知道Chatgpt,但真正知道怎么用的人很少,下面阿成教你10个使用