龙空技术网

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

后端开发技术 76

前言:

此时小伙伴们对“python微信公众号抢票”可能比较重视,朋友们都需要分析一些“python微信公众号抢票”的相关知识。那么小编同时在网上汇集了一些有关“python微信公众号抢票””的相关知识,希望我们能喜欢,我们快快来学习一下吧!


最好用的12306


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

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

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

之前我已经介绍过py12306 (

过年抢票?不妨试试程序员的手段

),但是经过我测试,综合对比了windows平台的抢票神器“分流抢票”、py12306、12306,最终得出的结论是12306最好用。


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


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

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


操作步骤


下载项目

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

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

//下载项目git clone  12306//下载模型

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

pip3 install -i  -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,这个就不用配置seleniumCOOKIE_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官,然后点击网站地址左边的“锁形”图标,在选择弹窗中的Cookie选项。

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



启动项目

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

python3 run.py c

2.然后启动服务!

python3 run.py r


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

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



微信推送

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

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


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


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

即可免费获取最新2019BAT

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

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


·END·

后端开发技术

追求技术的深度

标签: #python微信公众号抢票