记录12306项目抢票成功的经历:CentOS7环境

过年了,我们每个人都会回家过年,说到过年就不得不提抢票,毕竟过年回家的票都是一票难求,而以前都是靠购买加速包来提速抢票,前几天在公众号看到github上一个很火的12306抢票项目,而且我自己本职也是一个辣鸡程序猿,所以就想试试能不能把这个项目clone下来,调试并跑起来,于是我抱着试一试的态度,花了一些时间,安装虚拟机,克隆代码到本地,安装环境,调试bug,最终把它跑起来了,并且成功的买到了票,所以就想把这个过程记录下来,虽然项目不是自己写的,而且自己本职也是java大数据方向,python也不是很懂,但是很到项目跑通还是觉得很酷,我想这就是作为程序猿的G点吧,就是项目成功运行并且能够解决某些问题,在此膜拜开发12306项目的大佬,牛X!!!

大佬的12306github项目地址:https://github.com/testerSunshine/12306

膜拜大佬,记得star啊

抢票思路:

0.环境:

  • CentOS7
  • jdk8

1.前提:

  • 安装python3(见我另外一篇文章)
  • 安装git

2.将项目克隆到本地(一定要克隆最新的代码):

cd /opt/module

git clone https://github.com/testerSunshine/12306.git

3.安装项目依赖:

cd /opt/module/12306

pip3 install -i https://mirrors.aliyun.com/pypi/simple -r requirements.txt

4.CentOS安装google(见我另一篇文章)

5.在CentOS7上用Google登录12306官网:

查到RAIL_EXPIRATION ,RAIL_DEVICEID

6.修改配置文件TickerConfig.py

cd /opt/module/12306

vi TickerConfig.py
(1)更改关键参数:

TickerConfig.py

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

# 时间范围 如果所有时间段,则用 00:00-23:59
START_TIME = "00:00"
END_TIME = "23:59"

# 出发日期(list) "2018-01-06", "2018-01-07"
STATION_DATES = [
    "2020-01-18"
]
# 出发城市,比如深圳北,就填深圳就搜得到
FROM_STATION = "广州南"

# 到达城市 比如深圳北,就填深圳就搜得到
TO_STATION = "隆回"

# 座位(list) 多个座位ex:
# "商务座",
# "一等座",
# "二等座",
# "特等座",
# "软卧",
# "硬卧",
# "硬座",
# "无座",
# "动卧",
SET_TYPE = ["二等座"]

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

# 12306登录账号,填入自己的12306账号密码
USER = "xxx"
PWD = "xxx"

# 云打码服务器地址
HOST = "120.24.62.193:80"

#  邮箱配置,如果抢票成功,将通过邮件配置通知给您
#  列举163
#  email: "xxx@163.com"
#  notice_email_list: "123@qq.com"
#  username: "xxxxx"
#  password: "xxxxx
#  host: "smtp.163.com"
#  列举qq  ,qq设置比较复杂,需要在邮箱-->账户-->开启smtp服务,取得授权码==邮箱登录密码
#  email: "xxx@qq.com"
#  notice_email_list: "123@qq.com"
#  username: "qq号"
#  password: "授权码"
#  host: "smtp.qq.com"
EMAIL_CONF = {
    "IS_MAIL": True,
    "email": "xxx@qq.com",
    "notice_email_list": "xxx@qq.com",
    "username": "xxx",
    "password": "xxx",
    "host": "smtp.qq.com",
}

# 如果COOKIE_TYPE=3, 则需配置RAIL_EXPIRATION、RAIL_DEVICEID的值
RAIL_EXPIRATION = ""
RAIL_DEVICEID = ""
(2)注意:
  • USER和PWD填买票的12306账号
  • HOST需要填写可用的云打码服务器
  • 如果需要通过邮箱通知,比如qq邮箱需要开启smtp服务email填写发送者邮箱,notice_email_list填写通知的邮箱,username填写qq号,password填写授权码
  • RAIL_EXPIRATION填写在CentOS中chorme浏览器登录12306后的cookie信息
  • RAIL_DEVICEID填写在CentOS中chorme浏览器登录12306后的cookie信息

6.运行:

cd /opt/module/12306

python3 run.py c
python3 run.py r

7.抢票结果:

抢票成功