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

API请求浏览器可正常访问但curl调用被阻塞,求排查解决思路

排查curl调用Vattenfall API被阻塞的问题

排查线索

  • 请求头差异:浏览器会自动附带User-Agent、Accept、Referer等请求头,curl默认请求头极简,网站可能通过校验这些字段拦截非浏览器请求。用浏览器F12开发者工具捕获API请求的完整头信息,和curl默认请求头对比差异。
  • Cookie会话验证:浏览器访问时会生成会话Cookie,API可能依赖这些Cookie确认请求合法性,curl默认不会保存或发送Cookie,导致被拦截。
  • 反爬策略更新:网站近期可能升级了反爬机制,比如检测请求来源、调用频率,或增加了会话验证逻辑。
  • IP频率限制:若之前用curl高频调用,可能触发IP级别的访问限制,被临时封禁。

解决方案

  • 模拟浏览器请求头:复制浏览器捕获的请求头,用curl的-H参数逐一添加。示例:

    curl -i -X GET "https://www.vattenfall.se/api/price/spot/pricearea/2022-02-09/2022-02-15/SN3" \
    -H "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" \
    -H "Accept: application/json, text/plain, */*" \
    -H "Referer: https://www.vattenfall.se/elpriser/"
    

    注意:实际头信息以浏览器真实捕获的为准,尤其是User-Agent和Referer。

  • 携带会话Cookie:从浏览器Network面板复制API请求的Cookie,用-b参数传入curl:

    curl -i -X GET "https://www.vattenfall.se/api/price/spot/pricearea/2022-02-09/2022-02-15/SN3" \
    -b "SESSIONID=xxx; consent=xxx"
    

    也可先访问网站首页获取Cookie并保存,后续请求复用:

    # 获取并保存Cookie
    curl -c cookies.txt "https://www.vattenfall.se/elpriser/"
    # 使用Cookie调用API
    curl -i -X GET "https://www.vattenfall.se/api/price/spot/pricearea/2022-02-09/2022-02-15/SN3" -b cookies.txt
    
  • 缓解频率限制:若因高频调用被封,暂停请求一段时间,后续降低调用频率,添加随机延迟避免触发限制。

  • 处理JS渲染验证:如果网站要求必须通过JS渲染生成有效会话,可使用Puppeteer或Playwright这类工具模拟真实浏览器行为发起请求,替代curl。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 06:20:25