java12306高铁抢票脚本

时间: 2023-11-04 08:57:25 浏览: 87
引用提到,12306网站上的程序员已经开始为了购票而写脚本了,但当时仅限于查询余票。而引用中介绍了12306抢票神器的功能,包括多开的客户端软件,可以快速处理抢票请求。这意味着java12306高铁抢票脚本是一个可以帮助用户自动抢购高铁票的脚本。通过这个脚本,用户可以以更快的速度和更高的效率来抢购高铁票。
相关问题

12306抢票脚本 python

抢票脚本存在法律风险和道德问题,不建议使用。以下是一个简单的 Python 抢票脚本示例,仅供参考: ```python import time import requests # 车次,从左到右依次为高铁/动车,高级软卧,其他软卧,硬卧,软座,硬座 train = ['G100', 'M11', 'K512', 'Z300', 'A987', 'O789'] # 出发日期 date = '2021-01-01' # 出发地和目的地 from_station = '北京' to_station = '上海' # 乘客姓名和证件号码 passenger_name = '张三' passenger_id = '123456789012345678' # 登录后获取的cookie cookie = 'xxxxxx' # 请求头 headers = { 'Cookie': cookie, 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36' } # 查询余票 def query_ticket(): global train, date, from_station, to_station, headers url = f'https://kyfw.12306.cn/otn/leftTicket/query?leftTicketDTO.train_date={date}&leftTicketDTO.from_station={from_station}&leftTicketDTO.to_station={to_station}&purpose_codes=ADULT' response = requests.get(url, headers=headers) data = response.json()['data']['result'] for i in data: info = i.split('|') if info[3] in train and info[-4] != '无' and info[-4] != '0': return info return None # 提交订单 def submit_order(): global headers url = 'https://kyfw.12306.cn/otn/leftTicket/submitOrderRequest' data = { 'secretStr': secret_str, 'train_date': date, 'back_train_date': date, 'tour_flag': 'dc', 'purpose_codes': 'ADULT', 'query_from_station_name': from_station, 'query_to_station_name': to_station, 'undefined': '' } response = requests.post(url, headers=headers, data=data) if response.json()['status']: return True return False # 获取乘客信息 def get_passenger(): global headers url = 'https://kyfw.12306.cn/otn/confirmPassenger/getPassengerDTOs' data = { '_json_att': '', 'REPEAT_SUBMIT_TOKEN': token } response = requests.post(url, headers=headers, data=data) data = response.json()['data']['normal_passengers'] for i in data: if i['passenger_name'] == passenger_name and i['passenger_id_no'] == passenger_id: return i['passenger_id_type_code'], i['passenger_id_no'], i['passenger_name'], i['mobile_no'] return None # 获取令牌和密钥 def get_token(): global headers url = 'https://kyfw.12306.cn/otn/confirmPassenger/initDc' response = requests.get(url, headers=headers) html = response.text token = html.split("globalRepeatSubmitToken = '")[1].split("'")[0] key_check_is_change = html.split("key_check_isChange':'")[1].split("'")[0] return token, key_check_is_change # 获取座位信息 def get_seat(): global headers, seat_type url = 'https://kyfw.12306.cn/otn/confirmPassenger/getQueueCount' data = { '_json_att': '', 'fromStationTelecode': from_station_code, 'leftTicket': left_ticket, 'purpose_codes': 'ADULT', 'REPEAT_SUBMIT_TOKEN': token, 'seatType': seat_type, 'stationTrainCode': train_code, 'toStationTelecode': to_station_code, 'train_date': date, 'train_location': train_location, 'train_no': train_no, 'trainPassType': 'QB', 'trainStartDate': date } response = requests.post(url, headers=headers, data=data) data = response.json()['data'] if data['ticket'] == '0' or data['countT'] == '0': return False return True # 提交订单信息 def confirm_order(): global headers, passenger_info, seat_type, token, key_check_is_change url = 'https://kyfw.12306.cn/otn/confirmPassenger/confirmSingleForQueue' data = { 'passengerTicketStr': f'{seat_type},0,1,{passenger_info},N', 'oldPassengerStr': f'{passenger_name},{passenger_id},{passenger_type_code}_', 'randCode': '', 'purpose_codes': 'ADULT', 'key_check_isChange': key_check_is_change, 'leftTicketStr': left_ticket, 'train_location': train_location, 'choose_seats': '', 'seatDetailType': '000', 'whatsSelect': '1', 'roomType': '00', 'dwAll': 'N', '_json_att': '', 'REPEAT_SUBMIT_TOKEN': token } response = requests.post(url, headers=headers, data=data) if response.json()['data']['submitStatus']: return True return False # 获取车站代码 def get_station_code(): global headers, from_station, to_station, from_station_code, to_station_code url = 'https://kyfw.12306.cn/otn/resources/js/framework/station_name.js?station_version=1.9102' response = requests.get(url, headers=headers) data = response.text.split('@') for i in data: if from_station in i: from_station_code = i.split('|')[2] elif to_station in i: to_station_code = i.split('|')[2] # 主函数 def main(): global seat_type, train_code, train_no, left_ticket, train_location, passenger_type_code, passenger_info, token, key_check_is_change while True: print(f'{time.strftime("%H:%M:%S")} 正在查询余票...') info = query_ticket() if info: print(f'{time.strftime("%H:%M:%S")} 有余票,正在提交订单...') train_code, _, _, _, _, _, _, train_no, _, _, _, _, _, _, _, _, _, left_ticket, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, train_location, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, seat_type, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, _, passenger_type_code, passenger_info = info get_station_code() token, key_check_is_change = get_token() if submit_order(): if get_passenger(): if get_seat(): if confirm_order(): print(f'{time.strftime("%H:%M:%S")} 订票成功,请及时支付!') return else: print(f'{time.strftime("%H:%M:%S")} 订票失败,重新提交订单...') else: print(f'{time.strftime("%H:%M:%S")} 座位不足,重新提交订单...') else: print(f'{time.strftime("%H:%M:%S")} 乘客信息错误,重新提交订单...') else: print(f'{time.strftime("%H:%M:%S")} 提交订单失败,重新提交订单...') else: print(f'{time.strftime("%H:%M:%S")} 暂无余票,继续查询...') time.sleep(1) if __name__ == '__main__': main() ``` 该脚本的使用方式如下: 1. 将代码保存为 `12306.py` 文件; 2. 修改 `train`、`date`、`from_station`、`to_station`、`passenger_name`、`passenger_id`、`cookie` 等变量为实际情况; 3. 在终端中执行 `python 12306.py` 命令启动脚本。 需要注意的是,该脚本仅供学习参考,不得用于商业用途和非法用途。同时,12306 网站反爬虫机制较为严格,如果频繁提交订单会被网站封禁账号。

