Steam 全球区价比价

各区域定价 · 自动折算 · 第三方渠道入口

汇率:载入中… 价格数据:示例数据(非实时) 区域数: 更新:— 后台管理

区域 / 货币 本地售价 折扣 折合价 对比国区

第三方渠道 / 比价入口

下表给出各渠道的定位与直达链接。第三方的实际售价由卖家、券、CDKey 库存实时决定,无法在静态页面里抓取,需要点进对应渠道查看当前价格。

跨区与第三方购买提示:使用 VPN 伪造 IP 跨区购买、来源不明的低价 CDKey / 代购,可能导致礼物回收、账户限制或封禁。第三方平台折扣通常来自卖家余额与 CDKey,价格与安全程度取决于卖家。请优先选择官方商店或能正常退款的渠道,并自行评估风险。
部署到 Cloudflare Pages 或 GitHub Pages(含实时价格代理)

本页面是纯静态文件,直接托管即可运行。默认展示的是内置示例数据。Steam 官方价格接口不返回跨域响应头,浏览器无法直接请求,因此要显示实时各区价格,需要部署同目录下的 /functions/api/steam.js 代理(Cloudflare Pages Functions,免费)。汇率来自 open.er-api.com,支持跨域,无需代理。

方式一:Cloudflare Pages(含实时价格)

  1. 新建一个 Git 仓库,把本页文件放到根目录,并在 functions/api/ 下放入 steam.js
  2. Cloudflare Dashboard → Workers & Pages → Create → Pages → Connect to Git,选择该仓库。
  3. 构建配置留空:Build command 留空,Build output directory 填 /(或放网页的目录)。
  4. 部署完成后访问站点,点击表格上方「尝试获取实时价格」即可拉取 Steam 实时各区定价。

也可以不接 Git,直接用 Wrangler:

npm i -g wrangler
wrangler pages deploy . --project-name steam-price-tool

方式二:GitHub Pages(纯静态,使用示例数据 / 手动模式)

  1. 新建仓库,推入 index.html
  2. 仓库 Settings → Pages → Source 选 main 分支、/ (root)
  3. 等待 1–2 分钟,访问 https://<用户名>.github.io/<仓库名>/。GitHub Pages 不支持 Functions,实时价格按钮会失败并自动回退到示例数据。

函数代码(functions/api/steam.js)

// Cloudflare Pages Function:代理 Steam appdetails,返回各区 price_overview
const REGIONS = ["CN","HK","TW","US","GB","DE","FR","CH","PL","NO","RU","UA",
  "TR","AR","KZ","IN","BR","MX","JP","KR","ID","MY","PH","TH","VN","AU","CA","SG"];

export async function onRequestGet(context) {
  const { request } = context;
  const appid = new URL(request.url).searchParams.get("appid");
  if (!/^\d+$/.test(appid || "")) return json({ error: "invalid appid" }, 400);

  const regions = {};
  await Promise.all(REGIONS.map(async (cc) => {
    try {
      const r = await fetch(
        `https://store.steampowered.com/api/appdetails?appids=${appid}&cc=${cc}&l=schinese&filters=price_overview`,
        { headers: { "User-Agent": "Mozilla/5.0" } }
      );
      const d = await r.json();
      const node = d[appid];
      if (node && node.success) {
        regions[cc] = node.data.is_free ? { free: true } : (node.data.price_overview || null);
      }
    } catch (e) { /* 单个区域失败不影响整体 */ }
  }));

  return json({ appid, regions, fetchedAt: new Date().toISOString() }, 200,
    { "Cache-Control": "public, max-age=600" });
}

function json(obj, status = 200, extra = {}) {
  return new Response(JSON.stringify(obj), {
    status,
    headers: { "Content-Type": "application/json; charset=utf-8",
      "Access-Control-Allow-Origin": "*", ...extra }
  });
}

说明

  • Steam 官方接口有速率限制(约每 5 分钟 200 次请求),函数已做 10 分钟缓存,并支持在 Cloudflare 侧加缓存规则。
  • 阿根廷、土耳其区在 2023 年后由 Steam 改为以美元计价,页面按官方现状标注为 USD。
  • 「折合价」= 本地售价 ÷ 该货币汇率,再按所选折算货币显示,汇率为每日更新。
数据源:Steam Store API(各区 price_overview)· open.er-api.com(汇率)· SteamDB / 小黑盒 / SteamPY(第三方入口) 本页与 Valve、SteamDB、小黑盒、SteamPY 均无隶属关系,商标归各自所有者。