过年了,我们每个人都会回家过年,说到过年就不得不提抢票,毕竟过年回家的票都是一票难求,而以前都是靠购买加速包来提速抢票,前几天在公众号看到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