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

如何用R语言通过认证获取DraftKings的API响应?

问题:编程实现DraftKings登录并获取API响应

在浏览器中,登录https://myaccount.draftkings.com/login后,打开https://api.draftkings.com/scores/v1/leaderboards/9000?format=json&embed=leaderboard可查看API响应,需要通过编程实现这一流程。

此前曾用一个Python包完成该操作,但目前已失效,该包通过向登录API端点发送POST请求完成认证并保存Cookie供后续使用。

过往尝试及遇到的问题

1. 使用httr2发送POST登录请求

尝试向登录API发送POST请求,代码如下:

req <- httr2::request("https://api.draftkings.com/users/v3/providers/draftkings/logins?format=json") %>% 
  httr2::req_method("POST") %>% 
  httr2::req_headers(
    "Contest-Type" = "application/json",
    "Accept" = "*/*",
    "Accept-Encoding" = "gzip, deflate, br"
  ) %>% 
  httr2::req_body_json(
   list(
     "login" = "email",
     "password" = "password",
     "host" = "api.draftkings.com",
     "challengeResponse" = list("solution" = "", "type" = "Recaptcha")
   )
  )

req %>% 
  httr2::req_perform()

执行后收到403错误。

2. 使用rvest模拟表单登录

尝试用rvest模拟登录表单提交,代码如下:

library(rvest)

url <- "myaccount.draftkings.com/login"
session <- session(url)

form <- session %>%
  html_form() %>% 
  magrittr::extract2(1)

form$action <- url

filled_form <- form %>%
  html_form_set(!!! list(EmailOrUsername = "user",
                         Password = 'password'))

html_form_submit(filled_form, submit = 3)

session_jump_to(session, "https://www.draftkings.com/lobby")

未达到预期效果,且表单的action元素为空,手动设置后仍无法成功登录。

3. 使用浏览器Cookie通过httr发送GET请求

从已登录的浏览器会话中导出Cookie,用httr发送请求,代码如下:

cook <- jsonlite::read_json("cookies.json")

clean_cook <- unlist(lapply(cook, function(x) {stats::setNames(x$value, x$name)}))

resp <- httr::GET(
  "https://api.draftkings.com/scores/v1/leaderboards/9000?format=json&embed=leaderboard", 
  httr::set_cookies(.cookies = clean_cook)
)

httr::content(resp)

返回400错误,提示“Invalid userKey”,与清理浏览器缓存后访问该API链接的错误一致。

可行方案(更新)

通过httr2直接传递从浏览器导出的Cookie字符串,可成功获取API响应,代码如下:

cook <- jsonlite::read_json("cookies.json")

clean_cook <- paste0(unlist(lapply(cook, function(x) {paste0(x$name, "=", x$value)})), collapse = ";")

req <- httr2::request(
  "https://api.draftkings.com/scores/v1/leaderboards/9000?format=json&embed=leaderboard"
) 

req <- httr2::req_headers(req, "cookie" = clean_cook) 

resp <- httr2::req_perform(req)

str(httr2::resp_body_json(resp))

但目前仍存在疑问:httr::set_cookies()无法正常工作,使用httr::add_headers传递Cookie也无法稳定成功。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 06:55:56