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

如何使用Python requests实现Coursera登录及登录状态验证

基于requests-html的Coursera登录及验证方案

Coursera登录接口采用/api/login/v3路径,请求格式为JSON,同时需要携带页面生成的CSRF令牌,完整实现步骤和代码如下:

完整实现代码

from requests_html import HTMLSession

# 替换为你自己的账号信息
USER_EMAIL = "你的登录邮箱"
USER_PASSWORD = "你的登录密码"
# 替换为你的目标课程地址
TARGET_COURSE_URL = "https://www.coursera.org/learn/course-i-am-enrolled-in/home/week/1"

with HTMLSession() as sess:
    # 1. 访问登录页并渲染动态内容
    login_page_resp = sess.get('https://www.coursera.org/?authMode=login')
    # 增加sleep参数确保动态元素加载完成,可根据网络情况调整时长
    login_page_resp.html.render(sleep=2)
    
    # 2. 提取CSRF令牌(存储在meta标签中)
    csrf_token = login_page_resp.html.xpath('//meta[@name="CSRF-Token"]/@content')[0]
    
    # 3. 构造登录请求头和请求体
    login_headers = {
        "Content-Type": "application/json",
        "X-CSRFToken": csrf_token,
        "Referer": "https://www.coursera.org/?authMode=login"
    }
    login_payload = {
        "email": USER_EMAIL,
        "password": USER_PASSWORD,
        "webrequest": True
    }
    
    # 4. 发送登录POST请求
    login_resp = sess.post(
        "https://www.coursera.org/api/login/v3",
        headers=login_headers,
        json=login_payload
    )
    
    # 5. 验证登录状态
    if login_resp.status_code == 200:
        print("登录请求提交成功,正在验证课程访问权限...")
        course_resp = sess.get(TARGET_COURSE_URL)
        if course_resp.status_code == 200:
            print("登录验证成功,可正常访问已开通课程")
        else:
            print(f"登录验证失败,课程页返回状态码:{course_resp.status_code}")
    else:
        print(f"登录请求失败,状态码:{login_resp.status_code},错误信息:{login_resp.text}")

注意事项

  • 若触发人机验证,代码会登录失败,此时需要先在浏览器手动完成一次登录,再复制浏览器的Cookie到会话中使用
  • 不要短时间内频繁发送登录请求,否则会被平台限制访问
  • 页面元素路径和接口路径可能随平台更新变化,若运行失败可先检查登录页的元素和接口是否有调整

内容的提问来源于stack exchange,提问作者watch-this

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 05:39:03