Source Code that Powers the CSFloat Inspect Link API
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 3 年前 | ||
| 1 年前 | ||
| 7 年前 | ||
| 9 年前 | ||
| 7 年前 | ||
| 3 年前 | ||
| 9 年前 | ||
| 5 个月前 | ||
| 3 年前 | ||
| 7 年前 | ||
| 3 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 1 年前 |
已弃用
自2026年3月起,所有CS2检视链接均自行编码物品详情,请使用@csfloat/cs-inspect-serializer等库。
仓库链接
目录
API
GET /
参数 s、a、d、m 可在 CSGO 物品的检视链接中找到。
| 参数 | 说明 |
|---|---|
| s | 可选:如果是库存物品,从检视 URL 中填写此参数 |
| a | 必填:检视 URL 中的 "a" 参数 |
| d | 必填:检视 URL 中的 "d" 参数 |
| m | 可选:如果是市场物品,从检视 URL 中填写此参数 |
示例
http://<ip>:<port>/?m=563330426657599553&a=6710760926&d=9406593057029549017
http://<ip>:<port>/?s=76561198084749846&a=6777992090&d=3378412659870065794
GET /(使用检视 URL)
| 参数 | 说明 |
|---|---|
| url | 必填:CSGO 物品的检视 URL |
示例
http://<ip>:<port>/?url=steam://rungame/730/76561202255233023/+csgo_econ_action_preview%20S76561198084749846A698323590D7935523998312483177
http://<ip>:<port>/?url=steam://rungame/730/76561202255233023/+csgo_econ_action_preview%20M625254122282020305A6760346663D30614827701953021
响应
本 API 的响应基于 此 CSGO protobuf。
| 属性 | 数据类型 | 说明 |
|---|---|---|
| itemid | uint32 | 物品 ID |
| defindex | uint32 | 武器 ID |
| paintindex | uint32 | 武器的涂装 ID(皮肤) |
| rarity | uint32 | 武器的稀有度值 |
| quality | uint32 | 武器的品质 |
| paintwear | uint32 | 皮肤外观的磨损度 |
| paintseed | uint32 | 用于定义皮肤纹理放置方式的随机数生成器种子 |
| killeatervalue | uint32 | 如果物品是 StatTrak( stattrak™),则此为击杀数量 |
| customname | string | 如果物品有名称标签,则此为自定义名称 |
| stickers | array | 包含贴纸放置数据 |
| origin | uint32 | 武器的来源 ID |
| floatvalue | float | 皮肤外观磨损度的浮点表示 |
| imageurl | string | 可选:物品图片 |
| min | float | 皮肤的最小磨损度 |
| max | float | 皮肤的最大磨损度 |
| item_name | uint32 | 可选:皮肤名称 |
| weapon_type | string | 武器类型名称 |
| origin_name | string | 来源名称(如:交易升级、掉落等) |
| quality_name | string | 品质名称(如:纪念品、StatTrak 等) |
| rarity_name | string | 稀有度名称(如:隐秘、军规级等) |
| wear_name | string | 磨损度名称(如:崭新出厂、略有磨损等) |
| full_item_name | string | 物品全称(例如:SSG 08 |
{
"iteminfo": {
"accountid": null,
"itemid": "13874827217",
"defindex": 7,
"paintindex": 282,
"rarity": 5,
"quality": 4,
"paintseed": 361,
"killeaterscoretype": null,
"killeatervalue": null,
"customname": null,
"stickers": [],
"inventory": 11,
"origin": 8,
"questid": null,
"dropreason": null,
"musicindex": null,
"s": "0",
"a": "13874827217",
"d": "4649025583329100061",
"m": "2608048286785948758",
"floatvalue": 0.22740158438682556,
"imageurl": "http://media.steampowered.com/apps/730/icons/econ/default_generated/weapon_ak47_cu_ak47_cobra_light_large.7494bfdf4855fd4e6a2dbd983ed0a243c80ef830.png",
"min": 0.1,
"max": 0.7,
"weapon_type": "AK-47",
"item_name": "Redline",
"rarity_name": "Classified",
"quality_name": "Unique",
"origin_name": "Found in Crate",
"wear_name": "Field-Tested",
"full_item_name": "AK-47 | Redline (Field-Tested)"
}
}
POST /bulk
允许您一次性请求多个物品的检查链接数据。
注意:确保发送正确的 Content-Type: application/json 头信息
请求体:
{
"links": [
{"link": "steam://rungame/730/76561202255233023/+csgo_econ_action_preview%20M2906459769049600931A18971892678D9403672490970763167"},
{"link": "steam://rungame/730/76561202255233023/+csgo_econ_action_preview%20M2907585668964658722A17231546984D5353704955732169451"}
]
}
示例响应:
{
"18971892678": {
"origin": 8,
"quality": 4,
"rarity": 5,
"a": "18971892678",
"d": "9403672490970763167",
"paintseed": 49,
"defindex": 7,
"paintindex": 282,
// STUB...
},
"17231546984": {
"origin": 4,
"quality": 4,
"rarity": 4,
"a": "17231546984",
"d": "5353704955732169451",
"paintseed": 597,
"defindex": 9,
"paintindex": 838,
// STUB...
},
...
}
GET /stats
提供有关您的机器人和队列当前状态的一些数据。
示例:
{"bots_online":100,"bots_total":100,"queue_size":20,"queue_concurrency":100}
错误
错误代码
| 代码 | 描述 |
|---|---|
| 1 | 参数结构不正确 |
| 2 | 检查链接结构无效 |
| 3 | 您一次只能有 X 个待处理请求 |
| 4 | Valve 服务器未及时回复 |
| 5 | Valve 服务器似乎处于离线状态,请稍后再试! |
| 6 | 我们这边出了点问题,请重试 |
| 7 | 请求体格式不正确 |
| 8 | 密钥错误 |
错误示例
{
"error": "Valve's servers didn't reply in time",
"code": 4
}
如果使用 /bulk 请求,且错误仅适用于特定的 inspect link,则该 inspect link 返回的响应将被替换,而其他 inspect link 将正常处理。如果错误适用于整个请求(例如,错误的请求体),则会返回如上所示的根级错误。
示例:
{
"18971892678": {
"origin": 8,
"quality": 4,
"rarity": 5,
"a": "18971892678",
"d": "9403672490970763167",
"paintseed": 49,
"defindex": 7,
"paintindex": 282,
// STUB...
},
"16231546984": {
"error": "Valve's servers didn't reply in time",
"code": 4,
"status": 500
}
}
安装方法
要通过这种方式获取武器的磨损值,您必须拥有至少一个已购买 CS:GO 的 Steam 账号。每个账号每秒可请求 1 次磨损值。CSGOFloat 允许您通过在 config.js 中输入登录信息来添加任意数量的机器人账号。
每个 CSGOFloat 实例可运行约 300 个账号。建议配置 Postgres 服务器,或在服务器前设置 Varnish 或 Nginx 等其他缓存。
Docker
从 Docker 拉取 镜像 并挂载配置目录
docker pull step7750/csgofloat:master
docker run -d --name csgofloat -v /host/config:/config -p 80:80 -p 443:443 step7750/csgofloat:master
首次启动 docker 容器时,它会将 config.js 文件复制到配置目录并停止。你需要编辑此文件,填入机器人的登录信息,然后重新启动 docker。有关更多信息,请参阅如何首次登录机器人部分。
确保你已配置好用于缓存的 Postgres 服务器!
手动部署
需要 Node.js v14 或更高版本!
克隆仓库(或执行 npm install csgofloat),然后在根目录中使用 npm install 或 yarn install 安装 Node.js 依赖。
步骤:
- 将
config.example.js复制为config.js - 在
config.js中添加你的机器人登录信息 - 编辑
config.js以设置所需参数 - 如果你已设置数据库 URL,请确保 Postgres 正在运行
- 在主目录中运行
node index.js - 如何首次登录机器人
- 导航到服务器所在的 IP,并使用上述文档查询 API!
如何首次登录机器人
注意:如果机器人从未登录过 Steam 客户端,且未启用手机二次验证(新账户),你只需输入用户名和密码,无需邮箱二次验证即可成功登录。
如果你的机器人未拥有《反恐精英:全球攻势》(CS:GO),CSGOFloat 会在启动时自动尝试获取其许可证。
-
使用邮箱二次验证
- 只需填写机器人的
user和pass字段(确保auth字段为空或已删除) - 启动 CSGOFloat
- 系统会提示已向你的邮箱发送验证码
- 将邮箱中的验证码输入到机器人的
auth字段 - 重新启动 CSGOFloat
- 机器人应成功登录,并在当前的 node-steam-user 配置目录 中为每个账户创建机器授权令牌文件
- 后续登录时,
auth字段可选择删除
- 只需填写机器人的
-
使用手机二次验证
- 填写机器人的
user和pass字段 - 在
auth字段中填写机器人的shared_secret - 启动 CSGOFloat
- 机器人应成功登录,并在当前的 node-steam-user 配置目录 中为每个账户创建机器授权令牌文件
- 未来登录时,
auth字段需保持填写状态
- 填写机器人的
重大变更
v3.0 -> v4.0
- 不再支持 MongoDB,请改用 Postgres
- 不再支持 Socket.io 访问
- 已移除内置 HTTPS 处理,请反向代理至 HTTP
v2.0 -> v3.0
- 由于我们现在使用 node-steam-user 而非 node-steam,sentry 文件夹位置现在取决于您的系统。如果您希望从 v2.0 迁移 sentry 文件,而不必重新验证启用邮箱两步验证的账户,您需要复制 sentry 文件并将其重命名以匹配 node-steam-user 的格式
allow_simultaneous_requests现已替换为max_simultaneous_requests。您可以将max_simultaneous_requests设置为-1,以允许同一 IP 进行无限数量的并发请求
参数
-c/--config(默认 ./config.js)
CSGOFloat 配置文件位置
-s/--steam_data(默认 node-steam-user 配置目录)
node-steam-user 配置目录