python高铁抢票脚本

抢票脚本是一种利用计算机程序自动查询和订购火车票的工具。在Python中,可以使用第三方库如requests、selenium等来实现高铁抢票脚本。脚本的基本原理是通过发送HTTP请求模拟用户在火车票网站上查询和提交订单的操作。 下面是一个简单的Python高铁抢票脚本的示例: ```python import requests def search_tickets(date, from_station, to_station): # 构造查询参数 params = { 'leftTicketDTO.train_date': date, 'leftTicketDTO.from_station': from_station, 'leftTicketDTO.to_station': to_station, 'purpose_codes': 'ADULT' } # 发送查询请求 response = requests.get('https://kyfw.12306.cn/otn/leftTicket/queryZ', params=params) # 解析查询结果 result = response.json() # 处理查询结果 if result['status'] and result['httpstatus'] == 200: tickets = result['data']['result'] # 提取票价、余票数量等信息 # 进行自定义筛选和排序 # 返回符合条件的火车票信息 else: print('查询失败') def book_ticket(date, from_station, to_station, train_no, seat_type): # 构造提交订单的数据 data = { 'secretStr': '', 'train_date': date, 'back_train_date': date, 'tour_flag': 'dc', 'purpose_codes': 'ADULT', 'query_from_station_name': from_station, 'query_to_station_name': to_station, 'undefined': '' } # 发送提交订单请求 response = requests.post('https://kyfw.12306.cn/otn/leftTicket/submitOrderRequest', data=data) # 处理提交订单结果 if response.status_code == 200: # 解析返回的JSON数据 result = response.json() if result['status']: # 获取令牌 token = result['data']['token'] # 获取车次信息 train_info = result['data']['queryLeftTicketRequestDTO'] # 构造乘客信息 passengers = [ {'passenger_name': '张三', 'passenger_id_type_code': '1', 'passenger_id_no': '身份证号码', 'mobile_no': '手机号码'} # 可以添加更多乘客信息 ] # 提交订单 submit_order(token, train_info, passengers, seat_type) else: print('提交订单失败') else: print('提交订单请求失败') def submit_order(token, train_info, passengers, seat_type): # 构造确认订单的数据 data = { '_json_att': '', 'REPEAT_SUBMIT_TOKEN': token, 'purpose_codes': 'ADULT', 'passengerTicketStr': '', 'oldPassengerStr': '', 'randCode': '' } # 发送确认订单请求 response = requests.post('https://kyfw.12306.cn/otn/confirmPassenger/confirmSingleForQueue', data=data) # 处理确认订单结果 if response.status_code == 200: # 解析返回的JSON数据 result = response.json() if result['status']: # 确认订单成功,获取订单号 order_no = result['data']['orderId'] # 提交订单支付 pay_order(order_no) else: print('确认订单失败') else: print('确认订单请求失败') def pay_order(order_no): # 构造支付订单的数据 data = { 'orderSequence_no': order_no } # 发送支付订单请求 response = requests.post('https://kyfw.12306.cn/otn//payOrder/init', data=data) # 处理支付订单结果 if response.status_code == 200: # 解析返回的HTML数据 # 提取支付链接或二维码等信息 else: print('支付订单请求失败') # 使用示例 search_tickets('2022-01-01', '北京', '上海') book_ticket('2022-01-01', '北京', '上海', 'G1234', '二等座') ``` 上述示例中的代码只是一个简单的框架,具体的实现需要根据实际情况进行调整和完善。另外,需要注意的是,使用高铁抢票脚本有一定的法律和道德风险,请确保遵守相关法律法规和网站规定。

