Skip to content

KrOik/whereIsMybed

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

自动化资源监控工具

一个用于自动化监控和获取受限资源的Python工具,适用于高并发场景下的资源分配系统。 This is to solve the problem where students can't compete with others when booking a specific type of accommodation in XEC dormitories, such as 4‑person rooms. That's why I made a Python program that automatically sends requests. It was tested in practice last year and proven to work.

项目简介

本项目是一个网络自动化工具,主要用于监控资源可用状态并在资源可用时自动发起请求。适用于需要定时查询和快速响应的在线资源分配场景。

典型应用场景

  • 有限资源的在线分配
  • 高并发场景下的自动化监控
  • 需要快速响应的状态查询

项目结构

项目目录/
├── dev.py              # 基础版本脚本
├── test.py             # 增强版本(推荐使用)
├── config.txt          # 配置文件
├── .gitignore          # Git忽略配置
├── README.md           # 本说明文档
└── archive/            # 归档文件
    ├── logs/           # 历史运行日志
    └── docs/           # 技术文档

快速开始

1. 环境准备

确保已安装 Python 3.7 或更高版本,并安装必要的依赖:

pip install requests

2. 配置认证信息

编辑 config.txt 文件,填入以下信息:

ACCESS_TOKEN=你的访问令牌
COOKIES=你的会话信息
SECKILL_ID=活动标识符

如何获取这些信息?

访问目标网站并登录,然后:

  1. F12 打开浏览器开发者工具
  2. 切换到 Network(网络)标签
  3. 刷新页面,观察网络请求
  4. 找到任意一个请求,查看请求头(Request Headers)
  5. 复制 x-access-tokenCookie 的值

3. 运行脚本

# 基础版本
python dev.py

# 增强版本(推荐)
python test.py

4. 监控运行

程序启动后会自动:

  • 定时查询资源状态(随机间隔8-12秒)
  • 检测资源可用性(status=0表示可用)
  • 发现可用资源时自动发起请求
  • 记录所有操作到日志文件

功能特性

dev.py - 基础版本

  • 多目标并发查询
  • 自动检测资源可用性
  • 双次请求机制提高成功率
  • 详细的日志记录

test.py - 增强版本 ⭐推荐

  • 令牌有效期检测 - 自动验证访问令牌是否过期
  • 智能重试机制 - 网络失败自动重试3次
  • 完善的错误处理 - 捕获并记录各种异常
  • 请求频率控制 - 防止触发服务端限制
  • 随机延迟策略 - 模拟人工操作模式

配置说明

config.txt 参数说明

参数 类型 必需 说明
ACCESS_TOKEN String Web应用的访问令牌,通常为JWT格式
COOKIES String 浏览器会话信息,包含认证数据
SECKILL_ID String 目标活动的唯一标识符

目标配置

程序默认监控多个目标区域,可在代码中修改 FLOOR_IDS 字典来自定义监控范围。

技术实现

核心功能

  1. HTTP请求处理

    • 使用 requests 库发送POST请求
    • 自定义请求头模拟浏览器行为
    • Cookie管理保持会话状态
  2. 数据解析

    • JSON格式数据处理
    • 嵌套结构遍历查找目标
    • 条件筛选可用资源
  3. 程序健壮性

    • Try-except异常捕获
    • 指数退避重试策略
    • 超时控制防止阻塞
  4. 最佳实践

    • 配置与代码分离
    • 详细的日志记录
    • 模块化代码结构

请求流程

启动 → 加载配置 → 验证令牌 → 循环查询 → 检测可用性 → 发起请求 → 记录结果

常见问题

Q: 提示"访问令牌已过期"怎么办?

A: 访问令牌有有效期限制(通常数小时到数天),过期后需要重新获取:

  1. 重新登录目标网站
  2. 按上述方法获取新的令牌
  3. 更新 config.txt 文件中的 ACCESS_TOKEN

Q: 程序一直显示"没有可用资源"?

