说明:前几天看到了个很强大的新项目,py12306
购票助手,支持分布式,多账号,多任务购票,还带了很方便的Web
管理界面,支持各种通知,比如微信,电话语音,邮件等。现在貌似到了抢票的季节了,所以博主就分享一下该工具的手动安装和Docker
安装,有需求的可以用下。
截图
功能
- 多日期查询余票
- 自动打码下单
- 用户状态恢复
- 电话语音通知
- 多账号、多任务、多线程支持
- 单个任务多站点查询
- 分布式运行
Docker
支持- 动态修改配置文件
- 邮件通知
Web
管理页面- 微信消息通知
手动安装
Github地址:https://github.com/pjialin/py12306
环境要求:Python 3.6
以上的版本。
1、安装Python 3.6
这里博主还是和以前一样提供一个脚本安装,要是你会手动安装的话,还是建议手动下。
#CentOS系统
wget https://www.moerats.com/usr/shell/Python3/CentOS_Python3.6.sh && sh CentOS_Python3.6.sh
#Debian系统
wget https://www.moerats.com/usr/shell/Python3/Debian_Python3.6.sh && sh Debian_Python3.6.sh
#由于Ubuntu 16+自带Python3,所以只需要安装pip3就可以了
apt install python3-pip -y
2、安装依赖
git clone https://github.com/pjialin/py12306
cd py12306
pip3 install -r requirements.txt
3、配置程序
#复制配置文件
cp env.py.example env.py
然后编辑该配置文件,填入你的账号等信息,建议使用FTP
工具访问VPS
后编辑该文件。
#部分配置说明,其它配置就参考配置文件里面的说明,挺详细了
1、自动打码
目前支持免费打码,和若快打码
注:免费打码无法保证持续可用,如失效请手动切换到若快平台,需要先到http://www.ruokuai.com注册一个账号后填写到配置中。
2、语音通知
语音验证码使用的是阿里云API市场上的一个服务商,需要到https://market.aliyun.com/products/57126001/cmapi019902.html 购买后将appcode填写到配置中。
4、测试程序
目前提供了一些简单的测试,包括用户账号检测,乘客信息检测,车站检测等
#开始测试
python3 main.py -t
#测试通知消息(语音, 邮件)
python3 main.py -t -n
5、启动程序
测试无误后,就可以开始启动了,使用命令:
#启动命令
python3 main.py
#可用参数列表,用法见4步骤
-t 测试配置信息
-t -n 测试配置信息以及通知消息
-c 指定自定义配置文件位置
然后Web
管理界面自动开启,访问地址为ip:8008
。如果打不开建议检查下防火墙端口,使用命令:
#CentOS 6
iptables -I INPUT -p tcp --dport 8008 -j ACCEPT
service iptables save
service iptables restart
#CentOS 7
firewall-cmd --zone=public --add-port=8008/tcp --permanent
firewall-cmd --reload
像有些服务商可能还需要在后台开启下端口。
Docker安装
1、安装Docker
#CentOS 6
rpm -iUvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
yum update -y
yum -y install docker-io
service docker start
chkconfig docker on
#CentOS 7、Debian、Ubuntu
curl -sSL https://get.docker.com/ | sh
systemctl start docker
systemctl enable docker
2、配置程序
#新建文件夹存放配置文件
mkdir py12306 && cd py12306
wget -O env.py https://raw.githubusercontent.com/pjialin/py12306/master/env.docker.py.example
然后编辑env.py
配置文件,可以参考上面的手动安装步骤。
3、启动容器
#该命令记得在步骤2建立的py12306文件夹运行,data为存放数据的文件夹
docker run -d -p 8008:8008 -v $(pwd):/config -v data:/data pjialin/py12306
然后Web
界面访问地址就是ip:8008
,其它的问题参考上面的吧。
关于防封
目前查询和登录操作是分开的,查询是不依赖用户是否登录,放在腾讯云和阿里云上容易被限制ip
,建议在其它网络环境下运行。
关于分布式集群功能,个人使用的话就没必要用了,有兴趣的可以访问上方的Github
地址查看,最后希望还没票的能早点抢到票回家过年。
怎么设置只抢指定车站的票啊,我看好像同个城市的都会自动抢
我安装在本地可以不可以抢票
理论上可以。
大佬,验证码验证成功 开始登录... 登录失败 错误原因: 网络错误,这个是什么原因
我这边显示web端管理页面已开启,防火墙也开了,也在正常查询车票了,为什么没看见web端管理页面
是浏览器打不开么?ip:8008,你使用curl 127.0.0.1:8008命令有不有返回
为啥我web网页打不开 防火墙关闭着呢
打不开一般是没启动成功或者防火墙问题
请问web界面的账号密码在哪里修改
配置文件env.py,对号入座
为什么有票之后一直在排队,然后就显示出错错误原因-4呢?
这个我没遇到过,你可以去项目提问区找下答案,如果答案没有,可以直接在那里提问,地址:https://github.com/pjialin/py12306/issues。
楼主,为什么会一直出现302 Moved Temporarily ,这是被封了吗??
这个问题可以看看这个https://github.com/pjialin/py12306/issues/121
哥为什么酸酸乳上了锐速后手机不能接通,但PC的可以
这个问题在另一个文章下面已经回答你了。
博主,一直都显示查询余票请求失败 状态码 302,错误原因 Moved Temporarily是什么情况?
这个问题可以看下这个,https://github.com/pjialin/py12306/issues/121