相关推荐

最新推荐

recommend-type

高速铁路通信概论PPT

高速铁路通信概论;
recommend-type

基于快速背景差分的高速铁路异物侵入检测算法_郭保青.pdf

针对铁路场景抖动发生在垂直方向的特点,提出了一维灰度投影结合高斯滤波的图像快速去抖方法,在大幅提高处理速度的同时获得了较好的去抖效果; 针对复杂多变的背景,提出了一种基于前景目标统计分布的背景更新算法,...
recommend-type

高速应急指挥及辅助决策系统

实现救援过程的信息化、智能化和一体化,极大提高应急救援的效率,有效降低各种突发事件所造成的损失,并防止二次事故的发生,从而提高中原高速的对外形象,使高速公路优质和安全的服务品牌能够得到最大程度的体现
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

MATLAB柱状图在信号处理中的应用:可视化信号特征和频谱分析

![matlab画柱状图](https://img-blog.csdnimg.cn/3f32348f1c9c4481a6f5931993732f97.png) # 1. MATLAB柱状图概述** MATLAB柱状图是一种图形化工具,用于可视化数据中不同类别或组的分布情况。它通过绘制垂直条形来表示每个类别或组中的数据值。柱状图在信号处理中广泛用于可视化信号特征和进行频谱分析。 柱状图的优点在于其简单易懂,能够直观地展示数据分布。在信号处理中,柱状图可以帮助工程师识别信号中的模式、趋势和异常情况,从而为信号分析和处理提供有价值的见解。 # 2. 柱状图在信号处理中的应用 柱状图在信号处理
recommend-type

帮我设计一个基于Android平台的便签APP的代码

很抱歉,我是一个语言模型AI,无法提供完整的Android APP代码。但是,我可以给您一些设计便签APP的建议和思路。 1. 界面设计 首先考虑APP的界面设计,便签APP通常需要一个主界面用于显示所有的便签,以及一个编辑界面用于编辑单个便签。主界面可以采用列表的形式,列出所有的便签,每个便签可以显示标题和摘要内容。在编辑界面中,用户可以输入标题和正文内容,并且可以设置提醒时间、标签、优先级等。 2. 数据存储 便签APP需要一个数据存储的方案,可以考虑使用SQLite数据库来存储便签数据。每个便签可以存储标题、正文内容、提醒时间、标签、优先级等信息。 3. 便签操作 便签APP
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。
recommend-type

"互动学习:行动中的多样性与论文攻读经历"

多样性她- 事实上SCI NCES你的时间表ECOLEDO C Tora SC和NCESPOUR l’Ingén学习互动,互动学习以行动为中心的强化学习学会互动,互动学习,以行动为中心的强化学习计算机科学博士论文于2021年9月28日在Villeneuve d'Asq公开支持马修·瑟林评审团主席法布里斯·勒菲弗尔阿维尼翁大学教授论文指导奥利维尔·皮耶昆谷歌研究教授:智囊团论文联合主任菲利普·普雷教授,大学。里尔/CRISTAL/因里亚报告员奥利维耶·西格德索邦大学报告员卢多维奇·德诺耶教授,Facebook /索邦大学审查员越南圣迈IMT Atlantic高级讲师邀请弗洛里安·斯特鲁布博士,Deepmind对于那些及时看到自己错误的人...3谢谢你首先,我要感谢我的两位博士生导师Olivier和Philippe。奥利维尔,"站在巨人的肩膀上"这句话对你来说完全有意义了。从科学上讲,你知道在这篇论文的(许多)错误中,你是我可以依
recommend-type

MATLAB柱状图在数据分析中的作用:从可视化到洞察

![MATLAB柱状图在数据分析中的作用:从可视化到洞察](https://img-blog.csdnimg.cn/img_convert/1a36558cefc0339f7836cca7680c0aef.png) # 1. MATLAB柱状图概述** 柱状图是一种广泛用于数据可视化的图表类型,它使用垂直条形来表示数据中不同类别或组别的值。在MATLAB中,柱状图通过`bar`函数创建,该函数接受数据向量或矩阵作为输入,并生成相应的高度条形。 柱状图的优点在于其简单性和易于理解性。它们可以快速有效地传达数据分布和组别之间的比较。此外,MATLAB提供了广泛的定制选项,允许用户调整条形颜色、