返回

12306 抢票实现原理:抓住关键参数,抢票不掉线

前端

正文

在上篇文章中,我们详细分析了12306抢票算法的实现逻辑。现在是时候进一步了解如何伪造自己的数据,以便在不修改之前复现代码的基础上实现扩展。当然,你也可以直接在还原算法源码中写入伪造代码。

在构建请求/otn/HttpZF/logdevice时,关于参数algID经常性发生变化。因此,在构造数据时需要特别注意。

一、构造数据

首先,让我们来构造数据。

  • RAIL_DEVICEID:

    这是设备ID,可以通过各种方式获得。一种方法是使用你的浏览器或移动设备的调试工具来检查网络请求。另一种方法是使用模拟器来生成一个虚假的设备ID。

  • device_code:

    这是设备代码,可以通过你的浏览器或移动设备的调试工具来检查网络请求来获得。

  • OS_TYPE:

    这是操作系统类型,可以通过你的浏览器或移动设备的调试工具来检查网络请求来获得。

  • TOKEN:

    这是令牌,可以通过你的浏览器或移动设备的调试工具来检查网络请求来获得。

  • REPEAT_SUBMIT_TOKEN:

    这是重复提交令牌,可以通过你的浏览器或移动设备的调试工具来检查网络请求来获得。

二、发送请求

构造好数据后,就可以发送请求了。

  • URL:

    请求的URL是/otn/HttpZF/logdevice。

  • 方法:

    请求的方法是POST。

  • 数据:

    请求的数据是上面构造的数据。

  • Headers:

    请求的Headers包括:

    • Content-Type:application/x-www-form-urlencoded
    • 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

三、处理响应

发送请求后,你会收到一个响应。

  • 状态码:

    响应的状态码是200。

  • 数据:

    响应的数据是一个JSON对象。

四、伪造代码

现在,你可以使用这些信息来伪造你的数据。你可以使用任何编程语言来做到这一点。以下是一个用Python编写的示例:

import requests

# 构造数据
data = {
    "RAIL_DEVICEID": "你的设备ID",
    "device_code": "你的设备代码",
    "OS_TYPE": "你的操作系统类型",
    "TOKEN": "你的令牌",
    "REPEAT_SUBMIT_TOKEN": "你的重复提交令牌"
}

# 发送请求
response = requests.post("https://kyfw.12306.cn/otn/HttpZF/logdevice", data=data)

# 处理响应
if response.status_code == 200:
    json_data = response.json()
    print(json_data)
else:
    print("请求失败")

通过遵循这些步骤,你可以伪造你的数据并提高抢票成功率。祝你好运!