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

已传递Token至请求头,但使用httr和rvest抓取XHR数据失败

使用httr/rvest抓取Barchart XHR数据无输出的解决办法

问题排查与修复要点

  • XSRF-TOKEN提取优化:原代码用dplyr::recode的方式绕了弯路,直接从会话cookie中筛选目标字段更可靠。
  • 完整Cookie传递:仅在请求头加XSRF-TOKEN不够,服务器需要会话中的所有关联Cookie验证身份,必须将会话的Cookie集合传递给请求。
  • 响应内容解析:确保正确处理gzip压缩的响应,直接解析为JSON格式更高效。

修正后的代码

library(httr)
library(rvest)
library(dplyr)

# 建立会话并获取完整Cookie
s <- session("https://www.barchart.com/stocks/highs-lows/highs")

# 提取并解码XSRF-TOKEN
token <- s$response$cookies %>%
  filter(name == "XSRF-TOKEN") %>%
  pull(value) %>%
  URLdecode()

# 使用会话发送请求(自动携带所有Cookie),替代单独的GET请求
res <- session_get(s,
                   url = "https://www.barchart.com/proxies/core-api/v1/quotes/get",
                   add_headers(
                     Referer = "https://www.barchart.com/stocks/highs-lows/highs",
                     `Accept` = "application/json",
                     `Accept-Encoding` = "gzip, deflate",
                     `Connection` = "keep-alive",
                     `User-Agent` = "Mozilla/5.0 (X11; Linux x86_64; rv:108.0) Gecko/20100101 Firefox/108.0",
                     `X-XSRF-TOKEN` = token
                   ),
                   query = list(
                     lists = "stocks.us.new_highs_lows.highs.overall.1y",
                     fields = "symbol,symbolName,lastPrice,priceChange,percentChange,volume,highHits1y,highPercent1y,lowPercent1y,tradeTime,symbolCode,symbolType,hasOptions",
                     meta = "field.shortName,field.type,field.description,lists.lastUpdate",
                     hasOptions = "true",
                     page = "1",
                     limit = "100",
                     raw = "1"
                   )
)

# 直接解析为JSON对象(自动处理压缩)
data <- content(res, as = "parsed")
str(data)

关键改动说明

  1. Cookie提取简化:用dplyr的filter和pull直接定位XSRF-TOKEN,避免复杂的recode操作。
  2. 使用session_get发送请求:会话方法会自动携带之前建立的所有Cookie,无需手动拼接,确保服务器能识别会话身份。
  3. 响应解析优化:as = "parsed"会自动根据响应头处理gzip/deflate压缩,并直接解析为R列表/数据框,比先转文本再解析更高效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 22:40:40