Python 12306抢票脚本

请注意,编写或使用抢票脚本可能违反相关网站的服务条款和法律法规。以下内容仅供学习和了解技术原理之用,不鼓励或支持任何违反规定的行为。

Python 12306抢票脚本通常涉及以下几个步骤:

  1. 登录:使用Python的requests库模拟登录12306网站,获取登录后的Cookie。

  2. 查询余票:定期发送请求到12306的余票查询接口,检查所需车次的余票情况。

  3. 提交订单:一旦检测到有余票,立即提交订单请求。

  4. 支付订单:在订单提交成功后,进行支付操作。

以下是一个非常简化的Python脚本示例,用于说明抢票脚本的基本逻辑:

import requests
import time# 12306登录后的Cookie
cookie = '你的12306登录Cookie'# 余票查询URL
query_url = 'https://kyfw.12306.cn/otn/leftTicket/queryZ?leftTicketDTO.train_date=2023-04-30&leftTicketDTO.from_station=SHH&leftTicketDTO.to_station=BJP&purpose_codes=ADULT'# 提交订单URL
order_url = 'https://kyfw.12306.cn/otn/confirmPassenger/initDc'# 列车信息
train_info = {'train_no': '列车号','from_station_telecode': '始发站电报码','to_station_telecode': '终点站电报码','start_train_time': '开车时间','arrive_train_time': '到达时间','second_date': '次日标识'
}# 乘客信息
passenger_info = {'passengerTicketStr': 'T123456789012','passengerName': '乘客姓名','passengerType': '乘客类型','mobileNo': '手机号','passengerIdType': '证件类型','passengerIdNo': '证件号码','insure': '是否购买保险','preferential': '优惠票类型'
}# 发送余票查询请求
def query_tickets():headers = {'Cookie': cookie}response = requests.get(query_url, headers=headers)data = response.json()return data# 提交订单
def submit_order():headers = {'Cookie': cookie}response = requests.post(order_url, json=passenger_info, headers=headers)return response.json()# 主函数
def main():while True:data = query_tickets()if 'data' in data and data['data']['result'] == 'true':print("有余票,开始提交订单...")order_data = submit_order()if 'result' in order_data and order_data['result'] == 'true':print("订单提交成功,请尽快支付。")breaktime.sleep(5)  # 每隔5秒查询一次if __name__ == '__main__':main()

请注意,这个脚本仅用于演示目的,实际的12306抢票脚本会更加复杂,并且需要处理验证码、登录验证、异常处理等问题。此外,12306网站可能有反爬虫机制,自动化脚本可能会被检测并封禁账号。在使用任何自动化工具之前,请确保你了解并遵守相关的法律法规和服务条款。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/823426.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Louvain算法简介

1. 背景 Louvain算法是一种基于图数据的社区发现算法(community detection),算法的优化目标为最大化整个数据的模块度,模块度的计算如下: 其中m为图中边的总数量, 表示所有指向节点 i 的连边权重之和。 表示节点 i,j 之…

每日一练 | 华为认证真题练习Day216

1、如果路由器system视图下和BGP视图下都配置了router-id,由于BGP视图优先级高,则BGP使用BGP视图下的router-id A. 对 B. 错 2、关于NSSA的命令描述,错误的是: A. default-route-advertise命令用来将缺省路由通告到普通OSPF区域…

14_SpringMVC

文章目录 MVCSpringMVC与JavaEE对比SpringMVCSpringMVC的核心流程SpringMVC入门案例RequestMapping注解的使用Handler方法的返回值Handler方法的形参keyvalue形式的请求参数Json请求参数 RESTful风格接口静态资源处理FilterHandlerInterceptor异常处理SpringMVC核心流程流程图 …

ElasticSearch倒排索引原理是什么?如何实现?

1、ElasticSearch倒排索引原理是什么? ElasticSearch的倒排索引原理是一种高效的信息检索技术,它允许用户快速搜索文档中的关键字。以下是其原理的详细解释: 1、文档分析:在索引文档之前,ElasticSearch会对文档进行分…

sudo apt install ros-humble-gazebo-*显示网络不可达 Ubuntu20.04使用清华镜像本地安装/更新ros2

问题 sudo apt install ros-humble-gazebo-*显示网络不可达,这是因为sources.list中的镜像源有问题,换成清华源可以解决问题 解决 1 设置Ubuntu镜像源为清华镜像源 1.1 备份source.list文件 sudo cp /etc/apt/sources.list /etc/apt/sources.list.ba…

线圈、寄存器、存储区代号、功能码 案例说明

线圈和寄存器 表示数据类型 线圈:表示Boolean数据类型 寄存器:表示非Boolean数据类型,用来暂时存放参与运算的数据和运算结果,具有接收数据、存放数据和输出数据的功能。 ModbusRTU 读输出线圈 存储区代号 0区 功能码 0x01 读输入…

金牌客服的宝藏App——客服宝快捷回复软件

在客户服务领域,时间就是金钱,效率就是生命。作为一名荣获“金牌客服”称号的小编,我深知快捷回复工具对于提升工作效率和客户满意度的重要性。今天,我要向大家推荐一款在客服界小有名气的神器——客服宝聊天助手。这款快捷回复软…

