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

使用Python requests模块登录Course Hero报错,求解决方案(仅学习用途)

问题排查&修复方案

现有代码的核心错误点

  • 提交数据格式不匹配:你在请求头指定了Content-Type: application/json,但代码里用data参数传参,requests会默认将其序列化为application/x-www-form-urlencoded格式,和头声明不一致,服务器无法正确解析提交的登录信息。
  • 没有维持会话状态:直接用requests.post发起请求不会自动保存登录返回的cookie凭证,哪怕登录成功,后续请求也无法带上身份信息,也没法验证登录状态。
  • 缺少必要的csrf校验参数:Course Hero登录流程要求提交从登录页面获取的csrf令牌,你没有提前请求登录页提取该参数,提交的请求会被服务器直接拦截。
  • 登录接口参数错误:你构造的data参数字段不符合Course Hero登录接口的实际要求,额外传入的url、submit字段属于冗余无效字段,反而会导致请求校验失败。

修复后的可运行代码

import requests
# 关闭SSL告警
requests.packages.urllib3.disable_warnings()

# 初始化会话,自动维护cookie
session = requests.Session()

headers = {
    'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36',
    'accept': 'application/json, text/javascript, */*; q=0.01',
    'x-requested-with': 'XMLHttpRequest',
    'content-type': 'application/json',
    'origin': 'https://www.coursehero.com',
    'referer': 'https://www.coursehero.com/login/',
}

# 第一步:先请求登录页面,提取csrf令牌
login_page_resp = session.get('https://www.coursehero.com/login/', headers=headers, verify=False)
# 从响应cookie中取csrf
csrf_token = session.cookies.get('csrftoken')
headers['x-csrftoken'] = csrf_token

# 第二步:构造正确的登录参数
login_data = {
    'email': '你的实际登录邮箱',
    'password': '你的实际登录密码',
    'remember': True
}

# 发起登录请求
login_resp = session.post(
    'https://www.coursehero.com/api/connect/',
    headers=headers,
    json=login_data, # 用json参数自动序列化,匹配content-type声明
    verify=False
)

# 验证登录结果
resp_json = login_resp.json()
if resp_json.get('success') == True:
    print("登录成功")
    # 后续请求直接用session.get/post即可带上身份凭证
else:
    print("登录失败,错误信息:", resp_json.get('message'))

额外注意事项

  • 所有操作请严格遵守Course Hero的用户协议和robots规则,仅用于合法学习用途。
  • 若登录触发人机验证,需要额外接入打码服务或手动处理验证码,无通用验证绕过方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 23:12:00