如何用Python requests获取Wooclap登录所需的Bearer Token?
解决Wooclap活动码登录获取Bearer Token的问题
核心排查步骤
- 完整抓包监控:打开浏览器开发者工具(F12)的Network标签,清空现有请求后重新输入活动码完成登录,全程追踪所有请求:
- 重点盯提交活动码的POST请求,检查响应头——Bearer Token可能藏在
Set-Cookie字段(比如wooclap_token这类键名),或是响应头的Authorization字段里。 - 若提交活动码的请求没返回Token,继续看登录后跳转的第一个请求,它的请求头里
Authorization: Bearer xxx就是目标Token,反向溯源这个Token的来源,大概率是之前某个请求的Cookie或响应头。
- 重点盯提交活动码的POST请求,检查响应头——Bearer Token可能藏在
- 必须用
requests.Session()维持会话:Wooclap依赖Cookie保持登录状态,单独的requests.get/post无法留存状态,用Session对象发送所有请求才能自动携带Cookie。
示例代码框架
import requests session = requests.Session() # 模拟浏览器UA,避免被拦截 session.headers.update({ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36", "Content-Type": "application/json" }) # 1. 提交活动码(替换为实际API端点和你的活动码) join_payload = {"code": "你的活动码"} join_response = session.post("https://www.wooclap.com/api/v2/sessions", json=join_payload) # 2. 提取Token的几种情况 # 情况1:Token在会话Cookie中 token = session.cookies.get("wooclap_token") # 替换为实际Cookie键名 if token: bearer_token = f"Bearer {token}" print(bearer_token) # 情况2:Token在响应头的Authorization字段 auth_header = join_response.headers.get("Authorization") if auth_header and auth_header.startswith("Bearer "): print(auth_header) # 情况3:发起登录后请求,从会话头中获取 if not token and not auth_header: # 示例:访问活动详情页触发会话自动带上Token activity_response = session.get("https://www.wooclap.com/api/v2/activities/你的活动ID") print(session.headers.get("Authorization"))
关键注意事项
- 不要忽略预检OPTIONS请求:如果遇到CORS报错,可能需要先给目标API端点发送OPTIONS请求,再提交活动码。
- 检查必填请求字段:部分场景下提交活动码需要
X-CSRF-Token,可从页面HTML的<meta name="csrf-token" content="xxx">提取,或是初始请求的Cookie中获取。
内容的提问来源于stack exchange,提问作者pataphyL
相关产品推荐
相关产品推荐

