返回
12306 抢票实现原理:抓住关键参数,抢票不掉线
前端
2024-02-02 17:26:48
正文
在上篇文章中,我们详细分析了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("请求失败")
通过遵循这些步骤,你可以伪造你的数据并提高抢票成功率。祝你好运!