Rat's

py12306:一个带Web管理界面的12306购票助手,支持多账号/多线程/微信电话通知
说明:前几天看到了个很强大的新项目,py12306购票助手,支持分布式,多账号,多任务购票,还带了很方便的Web管...
扫描右侧二维码阅读全文
15
2019/01

py12306:一个带Web管理界面的12306购票助手,支持多账号/多线程/微信电话通知

说明:前几天看到了个很强大的新项目,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地址查看,最后希望还没票的能早点抢到票回家过年。

Vultr注册就送$50,可开日本/新加坡等机房,【点击注册】。
最后修改:2019 年 01 月 15 日 05 : 14 PM

发表评论

55 条评论

  1. cc

    为啥我web网页打不开 防火墙关闭着呢

    1. Rat's
      @cc

      打不开一般是没启动成功或者防火墙问题

  2. Happy峰

    请问web界面的账号密码在哪里修改

    1. Rat's
      @Happy峰

      配置文件env.py,对号入座

  3. 诺许

    为什么有票之后一直在排队,然后就显示出错错误原因-4呢?

    1. Rat's
      @诺许

      这个我没遇到过,你可以去项目提问区找下答案,如果答案没有,可以直接在那里提问,地址:https://github.com/pjialin/py12306/issues。

  4. 诺许

    楼主,为什么会一直出现302 Moved Temporarily ,这是被封了吗??

    1. Rat's
      @诺许

      这个问题可以看看这个https://github.com/pjialin/py12306/issues/121

  5. Max

    哥为什么酸酸乳上了锐速后手机不能接通,但PC的可以

    1. Rat's
      @Max

      这个问题在另一个文章下面已经回答你了。

  6. hiroetsu

    博主,一直都显示查询余票请求失败 状态码 302,错误原因 Moved Temporarily是什么情况?

    1. Rat's
      @hiroetsu

      这个问题可以看下这个,https://github.com/pjialin/py12306/issues/121

  7. pfttm

    1、手动安装,有教程不?或者您这边参考的是哪边?麻烦提供个地址
    2、"建议使用FTP工具访问VPS后编辑该文件" 这个有什么建议?要搭建ftp?有哪个推荐?还是有其他的方案
    请赐教,谢谢

    1. Rat's
      @pfttm

      可以查看下项目地址:https://github.com/pjialin/py12306,ftp工具推荐WinSCP

  8. nop

    怎么停止运行

    1. Rat's
      @nop

      如果是第一种的话。Ctrl+C就可以了

      1. nop
        @Rat's

        第二种呢?第一种安装配置有点问题。

        1. Rat's
          @nop

          停掉容器就行了docker stop

  9. 咕咕咕

    请问一下大佬,这个查询任务是只能在配置文件里改没法在web页面直接写吗?买票是查询到有余票自动购买吗?

    1. Rat's
      @咕咕咕

      好像都是在配置文件改的,是的,有票就订购

  10. 9527

    大神,怎么开启多线程??

    1. Rat's
      @9527

      修改配置文件的QUERY_JOB_THREAD_ENABLED参数。

      1. 9527
        @Rat's

        参数QUERY_JOB_THREAD_ENABLED=5,意思是5个线程?

        1. Rat's
          @9527

          这个貌似只能修改0或1,0是关闭,1是开启多线程。

  11. keymen

    大佬,我一直无法成功编辑好env.py.example env.py,请问能不能把这个编辑讲明白详细些?

    1. 小醉寒i
      @keymen

      cd py12306
      vi env.py.example

    2. Rat's
      @keymen

      配置文件里面有中文说明,所以我只列举了重点,比如你有哪里不明白?

  12. 大神彪

    请问大神怎么保持抢票持续后台进行。执行 nohup python3 main.py 命令后提示 nohup: ignoring input and appending output to ‘nohup.out’。断开 shell 链接后不能访问 web 管理页面,抢票也停止了。这一情况怎么解决,望大神赐教

    1. Rat's
      @大神彪

      方法是很多的,可以用sceen,也可以直接用python3 main.py 2>&1 &试试,最好的办法还是用Systemctl守护进程好些,你先用我给你的命令,还不行可以加下我,联系方式文章下面有。

      1. 大神彪
        @Rat's

        我是用 nohup python3 main.py & 这个命令解决的

        1. Rat's
          @大神彪

          都行。

  13. mjj

    大佬,终端的字体是什么,有点好看

    1. Rat's
      @mjj

      这个其实我也不知道

  14. 李子博客

    这个厉害了

  15. 苏兴

    您好,提示获取用户列表失败,网络错误怎么办

    1. Rat's
      @苏兴

      这个是正常的,程序会自动重试

  16. 王瑞荣

    尝试买票,然后日志里显示请打开配置项里的out-put-log-to-file-enabled,怎么办呀

    1. Rat's
      @王瑞荣

      这个直接去配置文件开启就行了

  17. 飒露紫燕子

    看不懂怎么办

    1. Rat's
      @飒露紫燕子

      不懂没事,照着来就行了

  18. CPUFAN

    感觉这个东西在bgp网络上面才有用

    1. Rat's
      @CPUFAN

      网络好点就行了。

  19. siasong

    大佬web界面密码是多少啊?

    1. Rat's
      @siasong

      配置文件都有,默认admin,password,可自行修改

  20. zturns

    不抢票,本地能不能安哟

    1. Rat's
      @zturns

      本地可以。

  21. Keven

    大佬 digitalocean50券 啥时候再发次福利啊~

    1. Rat's
      @Keven

      明天,0点直接去老帖回就有了。

      1. Keven
        @Rat's

        好的 老哥

  22. palesaint

    这个厉害了,谢谢大佬

  23. decker

    牛逼,试一试,感谢大佬分享

  24. Linstrong

    嘿嘿,回家的票已经抢到了

    1. Rat's
      @Linstrong

      恭喜。

  25. 哈哈骑士

    牛逼,给大佬上茶。。。

    1. Rat's
      @哈哈骑士

      别个才牛皮。