12306抢票

参考来源:https://mp.weixin.qq.com/s/-4nZN9q1OzZ-0tAAYeV5ag

testerSunshine/12306
https://github.com/testerSunshine/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 浏览器打开 12306.cn,点击网站地址左边的 “锁形” 图标:再点击下发的 Cookie

接着会出现一组 Cookie,选择来自 12306.cn 的 Cookie:

看到 RAIL_EXPIRATION 和 RAIL_DEVICEID 两个参数,点击它,将内容里的一串字符复制到配置文件中。

需要注意的是 RAIL_DEVICEID 参数很长,可能显示不全,请完整复制。

至此,准备工作已全部完成,启动前请先筛选 cdn,这点很重要!

python3 run.py c

接着启动服务:

python3 run.py r

接着它会提出登录成功,并列出当日所有相关车次信息,然后开始抢票:

抢票成功后,这个软件不能帮你完成支付,你还需要在手机或者电脑上登录 12306 网站,在 30 分钟内完成支付动作,否则你辛辛苦苦抢的票就没了。

 

猜你喜欢

转载自www.cnblogs.com/zxg-6/p/12313739.html