A: 这可能是因为:

  • 确实没有可用资源(被其他人抢先)
  • 配置信息错误导致查询失败
  • 网络连接问题

建议检查:

  • 查看日志文件了解详细错误信息
  • 确认配置信息是否正确
  • 测试网络连接是否正常

Q: 如何提高成功率?

A: 几个建议:

  • 使用 test.py 增强版本
  • 保持网络连接稳定
  • 在资源开放时段提前运行程序
  • 不要过度调整请求频率(可能触发限制)

Q: 可以调整请求频率吗?

A: 可以修改代码中的 time.sleep() 参数,但请注意:

  • 频率过高可能触发服务端限制或封禁
  • 频率过低可能错过资源
  • 建议保持默认设置(已优化平衡点)
  • 遵守目标网站的使用条款

Q: 程序会被检测到吗?

A: 程序已包含以下特性降低检测风险:

  • 随机请求间隔(模拟人工操作)
  • 完整的浏览器请求头
  • 请求频率控制
  • 但仍建议合理使用,避免过度自动化

项目特色

教育价值

  • 学习Python网络编程
  • 理解HTTP协议和Web认证
  • 掌握自动化和爬虫技术
  • 了解并发和异步概念

代码质量

  • 结构清晰,易于理解
  • 详细的错误处理
  • 完善的日志记录
  • 可扩展的架构设计

实用性

  • 可适配类似场景
  • 模块化设计便于修改
  • 配置灵活
  • 开箱即用

技术栈

  • Python 3.7+: 主要编程语言
  • requests: HTTP客户端库
  • urllib3: 底层网络库(重试机制)
  • json: 数据格式处理
  • base64: JWT令牌解码

安全与合规

重要提示

⚠️ 使用前请务必了解:

  1. 服务条款 - 使用前请阅读并遵守目标网站的服务条款
  2. 合理使用 - 不要过度请求或滥用自动化工具
  3. 账号安全 - 妥善保管你的认证信息,不要泄露给他人
  4. 法律合规 - 确保你的使用方式符合当地法律法规

安全建议

  • ✅ 不要将 config.txt 提交到公开仓库
  • ✅ 定期更换访问令牌
  • ✅ 使用专用的测试账号
  • ✅ 监控程序运行状态,及时停止异常行为

学习资源

如果你想深入学习相关技术:

已知限制

  1. 令牌时效 - 需要定期更新访问令牌
  2. 网络依赖 - 需要稳定的网络连接
  3. 竞争条件 - 多用户同时抢夺同一资源时成功率会降低
  4. 服务限制 - 目标网站可能有反自动化措施

扩展建议

如果你想改进这个项目:

  1. 添加通知功能 - 成功时发送邮件或消息通知
  2. 图形界面 - 开发GUI版本,提供可视化操作
  3. 多账户支持 - 支持同时监控多个账户
  4. 智能调度 - 根据历史数据预测最佳时间
  5. 代理池 - 使用代理避免IP限制

免责声明

本项目仅用于技术学习和研究目的。使用者应当:

  • ✅ 遵守目标网站的服务条款和使用协议
  • ✅ 尊重服务提供方的规则和限制
  • ✅ 合理、适度地使用技术能力
  • ✅ 自行承担使用本工具的所有责任

作者不对因使用本代码产生的任何后果负责,包括但不限于:

  • 账号被封禁
  • 资源获取失败
  • 违反服务条款
  • 其他直接或间接损失

许可证

本项目采用 MIT 许可证,仅供学习和参考。

更新日志

v2.0 (2026-03-06)

  • ✅ 优化配置文件管理
  • ✅ 添加安全保护措施
  • ✅ 完善项目文档
  • ✅ 代码重构优化
  • ✅ 增强错误处理

v1.0

  • 初始版本发布
  • 基础功能实现

项目性质: 教育演示 / 技术研究
适用场景: Python Web自动化学习
技术领域: 网络编程 / 自动化 / 数据抓取
最后更新: 2026-03-06

About

Find your bed when you need to move to XEC

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages