—
| 区域 / 货币 | 本地售价 | 折扣 | 折合价 | 对比国区 |
|---|
第三方渠道 / 比价入口
下表给出各渠道的定位与直达链接。第三方的实际售价由卖家、券、CDKey 库存实时决定,无法在静态页面里抓取,需要点进对应渠道查看当前价格。
跨区与第三方购买提示:使用 VPN 伪造 IP 跨区购买、来源不明的低价 CDKey / 代购,可能导致礼物回收、账户限制或封禁。第三方平台折扣通常来自卖家余额与 CDKey,价格与安全程度取决于卖家。请优先选择官方商店或能正常退款的渠道,并自行评估风险。
部署到 Cloudflare Pages 或 GitHub Pages(含实时价格代理)
本页面是纯静态文件,直接托管即可运行。默认展示的是内置示例数据。Steam 官方价格接口不返回跨域响应头,浏览器无法直接请求,因此要显示实时各区价格,需要部署同目录下的 /functions/api/steam.js 代理(Cloudflare Pages Functions,免费)。汇率来自 open.er-api.com,支持跨域,无需代理。
方式一:Cloudflare Pages(含实时价格)
- 新建一个 Git 仓库,把本页文件放到根目录,并在
functions/api/下放入steam.js。 - Cloudflare Dashboard → Workers & Pages → Create → Pages → Connect to Git,选择该仓库。
- 构建配置留空:Build command 留空,Build output directory 填
/(或放网页的目录)。 - 部署完成后访问站点,点击表格上方「尝试获取实时价格」即可拉取 Steam 实时各区定价。
也可以不接 Git,直接用 Wrangler:
npm i -g wrangler wrangler pages deploy . --project-name steam-price-tool
方式二:GitHub Pages(纯静态,使用示例数据 / 手动模式)
- 新建仓库,推入
index.html。 - 仓库 Settings → Pages → Source 选
main分支、/ (root)。 - 等待 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 均无隶属关系,商标归各自所有者。