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

使用Python Requests爬取App Store Connect财务报告遇CSRF错误

解决App Store Connect爬取时的CSRF Token错误

你当前的代码直接POST登录请求,跳过了获取登录页面CSRF Token的步骤,导致登录验证失败,后续请求无法获取到X-CSRF-Token Cookie,触发KeyError。以下是具体解决思路和修正后的代码:

错误原因

App Store Connect的登录页面会在返回的HTML中嵌入CSRF Token,同时设置必要的会话Cookie,直接提交账号密码会因为缺少这些验证信息被拒绝,会话无法正常建立,自然拿不到后续API需要的X-CSRF-Token。

解决步骤

  • 先发送GET请求到登录页面,获取页面中的CSRF Token和会话Cookie
  • 将CSRF Token加入登录表单数据中,再发送POST请求完成登录
  • 登录后确认会话状态,请求API时携带正确的Cookie和必要请求头

修正后的代码

import requests
from bs4 import BeautifulSoup

username = "my_username"
password = "my_password"
app_id = "my_app_id"

login_url = "https://appstoreconnect.apple.com/login"
report_url = f"https://analytics.itunes.apple.com/analytics/api/v1/data/app/{app_id}/metrics/downloads?measure=UNITS&group=DAY&start_date=2023-01-01&end_date=2023-04-27"

session = requests.Session()

# 1. 获取登录页面的CSRF Token和Cookie
login_page = session.get(login_url)
soup = BeautifulSoup(login_page.content, "html.parser")
csrf_token = soup.find("meta", attrs={"name": "csrf-token"})["content"]

# 2. 构造登录数据并完成登录
login_data = {
    "accountName": username,
    "password": password,
    "csrf": csrf_token
}
login_response = session.post(login_url, data=login_data, allow_redirects=True)

# 验证登录状态(可选)
if login_response.status_code != 200:
    print(f"登录失败,状态码:{login_response.status_code}")
    exit()

# 3. 请求报表API,添加必要请求头
headers = {
    "X-Requested-With": "XMLHttpRequest",
    "X-CSRF-Token": session.cookies.get("X-CSRF-Token")
}

report_response = session.get(report_url, headers=headers)
if report_response.status_code == 200:
    # API返回JSON格式数据,直接解析
    report_data = report_response.json()
    print(report_data)
else:
    print(f"请求报表失败,状态码:{report_response.status_code}")
    print("响应内容:", report_response.text)

额外提示

  • 如果账号开启了双重认证,需要额外处理验证码逻辑,上述代码仅适用于未开启双认证的账号
  • App Store Connect有反爬机制,若遇到403错误,可添加User-Agent头模拟真实浏览器请求
  • 长期使用建议优先考虑官方提供的App Store Connect API(基于JWT认证),比爬虫更稳定可靠

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 09:02:43