抢票(python)

article/2025/9/24 12:05:19

关注微信公众号: 程序工厂,不定期更新更新黑科技、脚本等资源

腾讯云服务器优惠购买链接:

1核2G云服务器首年88元:http://url.cn/5Z0ZWGI

阿里云服务器优惠购买链接:

服务器半年只需要54

https://www.aliyun.com/minisite/goods?userCode=31csnowy&taskCode=pintuan20201212&recordId=297665

 

GitHub标星5k的“py12306

源码地址:GitHub :https://github.com/pjialin/py12306

我同步了一版本在码云上 拉下来速度可以快点 https://gitee.com/tangzhengfeng_admin/py12306

- [x] 多日期查询余票
- [x] 自动打码下单
- [x] 用户状态恢复
- [x] 电话语音通知
- [x] 多账号、多任务、多线程支持
- [x] 单个任务多站点查询 
- [x] 分布式运行
- [x] Docker 支持
- [x] 动态修改配置文件
- [x] 邮件通知
- [x] Web 管理页面
- [x] 微信消息通知
- [ ] 代理池支持 ([pyproxy-async](https://github.com/pjialin/pyproxy-async))

成功图片展示

抢到后 去12306官网付款

 

 

进入主题

py12306 需要运行在 python 3.6 以上版本(其它版本暂未测试)

1. 安装依赖

git clone https://github.com/pjialin/py12306pip install -r requirements.txt

2. 配置程序

cp env.py.example env.py

3.打开env.py配置抢票信息

# -*- coding: utf-8 -*-# 12306 账号
USER_ACCOUNTS = [# 目前已支持仅查询,不下单,屏蔽掉下面的账号即可{'key': 0,  # 如使用多个账号 key 不能重复'user_name': 'your user name',# 登录12306 账号'password': 'your password'# 登录12306 密码},# {#     'key': 'wangwu',#     'user_name': 'wangwu@qq.com',#     'password': 'wangwu'# }
]# 查询间隔(指每一个任务中每一个日期的间隔 / 单位秒)
# 默认取间隔/2 到 间隔之间的随机数 如设置为 1 间隔则为 0.5 ~ 1 之间的随机数
# 接受字典形式 格式:    {'min': 0.5, 'max': 1}
QUERY_INTERVAL = 1# 用户心跳检测间隔 格式同上
USER_HEARTBEAT_INTERVAL = 120# 多线程查询
QUERY_JOB_THREAD_ENABLED = 0  # 是否开启多线程查询,开启后第个任务会单独分配线程处理# 打码平台账号
# 目前只支持免费打码接口 和 若快打码,注册地址:http://www.ruokuai.com/login
AUTO_CODE_PLATFORM = 'free'  # 免费填写 free 若快 ruokuai  # 免费打码无法保证持续可用,如失效请手动切换
AUTO_CODE_ACCOUNT = {  # 使用 free 可用省略'user': 'your user name','pwd': 'your password'
}# 语音验证码 
# 可以在上面买个0元五条语音短信的就可以了  
# 只要一个 code 参数 配置到NOTIFICATION_API_APP_CODE,再改个接收手机号(一般购买后几分钟左右会有封邮件,从邮件进去就可以看到)
# 没找到比较好用的,现在用的这个是阿里云 API 市场上的,基本满足要求,价格也便宜
# 购买成功后到控制台找到  APPCODE 放在下面就可以了
# 地址:易源 https://market.aliyun.com/products/57126001/cmapi019902.html
# 2019-01-18 更新
# 增加新的服务商 鼎信 https://market.aliyun.com/products/56928004/cmapi026600.html?spm=5176.2020520132.101.2.e27e7218KQttQS
NOTIFICATION_BY_VOICE_CODE = 1  # 开启语音通知
NOTIFICATION_VOICE_CODE_TYPE = 'dingxin'  # 语音验证码服务商  可用项 dingxin  yiyuan
NOTIFICATION_API_APP_CODE = '' # 需要配置code 
NOTIFICATION_VOICE_CODE_PHONE = ''  # 接受通知的手机号# 钉钉通知
# 使用说明   https://open-doc.dingtalk.com/docs/doc.htm?treeId=257&articleId=105735&docType=1
DINGTALK_ENABLED = 0
DINGTALK_WEBHOOK = 'https://oapi.dingtalk.com/robot/send?access_token=your token'# Telegram消息推送
# 目前共有两个Bot:
#   1:https://t.me/notificationme_bot
#   2:https://t.me/RE_Link_Push_bot
# 任选一个Bot,关注获取URL链接,如果没有回复则发送给Bot这条信息: /start
# 将获取的URL填入下面对应位置
# 注意:因为以上Bot都由他人公益提供,无法保证随时可用,如以上Bot都无法使用,请使用其他消息推送方式
# Bot1来源:https://github.com/Fndroid/tg_push_bot
# Bot2来源:https://szc.me/post/2.html
TELEGRAM_ENABLED = 0
TELEGRAM_BOT_API_URL = 'https://tgbot.lbyczf.com/sendMessage/:your_token'# ServerChan 和 PushBear 微信消息推送
# 使用说明
# ServerChan     http://sc.ftqq.com
# PushBear       http://pushbear.ftqq.com
SERVERCHAN_ENABLED = 0
SERVERCHAN_KEY = ''
PUSHBEAR_ENABLED = 0
PUSHBEAR_KEY = ''# Bark 推送到ios设备
# 参考 https://www.v2ex.com/t/467407
BARK_ENABLED = 0
BARK_PUSH_URL = 'https://api.day.app/:your_token'# 输出日志到文件
OUT_PUT_LOG_TO_FILE_ENABLED = 0
OUT_PUT_LOG_TO_FILE_PATH = 'runtime/12306.log'  # 日志目录# 分布式集群配置
CLUSTER_ENABLED = 0  # 集群状态
NODE_IS_MASTER = 1  # 是否是主节点 同时只能启用 1 个主节点
NODE_SLAVE_CAN_BE_MASTER = 1  # 主节点宕机后,子节点是否可以自动提升为主节点(建议打开)
NODE_NAME = 'master'  # 节点名称,不能重复
REDIS_HOST = 'localhost'  # Redis  host
REDIS_PORT = '6379'  # Redis  port
REDIS_PASSWORD = ''  # Redis  密码 没有可以留空# 邮箱配置
EMAIL_ENABLED = 0  # 是否开启邮件通知
EMAIL_SENDER = 'sender@example.com'  # 邮件发送者
EMAIL_RECEIVER = 'receiver@example.com'  # 邮件接受者 # 可以多个 [email1@gmail.com, email2@gmail.com]
EMAIL_SERVER_HOST = 'localhost'  # 邮件服务 host
EMAIL_SERVER_USER = ''  # 邮件服务登录用户名
EMAIL_SERVER_PASSWORD = ''  # 邮件服务登录密码# Web 管理
WEB_ENABLE = 1  # 是否打开 Web 管理
WEB_USER = {  # 登录信息'username': 'admin','password': 'password'
}
WEB_PORT = 8008  # 监听端口# 是否开启 CDN 查询
CDN_ENABLED = 0
CDN_CHECK_TIME_OUT = 1 # 检测单个 cdn 是否可用超时时间# 查询任务
QUERY_JOBS = [{# 'job_name':  'bj -> sz',  # 任务名称,不填默认会以车站名命名,不可重复'account_key': 0,  # 将会使用指定账号下单'left_dates': [  # 出发日期 :Array"2020-01-23","2020-01-24",],'stations': {  # 车站 支持多个车站同时查询  :Dict or :List'left': '北京','arrive': '深圳',},#  # 多个车站示例  (建议添加多个,有时多买几站成功率会高一点)# 'stations': [{#     'left': '北京',#     'arrive': '深圳',# },{  # 多个车站示例#     'left': '北京',#     'arrive': '广州',# }],'members': [  # 乘客姓名,会根据当前账号自动识别乘客类型 购买儿童票 设置两个相同的姓名即可,程序会自动识别 如  ['张三', '张三']"张三",#"*王五", #在姓名前加*表示学生购买成人票# 7,  # 支持通过序号确定唯一乘客,序号查看可通过  python main.py -t 登录成功之后在 runtime/user/ 下找到对应的 用户名_passengers.json 文件,找到对应的 code 填入],'allow_less_member': 0,  # 是否允许余票不足时提交部分乘客'seats': [  # 筛选座位  有先后顺序 :Array# 可用值: 特等座, 商务座, 一等座, 二等座, 软卧, 硬卧, 动卧, 软座, 硬座, 无座'硬卧','硬座'],'train_numbers': [  # 筛选车次 可以为空,为空则所有车次都可以提交 如 [] 注意大小写需要保持一致"K356","K1172","K4184"],'except_train_numbers': [  # 筛选车次,排除车次  train_numbers 和 except_train_numbers 不可同时存在],'period': {  # 筛选时间'from': '00:00','to': '24:00'}},# {#     'job_name':  'cd -> gz',  # 任务名称,不填默认会以车站名命名,不可重复#     'account_key': 0,  # 将会使用指定账号下单#     'left_dates': [#         "2020-01-23",#         "2020-01-24"#     ],#     'stations': {#         'left': '成都',#         'arrive': '广州',#     },#     'members': [#         "小王",#     ],#     'allow_less_member': 0,#     'seats': [#         '硬卧',#     ],#     'train_numbers': []# }
]

4.开始测试 

python main.py -t

5.运行程序

python main.py

浏览器访问:http://127.0.0.1:8008 (文件env.py里WEB_PORT 监听端口设置)

账号密码 (文件env.py里 WEB_USER 里 设置,默认 登录账号:admin 登录密码:password)

username 登录账号
password 登录密码

常见错误异常

日志输出地址未配置

env.py 配置输出日志地址

# 输出日志到文件
OUT_PUT_LOG_TO_FILE_ENABLED = 1 # 1.开启 0.关闭
OUT_PUT_LOG_TO_FILE_PATH = 'C:/Users/admin/Desktop/抢票/py12306/runtime/12306.log' #输出地址

12306登录信息未配置

env.py 配置登录12306地址 
# 12306 账号
USER_ACCOUNTS = [# 目前已支持仅查询,不下单,屏蔽掉下面的账号即可{'key': 0,  # 如使用多个账号 key 不能重复'user_name': 'your user name', #登录12306账号'password': 'your password' # 登录12306密码}
]

 


http://chatgpt.dhexx.cn/article/ZiuywNGc.shtml

相关文章

python实现云服务器上12306自动化抢票功能

本文将分为几大模块讲解python服务器上12306自动化抢票功能: 一、云服务器的安装与配置 1.1 云服务器与个人主机不同,不受时间、场所等条件的限制,将python代码运行在云服务器上可以实现真正意义上的解放。 1.2 这里,我选择阿里…

12306分流抢票软件 v1.13.21官方版 -抢票神器

软件介绍: 分流抢票,是以用户为中心、人性化的抢票软件。不做广告、不做推广、不携带病毒、不收集隐私信息,并接受各方技术评测,全心全意为用户打造一款属于自己的抢票软件!12306分流抢票器是能够提供给用户强大的自动…

12306GT多线程、分流免费抢票工具使用

大事记背景 我相信很多远游他乡的朋友每逢佳节都会遇到一个难题,就是购票难,这个难题有多难呢?经常在12306官网购票的小伙伴应该知道每个地方的放票时间是不一样的,但是逢年过节的那几天即使你在放票几分钟前一直盯着电脑屏幕或者…

分流抢票软件浅谈

其实,我不是很想写这篇文章的,因为现在有很多抢票的软件,即我们所说的第三方抢票软件,也有很多抢票的心得在网上,但是,我今天在微信晒了一个抢票成功的图片,就有很多人来问我,说要我分享这个软件,我在微信也看到一个师姐因抢不到票而哭,我就有了写下这篇文章的决心,…

免费的Windows抢票神器 – 12306分流抢票 – bypass

本页目录 分流抢票 官网要求操作 输入账号密码滑块登陆主界面绑定微信公众号后,可以获取消息 微信消息 年复一年的火车抢票大战,光靠我们人工抢是无法满足的,毕竟有很多第三方付费平台使用服务器间歇性抢票!更有甚者,第…

Bypass一款不错的分流抢票助手工具

前言 Bypass也就是12306分流抢票软件,是一款全程自动抢票,自动识别验证码,多线程秒单、稳定捡漏,支持多天、多车次、多席别、多乘客等功能。   下载 Bypass 使用方法 1.软件打开时,会有一个联网检测的过程。 2.输入你在中铁12306订票官网申请到的…

bypass分流抢票(火车、高铁)

1、双击运行Bypass.exe或者右键以管理员身份运行 2、输入账户、密码进行登录(该账户为12306的账户,如若没有则点击更多功能进行注册) 3、滑块登录 4、进行选择买票 5、设置支付选项(在这里可设置自动支付,也可在抢票成…

关于12306Bypass-分流抢票

原文地址为: 关于12306Bypass-分流抢票 12306Bypass-分流抢票-2013-15年 官网:http://www.12306bypass.com 分流抢票是一款完全免费的抢票软件,请抵制淘宝贩卖等诈骗行为 作者不会授权任何人去出售,更不会自己去出售&#xff0…

c语言scanf和printf区别,printf和scanf的区别是什么

printf和scanf的区别:1、printf是格式化的输出函数,scanf是C语言的输入功能;2、printf用于以规定格式将信息输出到标准输出设备,scanf是一种格式输入功能,即以用户指定的格式从键盘将数据输入到指定的变量中。 本文操作…

MongoDB和mysql的区别

一.什么是MongoDB MongoDB 是一个基于分布式文件存储的数据库。由 C 语言编写,是一个开源数据库系统。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富&#…

SDK和API的区别

SDK和API的区别 一、API的概念二、SDK的概念三、SDK和API的区别 在正式了解它们的区别之前,我们得先知道 SDK 和 API 分别是什么? 一、API的概念 我们先来看这样一张图: (图画的很烂就请不要在意了) API 的全称为 …

html div p区别,p标签和div标签的区别与用法

前面介绍过span与div区别,在html布局中p标签同样也是常用的标签,那p标签与div标签区别是什么,怎么选择使用与用法? 一、css属性区别 1、结构不同 div和p均是一对开始与闭合标签。 div以 开始,以 结束的一对标签。 p以 …

BeanFactory与ApplicationContext的区别

BeanFactory与ApplicationContext的区别? 一、BeanFactory和ApplicationContext 接口及其子类图 二、概述 BeanFactory和ApplicationContext是Spring的两大核心接口,都可以当做Spring的容器。其中ApplicationContext是BeanFactory的子接口。 BeanFactory: BeanF…

watch跟computed的区别

大家好,我是大帅子,今天给大家讲一下watch跟computed的区别,下面我们直接开始吧 功能上:computed是计算属性,watch是监听一个值的变化,然后执行对应的回调。 是否调用缓存:computed中的函数所依赖的属性没有发生变化,…

动态lacp和静态lacp区别_lacp静态与动态区别

lacp静态与动态区别是: 1、用户权限不同。动态lacp汇聚是一种系统自动创建/删除的汇聚,不允许用户增加或删除动态lacp汇聚中的成员端口。静态lacp汇聚由用户手工配置,不允许系统自动添加或删除汇聚组中的端口。汇聚组中必须至少包含一个端口。…

null 和 undefined 的区别

一、概念 undefined 表示未定义,就是应该有值但是还没有赋值,连null的值都没有赋予 null 代表空值,空引用。 二、区别 1. null 和 undefined 虽然值的结果是相等的,但是其所代表的语义是完全不一样的(是相等的&am…

copy与deepcopy区别

copy与deepcopy区别 1、deepcopy: 将复制对象完全复制一边,并作为一个独立的新个体单元存在。即使改变被复制对象,deepcopy新个体也不会发生变化 2、copy: 不产生一个独立的对象,在原有数据上打一个标签&#xff0…

Cookie和session的区别

共同之处: cookie和session都是用来跟踪浏览器用户身份的会话方式。 区别: cookie: 是一段保存在客户端的小文本;能够用来将用户活动过程中的状态信息保存到客户端,服务器可以获得该信息以便进行处理,跟踪到用户的…

cookie和session区别

cookie 1.什么是cookie Cookie意为“甜饼”,是由W3C组织提出,最早由Netscape社区发展的一种机制。目前Cookie已经成为标准,所有的主流浏览器如IE、Netscape、Firefox、Opera等都支持Cookie。 2.为什么要用cookie 由于http协议是一种无状态…

“chmod 777-R 文件名”什么意思?

“chmod 777-R 文件名”什么意思? 1. Linux下,每个文件可拥有3种权限类型2. 权限值组合3.操作文件、目录的用户4.十位权限表示5.chmod修改权限 - 数字6.chmod修改权限 - 字母7. 参考 1. Linux下,每个文件可拥有3种权限类型 读取权限&#xf…