You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Node.js编写脚本高效获取Steam商店促销游戏完整列表

可行实现方案

1. 调用Steam商店内置的促销搜索接口

Steam页面滚动加载的本质是调用内部AJAX搜索接口,无需解析前端页面,直接请求该接口即可批量获取促销游戏数据,是当前效率最高的方案。

  • 接口核心参数:
    • specials=1:限定返回正在促销的内容
    • start:分页偏移量,默认单页返回50条,从0开始累加
    • count:单页返回数量,最高支持设置为100,可减少请求次数
    • cc:地区编码,如CN对应国区,确保拿到对应地区的促销价格
    • json=1:指定返回JSON格式数据,无需解析HTML
  • Node.js 调用示例:
const axios = require('axios');

// 拉取指定分页的促销游戏数据
async function fetchSteamSpecials(start = 0, count = 100, region = 'CN') {
  const response = await axios.get('https://store.steampowered.com/search/results', {
    params: {
      specials: 1,
      start,
      count,
      cc: region,
      filter: 'all',
      json: 1
    },
    headers: {
      'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36'
    }
  });
  return response.data;
}
  • 全量拉取逻辑:返回结果中包含total_count字段,循环调用接口直到start + count >= total_count即可拿到全部促销游戏,正常全量拉取仅需几十次请求,耗时不到1分钟。

2. 批量调用Steam应用详情接口优化查询效率

如果你已经有全量AppID列表,可调整为批量查询逻辑,无需逐个校验,效率可提升近200倍。

  • 接口核心参数:
    • appids:传入最多200个AppID,用英文逗号拼接
    • cc:地区编码,和上方逻辑一致
    • filters=price_overview:仅返回价格相关字段,大幅减少响应体积,提升请求速度
  • Node.js 调用示例:
const axios = require('axios');

// 批量查询最多200个应用的促销状态
async function batchCheckAppDiscount(appids = [], region = 'CN') {
  const response = await axios.get('https://store.steampowered.com/api/appdetails', {
    params: {
      appids: appids.join(','),
      cc: region,
      filters: 'price_overview'
    },
    headers: {
      'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36'
    }
  });
  // 过滤出正在促销的应用
  return Object.entries(response.data)
    .filter(([appid, data]) => data.success && data.data.price_overview?.discounted)
    .map(([appid, data]) => ({
      appid,
      discountPercent: data.data.price_overview.discount_percent,
      finalPrice: data.data.price_overview.final_formatted
    }));
}
  • 优化逻辑:将全量AppID按200个一组拆分,每组请求间隔设置为100~200ms避免触发频率限制,全量校验耗时可控制在5分钟以内。

注意事项

  • 所有请求添加模拟浏览器的User-Agent头,降低被Steam反爬拦截的概率
  • 控制请求频率,避免短时间大量请求导致IP被临时限制访问
  • 若需要跟踪特定分类的促销,可在搜索接口中额外添加对应分类参数过滤结果

内容的提问来源于stack exchange,提问作者guillaumearnx

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.19 04:06:03