原标题:GitHub标星超12K,抢票神器大更新,支持候补!

掐指一算,距离国庆黄金周还有半个月的时间!你出行的车票都抢到了吗?

图片来自 pexels

根据国务院办公厅发布的关于 2019 年部分节假日安排的通知,国庆放假安排是:10 月 1 日至 7 日。

想要十一出行的小伙伴们,想必前几天刚经历了一波抢票大战。顺便把一个 Python 抢票工具,送到了 GitHub 趋势榜第一。

这个项目名很干脆,就是“12306”,目前标星超过 12K。项目发起者是一名叫文贤平的程序员。

这很可能是全 GitHub 最德高望重的购票小助手了,现在功能一直在更新,且已支持 Python 3.6 以上版本。

一些后起之秀也是在它的基础上开发出来,然后广受欢迎:

标星超 5K 的“py12306”便是其中之一,它支持分布式抢票。十一后面还有春运,如果需要抢票,可以试一下这些 Python 工具。已经有许多人亲测成功抢到票了。

两个 GitHub 上高星抢票项目

12306 购票小助手

文贤平/文先森 (testerSunshine) 的抢票小助手“12306”,虽然诞生在 2018 年初,但最近一次提交代码,是在今年 9 月 5 日,现在还十分新鲜。

这只得力的小助手,思路清晰又紧凑:

从查询余票开始,到付款完成,最后获取订单号。一气呵成,不怕人类手速太慢。

有了它,文先森去年就丝滑地抢到了回家的票。而后,便努力帮助抢票助手继续进化。

到目前为止,文先森与一众贡献者,已经在项目里提交了 361 次代码,实现的功能有这些:

从更新日志看来,最近加入的重要功能是候补订单。所谓候补,就是在票卖完的情况下预先付款,等其他人退票之后自动补上,是我国 2019 年春运才出现的新机制。

但文先森也还不清楚,这项功能在抢票助手里的需求是怎样的,所以正在密集地尝试和调整:

在实现新功能的同时,已有的功能也在不断优化。这个抢票工具越来越强大,已具备自动打码、自动登陆、准点预售和捡漏、智能候补、邮件通知、 pushbear 通知等功能。GitHub 标星数量比起年初的 4K,也已经翻了两番。

随着项目的成长,文先森在 8 月 31 日宣布了一件重要的事:放弃支持 Python 2.7,只支持 3.6 以上版本。

下面让我们具体看看这个项目:

①依赖库

