SteamTradingSiteTracker 自动追踪四平台挂刀比例:5 分钟部署 Steam 挂刀行情站
【免费下载链接】SteamTradingSiteTrackerSteam 挂刀行情站 —— 24小时更新的 BUFF & IGXE & C5 & UUYP & ECO 挂刀比例数据 | Track cheap Steam Community Market items on buff.163.com, igxe.cn, c5game.com, youpin898.com and ecosteam.cn.项目地址: https://gitcode.com/GitHub_Trending/st/SteamTradingSiteTracker
晚上十一点,你想把一把刀挂出去,但 BUFF、C5、UUYP 和 Steam 市场四个页面给出的价格互不相同,还要手动扣掉 Steam 5% 加发行商 10% 的手续费才知道哪边最划算——逐个平台查一遍,十分钟过去了,行情也变了。开源项目 SteamTradingSiteTracker(Steam 挂刀行情站)就是替你干这件事的:它 24 小时轮询 BUFF、IGXE、C5、UUYP 四个平台约 6.4 万个 CSGO 与 DOTA2 饰品的挂单,重点饰品约 10 分钟刷新一次,直接给出扣除手续费后的挂刀比例。你只需要看一个数字,省掉的是手动比价和心算手续费的整个环节。
这个项目到底在替你做什么
整条链路是四个 Python 模块加两个存储节点,代码都放在 scripts/ 目录下:
- 元数据层:
start_meta_crawler.py带上平台 cookie 去 BUFF、IGXE、C5、UUYP 和 Steam Market 拉取饰品列表,把同一个饰品在五个市场的 ID 对齐后写进 MongoDB 的 meta 集合,元数据有效期 14 天,到期自动重爬。 - 调度层:
start_task_mapper.py先做增量同步(新上架的饰品建条目、已下架的删条目),然后按上一轮算出的weighted_ratio把所有饰品分成三档——前 10%、10%~30%、其余——每档挑最久没更新的 600 个生成抓取任务,塞进 Redis 任务池,在途任务上限 800。也就是说,比例越低、越冷门的饰品,被翻牌的频率越高。 - 抓取层:
start_data_fetcher.py起 4 个并行工作进程,走代理按固定顺序请求:先查 Steam 市场 24 小时成交量,再拉买卖订单簿,最后抓四个平台的挂单数据。某个饰品缺哪个平台的 ID,任务里就自动不含哪一步。 - 计算层:
start_result_collector.py拿到完整结果后,把 24 小时成交不足 2 笔的饰品直接标记跳过;其余按挂单深度取每个平台的"最优价/稳妥价"(8 元以上取第 1、第 3 低挂单,8 元以下取前 10 挂单均价),反推 Steam 侧实际到手金额,算出"买/卖/交易 × 最优/稳妥"共 6 种口径的挂刀比例,再用0.4×买入 + 0.2×卖出 + 0.4×交易加权回写优先级——和调度层形成闭环。
上图:从 Proxy Source、Meta Crawler、Data Crawler、Task Pool(Redis)到 Data/Meta 两个 MongoDB 集合的完整数据流,右侧 Django 与微信小程序从 Data 集合读取 price、ratio、age 做展示
5 分钟跑起来
环境要求:Python 3.8+、本机可连的 MongoDB 和 Redis、一个可用的 HTTP 代理池,以及 BUFF、C5、UUYP 三个平台的登录 cookie。
第 1 步,拉代码:
git clone https://gitcode.com/GitHub_Trending/st/SteamTradingSiteTracker cd SteamTradingSiteTracker第 2 步,填配置。打开 scripts/database.py,把MONGODB_PORT和REDIS_PORT改成你的实际端口;把三段 cookie 分别写进 scripts/secrets/ 下的buff_cookie.txt、c5_cookie.txt、uuyp_cookie.txt(断言会检查 session/C5Login/Bearer 关键字,格式不对会直接报错);再实现scripts/utils.py里的load_proxies,返回形如"127.0.0.1:1234"的代理列表。
第 3 步,按依赖顺序起四个进程:
python scripts/start_meta_crawler.py python scripts/start_task_mapper.py python scripts/start_data_fetcher.py python scripts/start_result_collector.pymeta 爬一轮后,任务池开始灌任务,collector 每 10 秒扫一次完成任务落库。跑完一个完整周期(重点饰品约 10 分钟),MongoDB 的 data 集合里就能查到带weighted_ratio和各平台比例字段的记录。
三种典型用法
行情主页示例:左侧行情摘要给出当前挂刀指数,表格按"最优挂刀比例"排序,每一行都能看到四个平台的参考价和 Steam 挂单
第一次买刀的收藏玩家——你不需要懂套利,只需要避免买贵:
- 按平台筛选后对比同一个饰品在四家的
最优购买比例,挑最低的平台挂单吃单; - 先看日成交额那一列,个位数的直接放弃,成交不活跃的饰品挂单价不代表真实市场价;
- 把 Steam 市场的买卖单头和平台价放在一起看,确认差价不是手续费吃出来的假象。
盯卖出窗口的商人——目标是手续费之后实际到手最多的那个平台:
- 用"卖出比例"排序而不是裸价排序,它已经把 15% 的手续费反算进去了;
- 结合"稳妥卖出比例"(第 3 低挂单口径)设心理价位,比盯最低价挂单更不容易砸手里;
- 关注"近期成交比例"——以 Steam 市场 24 小时成交中位数成交的口径,反映的是流动性好的真实走货价,适合判断当前是出货窗口还是观望窗口。
批量跑数据的工作室——把数据库当原料用:
- 直接查询 data 集合导出全量比例字段,本地执行你自己的筛选规则(比如比例 < 0.8 且日成交 > 100 笔);
- 对选出的池子连续观察多轮
weighted_ratio变化,验证价差是持续存在还是单次挂单噪声; - 用 12 小时一份的 DataDumps 存档做回测,统计你这条筛选规则在历史上的命中率,再决定下单频率。
让数据更准更快的调优项
| 调优项 | 位置 | 作用与取舍 |
|---|---|---|
| 代理池 | scripts/utils.py的load_proxies | 采集成功率的直接来源;Steam 订单接口限流最严,最吃代理质量 |
| 抓取并发 | start_data_fetcher.py的N_PROCESSES(默认 4) | 调高可加快清空任务池,过高容易触发平台风控 |
| 单请求超时 | 同文件TIMEOUT(默认 12 秒) | 调低对烂代理更敏感,但慢请求会拖长整个任务 |
| 单品重试上限 | 同文件N_TRIALS(默认 80) | 失败超过次数的饰品会被移出任务池,等下一轮调度 |
| 在途任务上限 | start_task_mapper.py里的 800 阈值 | 控制整体吞吐,机器弱就调小 |
| 流动性门槛 | fetcher 与 collector 里count_in_24 < 2的判断 | 调低可覆盖长尾饰品,但请求量和低质比例会一起上升 |
另外提醒一点:cookie 是有生命周期的,start_meta_crawler.py启动时只校验格式不校验时效,过期 cookie 表现为整轮抓取静默失败,需要定期更换。
遇到问题先看这里
数据停更或更新变慢① 看 loguru 日志里每条记录的age(该饰品距上次成功更新的时长),普遍变大说明抓取端出了问题;② 换一批代理测load_proxies的输出,确认代理池没有整体失效;③ 检查三个 cookie 文件是否过期。
某个平台挂单列表为空、比例显示为极低值平台返回 404 通常意味着该饰品没在这个平台挂单,collector 会把对应价格置为 9999999,这是数据里的正常状态而非故障。只有当同一个平台对所有饰品都为空时,才需要查 cookie 或接口格式。
比例和手算对不上先确认口径:挂刀比例的分母是"Steam 侧扣除 5% Steam 手续费 + 10% 发行商手续费后的实际到手价",由utils.py的calculate_after_fee反推;再确认比较的是"最优"还是"稳妥"价(高价款两者差一档挂单)。口径一致后再有偏差,才需要怀疑原始挂单数据。
历史数据能读出什么
项目维护了两份可公开获取的历史数据:DataDumps 是从 2022-04-25 起每 12 小时存一份的 Priority 数据库完整存档;SteamBuffSnapshot 是 2022-02-14 期间 BUFF 平台 DOTA2 与 CSGO 全部饰品价格连同 Steam Market 数据的快照,附带一个基于历史数据反推低比例饰品池筛选规则的 demo。
上图:挂刀指数在 1%~50% 分位上的走势,横轴覆盖 2022 年 5 月至 2023 年 11 月
从这份历史数据里能读出三条规律:
- 指数有明显的周期节奏:整体从约 0.75 爬升到 0.95 附近,2023 年 5 月见一波高峰,9 月再冲高后于 11 月快速回落至 0.72 一线——大盘同涨同跌,批量操作择时比挑单品更重要。
- 分位差长期存在:1% 分位与 50% 分位的线常年拉开约 0.05~0.1 的距离,说明任意时点都存在一批比例显著偏低(对买家便宜)的饰品,筛选规则是有用武之地的。
- 波动集中在个别时段:大部分月份各分位线贴得较近,急涨急跌只出现在少数窗口,这意味着"平时攒池子、窗口期集中出手"的策略比全天候高频操作更符合数据表现。
接下来你可以做什么
仓库侧还发布了两份配套资产:DOTA2 与 CS2 饰品在 Steam Market 与第三方平台之间的 ID 映射表,以及一份用于无监督识别机器人流量的价格数据集,做筛选或风控脚本的人可以直接取用。
给你两个具体的下一步:
- 按上文三步把四个进程跑通一个完整周期,然后抽查 data 集合里几条
weighted_ratio的记录,和站点页面展示核对一致,确认链路没有配错; - 取几份 12 小时的 DataDumps 存档,写一条属于自己的筛选规则(例如
最优交易比例 < 0.8 且日成交 > 100),回测它过去三个月的命中表现,再决定要不要把它接进日常盯盘流程。
【免费下载链接】SteamTradingSiteTrackerSteam 挂刀行情站 —— 24小时更新的 BUFF & IGXE & C5 & UUYP & ECO 挂刀比例数据 | Track cheap Steam Community Market items on buff.163.com, igxe.cn, c5game.com, youpin898.com and ecosteam.cn.项目地址: https://gitcode.com/GitHub_Trending/st/SteamTradingSiteTracker
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考