PCG共轭梯度最小二乘相位解包裹-matlab(可直接运行)

phase_unwrap.m %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 根据Ghiglia和Romero(1994)提出的方法,基于加权和非加权最小二乘法进行相位解包裹 % 链接:https://doi.org/10.1364/JOSAA.11.000107 % 输…

Java 通过 SFTP 和 FTP 访问时相对路径引发的问题汇总

背景 常用的 Java SSH 操作工具包是 jsch ,FTP 工具包 commons-net ,本文介绍本文总结 Java 程序通过 SFTP 协议和 FTP 协议访问远程文件的过程中,需要注意的路径问题。 本文将解答下面三个问题: FTPClient 获取当前用户根目录…

2024.4.17

poll客户端 #include <myhead.h> #define IP "192.168.38.128" #define PORT 8889 int main(int argc, const char *argv[]) {//创建套接字int cfd socket(AF_INET,SOCK_STREAM,0);if(cfd -1){perror("cfd");return -1;}//绑定//......//连接服务…

python:数据容器

三、列表的循环&#xff1a; 语法&#xff1a; # 数据容器存储多个元素&#xff0c;将容器内的数据依次取出进行处理&#xff0c;称之为&#xff1a;遍历、迭代 # 遍历列表的元素—通过while循环 # 如何取出列表的元素— 通过列表[下标]的方式取出数据 # 循环条件的控制 1、定…

C++动态内存管理 解剖new/delete详细讲解(operator new,operator delete)

讨厌抄我作业和不让我抄作业的人 讨厌插队和不让我插队的人 讨厌用我东西和不让我用东西的人 讨厌借我钱和不借给我钱的人 讨厌开车加塞和不让我加塞的人 讨厌内卷和打扰我内卷的人 一、C中动态内存管理 1.new和delete操作内置类型 2.new和delete操作自定义类型 二、operat…

Linux第91步_了解“platform总线,platform驱动和platform设备”,以及驱动框架和设备框架

plattorm是为了驱动的分离与分层而提出来的一种框架&#xff0c;其驱动的具体实现还是需要字符设备驱动、块设备驱动或网络设备驱动。 对于一个完整的驱动程序&#xff0c;必须提供“有设备树”和“无设备树”两种匹配方法。 1、总线 Linux系统内核使用bus_type结构体表示总线…

重生奇迹mu恶魔来袭副本

在游戏重生奇迹mu中&#xff0c;恶魔来袭副本是玩家能够组队通过的副本。但是因为手游组队的不方便性&#xff0c;部分玩家对其还是非常苦手。而今天&#xff0c;我们就给大家讲解一下这个游戏的双人通关攻略。 1、挂机找怪手动输出 (1)对于普通剧情副本而言&#xff0c;挂机…

python爬虫原理和编程实战:爬取CSDN博主的账号信息

&#x1f9d1; 作者简介&#xff1a;阿里巴巴嵌入式技术专家&#xff0c;深耕嵌入式人工智能领域&#xff0c;具备多年的嵌入式硬件产品研发管理经验。 &#x1f4d2; 博客介绍&#xff1a;分享嵌入式开发领域的相关知识、经验、思考和感悟,欢迎关注。提供嵌入式方向的学习指导…

黑马点评(四) -- 分布式锁

1 . 分布式锁基本原理和实现方式对比 分布式锁&#xff1a;满足分布式系统或集群模式下多进程可见并且互斥的锁。 分布式锁的核心思想就是让大家都使用同一把锁&#xff0c;只要大家使用的是同一把锁&#xff0c;那么我们就能锁住线程&#xff0c;不让线程进行&#xff0c;让…

4.1 返回JSON数据

1. 默认实现方式 JSON是目前主流的前后端数据传输方式&#xff0c;Spring MVC中使用消息转换器HttpMessageConverter对JSON的转换提供了很好的支持&#xff0c;在Spring Boot中更进一步&#xff0c;对相关配置做了更进一步的简化。 默认情况下&#xff0c;当开发者新创建一个S…

24.4.17 驱动开发定时器作业,消抖

定时器消抖工作原理 在按键按下之后&#xff0c;进入中断处理函数&#xff0c;在中断处理函数中&#xff0c;定时时间10ms当定时时间到&#xff0c;执行定时器处理函数&#xff0c;在定时器处理函数中&#xff0c;读取管脚的电平状态如果读到的是低电平&#xff0c;表示按键按下…

x264 编码器 refine_subpel 函数

x264 264是一个开源的视频编码库,用于将视频压缩为H.264/AVC(Advanced Video Coding)格式。它是一种广泛使用的视频编码标准,能够提供高质量的视频压缩和较低的比特率。x264库提供了一个编码器,可以将原始视频序列转换为H.264/AVC压缩的比特流。它实现了各种H.264编码算法…

刷题日记——质因数的个数

题目 分析&#xff08;从质数的判断角度出发&#xff09;&#xff08;递归&#xff09; 判断n是否是质数需要&#xff1a; 遍历&#xff0c;i从2开始到sqrt(n)&#xff0c;每次判断n是否能整除i&#xff0c;若能则不是质数&#xff0c;若不能则是 思路&#xff1a; 先判断n…