还没买到票?亲测程序员抢票黑科技

最好用的12306

        春节临近,各位同学们都抢到回家的火车票了吗? 

        市面上的抢票软件琳琅满目,但是好像效果一般,加速包就要花费50以上,还很大概率抢不到。 不妨试试python大法,用程序员的思路来抢票! 

        下面,我就要介绍这两款炙手可热的GitHub开源项目。排在GitHub热榜第一的项目是 12306,他以自动登录用户账户,能卡点抢票,也能捡漏候补,抢到票后会通过邮件进行通知。排在热榜第2位的,叫做 py12306,特点是可以通过图形界面操作,配置更简单,容易上手使用。

        之前我已经介绍过py12306 (过年抢票?不妨试试程序员的手段),但是经过我测试,综合对比了windows平台的抢票神器“分流抢票”、py12306、12306,最终得出的结论是12306最好用。

        (后台回复 “ 12306 ” 下载该项目)

        

        12306可以本地保存开发者的12306图片识别模型,我们可以在本地完成图片识别码的登录过程,并且不像分流抢票一样在下单的时候,需要手动滑动模块。当然缺点也是有的,设置较复杂新手望而却步,自动获取cookie经常失败,因此需要手动填写。

        但是没关系,跟着我下面的步骤一定能成功。

操作步骤

下载项目

        首先需要从Github下载项目并且下载图片识别模型,模型需要保存在项目根目录中。

        (如果Github下载太慢可以后台回复 “ 12306 ” 下载项目和模型)

//下载项目
git clone https://github.com/testerSunshine/12306
cd 12306
//下载模型
https://github.com/testerSunshine/12306model.git

        然后安装依赖项,建议以root用户安装。

pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt

配置文件

        配置文件 tickerconfig.py 是最关键的一步,购票信息用户名密码都在这个文件里。由于配置项较多,这里只列出关键细节即可满足需求。

        1.首先我们需要设置刷票模式TICKET_TYPE,1=刷票 2=候补+刷票,这里推荐设置为2,如果已有候补订单则为1。

# 刷票模式:1=刷票 2=候补+刷票
TICKET_TYPE = 1

        2.然后需要设置购票日期STATION_DATES,如果多个日期需要逗号分隔。

# 出发日期(list) "2018-01-06", "2018-01-07"
STATION_DATES = [
    "2020-01-21",
    "2020-01-22",
    "2020-01-23"
]

        3.设置购买的车次STATION_TRAINS。

# 填入需要购买的车次(list),"G1353"
# 修改车次填入规则,注:(以前设置的车次逻辑不变),如果车次填入为空,那么就是当日乘车所有车次都纳入筛选返回
# 不填车次是整个list为空才算,如果不是为空,依然会判断车次的,这种是错误的写法 [""], 正确的写法 []
STATION_TRAINS = [‘Z96’]

        4.设置出发城市FROM_STATION和到达城市TO_STATION。

# 出发城市,比如深圳北,就填深圳就搜得到
FROM_STATION = "上海"
# 到达城市 比如深圳北,就填深圳就搜得到
TO_STATION = "太原"

        5.设置要购买的坐席种类SET_TYPE,可以设置多种类型逗号分隔。

SET_TYPE = ["二等座","硬卧","软卧"]

        6.设置乘车人TICKET_PEOPLES。

# 乘车人(list) 多个乘车人ex:
# "张三",
# "李四"
TICKET_PEOPLES = ["王五"]

        7.设置12306的账户名USER和密码PWD。

# 12306登录账号
USER = "xxx"
PWD = "password"

       8.开放抢票时间根据车次填入,可以提前几秒,比如下午一点开始抢票,则填入OPEN_TIME = “12:59:55” 。捡漏模式忽略。

# 预售放票时间, 如果是捡漏模式,可以忽略此操作
OPEN_TIME = "12:29:57"

        9.设置cookie,这是最关键的一步,建议设置为3。

# 1=使用selenium获取devicesID
# 2=使用网页端/otn/HttpZF/logdevice获取devicesId,这个接口的算法目前可能有点问题,如果登录一直302的请改为配置1
# 3=自己打开浏览器在headers-Cookies中抓取RAIL_DEVICEID和RAIL_EXPIRATION,这个就不用配置selenium
COOKIE_TYPE = 3

         接着需要手动设置后面的两个参数RAIL_EXPIRATION和RAIL_DEVICEID,建议从Chrome浏览器操作。

# 如果COOKIE_TYPE=3, 则需配置RAIL_EXPIRATION、RAIL_DEVICEID的值
RAIL_EXPIRATION = "1577034103293"
RAIL_DEVICEID = "CDno29Erc_Pf3FSXb4dzq-Op64EhWrsi5yUZKVIKR1MAfYo2qFlCeXD8VkexY7_1qg-ClV-fE8j9jgVlPZxRh3wVc2iqLe_5A8sdr62qZx4B22JPF8lFCjpgTKZ5ODW90HJd5tiQsJ1KR9nOqHRxHj1FT5LEIwfw"

        关于这两个参数的获得,需要先登录12306官https://www.12306.cn/index/,然后点击网站地址左边的“锁形”图标,在选择弹窗中的Cookie选项。

        看到RAIL_EXPIRATION和RAIL_DEVICEID两个参数,点击它,将内容里的一串字符复制到配置文件中。将这两个参数复制分别设置在配置文件中,基本设置大功告成!

启动项目

        1.启动前执行命令先筛选cdn,这直接影响抢票。

python3 run.py c

        2.然后启动服务!

python3 run.py r

        打印出登录成功和车次信息后,开始抢票。需要注意的是,抢票成功后需要自己登陆12306支付,不能自动支付,30分钟有效期。

        下面是我的购票成功信息。

微信推送

        如果担心抢到票但是没有及时发现,可以登陆Server酱设置微信推送提醒http://sc.ftqq.com/3.version,按照页面提示操作即可。

        关注公众号,完成绑定之后,查找到自己的SCKEY,并且复制设置在配置文件中,配置完成,购票成功后便会及时收到微信推送了!

        最后祝各位 Coder 都可以抢到想要的车票!

        (后台回复 “ 12306 ” 下载该项目)

◆ ◆ ◆  ◆ ◆

关注并后台回复 “面试” 或者  “视频”,

即可免费获取最新2019BAT

大厂面试题和大数据微服务视频

您的分享和支持是我更新的动力

·END·

后端开发技术

追求技术的深度

微信号:后端开发技术

觉得不错“在看”支持一下~ 

↓↓↓

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

后端开发技术

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值