验证码目前可以本地识别,需要下载模型,放于项目根目录,全部代码来源于此项目(https://github.com/zhaipro/easy12306),表示感谢:

PS:

1. 模型下载链接:https: //pan.baidu.com/ s/1rS155VjweWVWIJogakechA 密码:bmlm

群里面也可以下载

2. git仓库下载:https://github.com/testerSunshine/ 12306model.git

项目依赖包查看 requirements.txt:

https: //github.com/testerSunshine/12306/blob/master/requirements.txt

安装方法 x:

root 用户(避免多 Python 环境产生问题):pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt

非 root 用户(避免安装和运行时使用了不同环境):pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt

②项目使用说明

服务器启动:

修改配置文件,可以配置邮箱,配置邮箱的格式在配置里面可以看到 ex,可以配置 Server 酱提醒(推荐)配置教程,配置配置文件的时候,需注意空格和遵循 Python 语法格式。

运行根目录 sudo python run.py,即可开始。

如果你的服务器安装了 Docker 与 Docker-Compose, 那么就可以通过 Docker-Compose 进行启动。

docker.sh 脚本对此进行了封装,可以通过如下命令进行启动:

sudo ./docker.sh run #创建一个镜像并启动容器,如果镜像已经创建过了会直接启动容器。

sudo ./docker.sh restart #修改配置文件后,通过此名命令可重新加载容器运行。

sudo ./docker.sh rm #删除容器。

sudo ./docker.sh drun #后台运行容器。

sudo ./docker.sh logs #在后台运行时,通过此命令查看运行的内容。

注:针对没有 Docker 环境的同学提供了 Docker 安装脚本(Centos7)- sudo ./docker_install_centos.sh。

③目录对应说明

目录对应说明如下:

agency-cdn 代理

config-项目配置

verify-自动打码

init-项目主运行目录

inter-接口

myException-异常

myUrllib request 网络请求库

④日志例子

成功 log,如果是购票失败的,请带上失败的 log 给我,我尽力帮你调,也可加群一起交流,程序只是加速买票的过程,并不一定能买到票:

正在第 355次查询 乘车日期: 2018- 02- 12车次G4741,G2365,G1371,G1377,G1329 查询无票 代理设置 无 总耗时429ms

车次: G4741 始发车站: 上海 终点站: 邵阳 二等座:有

正在尝试提交订票 ...

尝试提交订单 ...

出票成功

排队成功, 当前余票还剩余: 359张

正在使用自动识别验证码功能

验证码通过,正在提交订单

提交订单成功!

排队等待时间预计还剩 - 12ms

排队等待时间预计还剩 - 6ms

排队等待时间预计还剩 - 7ms

排队等待时间预计还剩 - 4ms

排队等待时间预计还剩 - 4ms

恭喜您订票成功,订单号为:EB52743573, 请立即打开浏览器登录 12306,访问‘未完成订单’,在 30分钟内完成支付!

推荐有动手能力的朋友使用,抢票事半功倍。所以,多试几种工具也是好的,尤其是可以同时进行多个任务的那种。

py12306 购票助手

一位名叫 pjialin 的程序员,借鉴了文先森的部分代码实现,开发了一个分布式工具,名叫 py12306 购票助手。

就是说,一台机器抢不到,可以让许多硬件一起跑。它还支持多任务 (多班列车) 、多日期、多账号一起查。另一个机智的功能是,同时观察多个始发站和到达站的组合。

比如,北京出发的票没有了,就跑去下一站上车;或者家门口买不到,就直接买到终点:愿意妥协但限于手速的小伙伴,也能交给工具自动查看了。

项目作者说,试过文先森的算法和 bypass12306 未果,这才做出了自己的抢票工具。

用上这个新工具,他一下子抢到了好几张票:

同样是支持 Python 3.6 以上版本,这个项目现在也有 5K 标星了。

下面我们来看看使用方法:PS:py12306 需要运行在 python 3.6 以上版本(其他版本暂未测试)。

①安装依赖

gitclone https://github.com/pjialin/py12306

pip install -r requirements.txt

②配置程序

cpenv.py.exampleenv.py

自动打码:验证码可以本地识别,所用的模型和算法均来自:

https: //github.com/zhaipro/easy12306

语音通知:语音验证码使用的是阿里云 API 市场上的一个服务商,需要购买后将 appcode 填写到配置中:

https:/ /market.aliyun.com/products/56928004/cmapi02660 0.html

③启动前测试

目前提供了一些简单的测试,包括用户账号检测,乘客信息检测,车站检测等。

开始测试 -t:

pythonmain.py-t

测试通知消息 (语音,邮件) -t -n:

# 默认不会进行通知测试,要对通知进行测试需要加上 -n 参数

pythonmain.py -t -n

④运行程序

pythonmain.py

参数列表如下:

-t:测试配置信息

-t -n:测试配置信息以及通知消息

-c:指定自定义配置文件位置

分布式集群依赖于 Redis,目前支持情况:

单台主节点多个子节点同时运行。

主节点宕机后自动切换提升子节点为主节点。

主节点恢复后自动恢复为真实主节点。

配置通过主节点同步到所有子节点。

主节点配置修改后无需重启子节点,支持自动更新。

子节点消息实时同步到主节点。

使用:将配置文件的中 CLUSTER_ENABLED 打开即开启分布式。

目前提供了一个单独的子节点配置文件 env.slave.py.example 将文件修改为 env.slave.py,通过 python main.py -c env.slave.py 即可快速启动。

Docker 使用

①将配置文件下载到本地

dockerrun --rm pjialin/py12306 cat /config/env.py > env.py

# 或

curl https://raw.githubusercontent.com/pjialin/py12306/master/env.docker.py.example -o env.py

②修改好配置后运行

docker run --rm --name py12306 -p 8008:8008-d -v $(pwd) :/config-v py12306:/data pjialin/py12306

当前目录会多一个 12306.log 的日志文件,tail -f 12306.log。

Docker-Compose 中使用如下:

①复制配置文件

cpdocker-compose.yml.exampledocker-compose.yml

②从 Docker-Compose 运行

在 docker-compose.yml 所在的目录使用命令:

docker-compose up -d

Web 管理页面

目前支持用户和任务以及实时日志查看,更多功能后续会不断加入。

打开 Web 功能需要将配置中的 WEB_ENABLE 打开,启动程序后访问当前主机地址 + 端口号 (默认 8008) 即可,如 http://127.0.0.1:8008。

关于防封:目前查询和登录操作是分开的,查询是不依赖用户是否登录,放在 A 云 T 云容易被限制 IP,建议在其他网络环境下运行。

最后,祝小伙伴们十一都能顺利回家!

12306项目传送门:

https: //github.com/testerSunshine/12306

py12306 项目传送门:

https:/ /github.com/pjialin/py12306/

编辑:陶家龙、孙淑娟

出处:部分素材来自微信公众号量子位(ID:QbitAI)返回搜狐,查看更多

责任编辑:

python抢票脚本github_GitHub标星超12K,抢票神器大更新,支持候补!相关推荐

  1. python抢票代码_GitHub标星超12K,抢票神器大更新,支持候补

    掐指一算,距离国庆黄金周还有半个月的时间!你出行的车票都抢到了吗? 图片来自 pexels 根据国务院办公厅发布的关于 2019 年部分节假日安排的通知,国庆放假安排是:10 月 1 日至 7 日. ...

  2. python抢票脚本好用吗_春运到了,带你用python来抢票回家!

    不知不觉,一年一度的春运抢票大幕已经拉开,想快速抢到回家的车票吗?作为程序员,这些技术手段,你一定要知道. 为了让大家更快捷更便利的抢火车票,各种各样的抢票软件应需而生,这类软件大部分都是付费抢票的机 ...

  3. Python抢票脚本

    下面用12306抢火车票/京东抢手机来示例下: #12306秒抢Python代码from splinter.browser import Browserx = Browser(driver_name= ...

  4. python123判断火车票座位号分布图_面向回家编程!GitHub标星两万的Python抢票教程”,我们先帮你跑了一遍...

    原标题:面向回家编程!GitHub标星两万的"Python抢票教程",我们先帮你跑了一遍 大数据文摘出品 作者:曹培信.池俊辉 盼望着,盼望着, 春节的脚步近了, 然而,每年到这个 ...

  5. 面向回家编程!GitHub标星两万的Python抢票教程”,我们先帮你跑了一遍

    来源:大数据文摘 本文约3400字,建议阅读8分钟 本文为你介绍Python抢票教程,带你回家! 盼望着,盼望着, 春节的脚步近了, 然而,每年到这个时候, 最难的, 莫过于一张回家的火车票. 据悉, ...

  6. python实现抢票github_面向回家编程!GitHub标星两万的”Python抢票教程”,我们先帮你跑了一遍...

    盼望着,盼望着, 春节的脚步近了, 然而,每年到这个时候, 最难的, 莫过于一张回家的火车票. 据悉, 今年春运期间, 全国铁路发送旅客人次同比将增长8.0%. 达到4.4亿人次, 2020年铁路春运 ...

  7. 秀动app抢票脚本_程序员硬核quot;Python抢票教程”,帮你抢回家车票

    盼望着,盼望着,春节的脚步近了,然而,每年到这个时候,最难的,莫过于一张回家的火车票. 据悉,今年春运期间,全国铁路发送旅客人次同比将增长8.0%,达到4.4亿人次,2020年铁路春运自1月10日开始 ...

  8. Python 实现的12306抢票脚本

    Python12306抢票脚本 本脚本使用一个类来实现所有代码,大体上分为以下几个模块及其步骤: - 初始化对象属性(在抢票前进行的属性初始化,包括初始化浏览器模拟对象,个人信息等). - 建立模拟浏 ...

  9. 用python写一个抢票脚本

    写一个抢票脚本需要了解一些网络爬虫的知识,以及如何使用 Python 进行网络请求. 首先,你需要找到票务网站的 API,并了解其请求方式.请求参数等信息.然后,你可以使用 Python 的第三方库如 ...

最新文章

  1. JDK8中好用的日期处理-LocalDate类-LocalTime-LocalDateTIme,mysql解决时区相差13小时的问题,日期格式器DateTimeFormatter
  2. java action上传文件_java实现文件上传
  3. 前9个免费的Java流程监视工具以及如何选择一种
  4. [No0000FD]C# 正则表达式
  5. emacs24下使用jedi对python编程进行补全
  6. STP-2-三个选择
  7. 为什么分布式数据库中不使用uuid作为主键?
  8. 浅谈App Hybrid混合开发的五种方案
  9. 强烈推荐10本程序员必读的书
  10. 开关电源环路学习笔记(2)-线性化条件
  11. 美国大学计算机软件专业排名,美国大学计算机专业排名
  12. pandas学习(四)之数据填充
  13. 百度地图、高德地图的数据从哪里得到的?
  14. ipc4 - A 转换AV号(avtobv)
  15. 优维科技EasyOps®一体化运维平台入选“大信创产品目录”
  16. nginx日志格式配置
  17. 网站安全之几种常见的网络攻击方式
  18. ProFOLD:普通笔记本3小时跑完的蛋白质结构「从头预测」,努力赶超AlphaFold2
  19. CentOS 6或者7的YUM源服务器搭建
  20. 【学习笔记】GPS原理及数据处理(快速静态定位中的整周模糊度确定,FRAR和LAMBDA)

热门文章

  1. gtx1660是什么级别的_GTX1660相当于什么显卡 三月显卡天梯图秒懂GTX1660性能
  2. iOS路由设计(三)带你一步步构建iOS路由
  3. 解决Destroying ProtocolHandler [“ajp-apr-8009“]
  4. win7安装python3.7_win7无法安装python3
  5. PHP 接入 Apple 登录对 access_token/identityToken 进行 JWT 验证
  6. Mac 如何删除应用、软件
  7. C22-利用泰勒公式求sin(x)的值
  8. 快快436 高智商罪犯一
  9. ImageJ划痕实验分析
  10. 谷歌浏览器扩展程序XDM_这才是谷歌浏览器的正确打开方式,有效节省内存占用,流畅飞起...