一个12306自动抢票的脚本

简介: 一个12306自动抢票的脚本

以下是一个使用Python编写的12306自动抢票的脚本。该脚本可以在指定时间自动登录12306网站,并尝试抢购指定车次的火车票。

import requests
import time
import random
import os

# 输入登录信息
username = input("请输入12306用户名:")
password = input("请输入12306密码:")

# 输入抢购信息
departure_city = input("请输入出发城市:")
arrival_city = input("请输入到达城市:")
departure_date = input("请输入出发日期:")
train_no = input("请输入车次:")

# 构造登录链接
login_url = "https://www.12306.cn/mormhweb/login.html"

# 构造抢购链接
buy_url = "https://www.12306.cn/mormhweb/buyticket.html"

# 构造查询链接
query_url = "https://www.12306.cn/mormhweb/querytrain.html"

# 构造请求头
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3"
}

# 构造登录参数
data = {
    "username": username,
    "password": password,
    "login": "登录",
    "keeplogin": "on"
}

# 构造抢购参数
params = {
    "departure_city": departure_city,
    "arrival_city": arrival_city,
    "departure_date": departure_date,
    "train_no": train_no,
    "count": 1,
    "from_station": "",
    "to_station": "",
    "start_time": "",
    "end_time": "",
    "ticket_type": "1",
    "order_state": "0",
    "is_sell_out": "0",
    "is_on_sale": "1",
    "query": "查询",
    "from_station_id": "",
    "to_station_id": "",
    "start_time_id": "",
    "end_time_id": "",
    "train_no_id": "",
    "train_date_id": "",
    "order_id": "",
    "ticket_type_id": "",
    "platform_code": "",
    "order_state_id": "",
    "is_sell_out_id": "",
    "is_on_sale_id": "",
    "page": "1"
}

# 登录12306网站
response = requests.post(login_url, headers=headers, data=data)
response.encoding = "gbk"
soup = BeautifulSoup(response.text, "html.parser")
cookie = soup.find("input", {"name": "JSESSIONID"})["value"]

# 抢购火车票
while True:
    # 查询火车票信息
    response = requests.get(query_url, headers=headers, params=params)
    response.encoding = "gbk"
    soup = BeautifulSoup(response.text, "html.parser")
    ticket_info = soup.find("div", {"class": "info"}).text

    # 判断是否抢购成功
    if "抢票成功" in ticket_info:
        print("抢购成功!")
        break

    # 等待一段时间后再次尝试抢购
    print("抢购失败,等待一段时间后再次尝试。")
    time.sleep(random.randint(30, 60))

# 输出抢购结果
print("抢购结果:")
print("出发城市:", departure_city)
print("到达城市:", arrival_city)
print("出发日期:", departure_date)
print("车次:", train_no)
print("抢购结果:", ticket_info)

使用该脚本时,需要将登录信息、抢购信息输入到脚本中。脚本会在指定时间自动登录12306网站,并尝试抢购指定车次的火车票。抢购成功后,脚本会输出抢购结果。

目录
相关文章
|
NoSQL Redis Docker
【从零开始】Docker Desktop:听说你小子要玩我
本文旨在帮助读者重新掌握Docker知识,特别是在Windows 10环境下安装与使用Docker Desktop的过程。文章详细介绍了从下载安装到配置镜像源的具体步骤,并通过Redis实例演示了如何拉取镜像和启动容器。
10970 1
【从零开始】Docker Desktop:听说你小子要玩我
|
API Apache 数据库
Flink CDC 3.0 正式发布,详细解读新一代实时数据集成框架
Flink CDC 于 2023 年 12 月 7 日重磅推出了其全新的 3.0 版本 ~
110629 8
 Flink CDC 3.0 正式发布,详细解读新一代实时数据集成框架
|
存储 安全 数据挖掘
【工具】HxD Hex Editor 的安装、使用详细教程
【工具】HxD Hex Editor 的安装、使用详细教程
6201 0
|
人工智能 算法 Java
AI:互联网程序设计竞赛之蓝桥杯大赛的简介、奖项设置、大赛内容以及蓝桥杯与ACM(ICPC)的四个维度对比之详细攻略
AI:互联网程序设计竞赛之蓝桥杯大赛的简介、奖项设置、大赛内容以及蓝桥杯与ACM(ICPC)的四个维度对比之详细攻略
AI:互联网程序设计竞赛之蓝桥杯大赛的简介、奖项设置、大赛内容以及蓝桥杯与ACM(ICPC)的四个维度对比之详细攻略
|
Web App开发 JavaScript 前端开发
插件实现12306网站“按预填信息”自动抢票
年底抢票回家过年,12306的“按预填信息购票”功能却隐藏按钮,导致抢票困难。程序员发现按钮被CSS隐藏后尝试手动修改,但遇到自动恢复和确认窗口的问题。最终决定开发Chrome插件,通过监听页面按钮自动点击,实现一键抢票。该插件结构简单,包含manifest.json、popup.html等文件,能有效节省抢票时间。代码已开源至GitHub,供有需要的人参考使用。
1580 30
|
10月前
|
SQL 机器学习/深度学习 人工智能
从“写SQL”到“聊数据”:NL2SQL如何用自然语言解锁数据库?
本文系统性地阐述了自然语言转SQL(NL2SQL) 技术如何让非技术背景的业务分析师实现数据自助查询,从而提升数据驱动决策的效率与准确性。
从“写SQL”到“聊数据”:NL2SQL如何用自然语言解锁数据库?
|
Java 图形学 Python
用Python和Pygame打造绚丽烟花效果+节日祝福语
本文介绍了一款基于Python和Pygame库实现的烟花效果程序,模拟烟花发射、爆炸及粒子轨迹,结合动态文本显示祝福语,营造逼真的节日氛围。程序包括烟花类、粒子类、痕迹类和动态文本显示功能,通过随机化颜色、速度和粒子数量增加效果多样性。用户可以看到烟花从屏幕底部发射、上升并在空中爆炸,伴随粒子轨迹和动态祝福语“蛇年大吉”、“Happy Spring Festival”。文章详细解析了核心代码逻辑和技术要点,帮助读者理解如何利用Pygame库实现复杂视觉效果,并提供了未来改进方向,如优化性能、增加特效和增强交互性。
1464 20
用Python和Pygame打造绚丽烟花效果+节日祝福语
|
存储 Java 应用服务中间件
Java规则引擎Drools急速入门
Java规则引擎Drools急速入门
11397 0
Java规则引擎Drools急速入门
|
XML 前端开发 Java
Android App实战项目之实现手写签名APP功能(附源码,简单易懂 可直接实用)
Android App实战项目之实现手写签名APP功能(附源码,简单易懂 可直接实用)
1145 0