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

如何用curl访问带密码保护的Jupyter Lab API?

如何用Curl访问受密码保护的Jupyter Lab服务器API?

你之前方法的问题分析

  • 直接用密码哈希作为Authorization: token是错误的:Jupyter的API令牌是登录后生成的临时会话令牌,不是你配置文件里存储的密码哈希值。
  • Python代码中错误地用POST请求/api/status:这个接口是GET接口,POST请求会被拒绝。
  • 你的Curl脚本缺少XSRF令牌处理:Jupyter的登录请求需要携带XSRF令牌(从登录页面的cookie中获取),否则会返回403错误。

正确的Curl实现步骤

Jupyter Lab的登录需要处理XSRF令牌和会话Cookie,以下是完整的可执行脚本:

#!/bin/bash

# 配置参数
SERVER_URL="http://localhost:8888"  # 替换成你的Jupyter Lab地址
PASSWORD="your_jupyter_password"    # 替换成你的登录密码

# 1. 创建临时文件存储Cookie
TMP_COOKIE=$(mktemp)

# 2. 获取登录页面的XSRF令牌和初始Cookie
XSRF_TOKEN=$(curl -s -c "$TMP_COOKIE" "$SERVER_URL/login" | grep -o '_xsrf" value="[^"]*"' | cut -d '"' -f 4)

# 3. 提交登录请求,携带XSRF令牌和密码,更新Cookie
curl -s -b "$TMP_COOKIE" -c "$TMP_COOKIE" "$SERVER_URL/login" \
  -d "_xsrf=$XSRF_TOKEN" \
  -d "password=$PASSWORD"

# 4. 用已登录的Cookie访问API接口(比如/api/status)
curl -s -b "$TMP_COOKIE" "$SERVER_URL/api/status"

# 清理临时文件
rm "$TMP_COOKIE"

脚本说明

  • -c:将响应的Cookie写入指定文件
  • -b:发送请求时携带指定文件中的Cookie
  • 先访问/login页面获取_xsrf令牌和初始会话Cookie,这一步是必须的,因为Jupyter会验证XSRF令牌防止跨站请求
  • 登录请求需要同时携带_xsrf和password两个表单参数
  • 后续API请求只需要携带登录后的会话Cookie即可,不需要再重复提交密码或令牌

额外排查要点

  • 确认Jupyter Lab已启用API:默认情况下API是开启的,如果修改过配置文件jupyter_notebook_config.py,检查是否设置了c.NotebookApp.disable_check_xsrf = False(默认是False,开启XSRF验证)
  • 检查服务器地址和端口是否正确:确保SERVER_URL指向Jupyter Lab的实际访问地址,比如带端口号、正确的协议(http/https)
  • 如果你使用的是Jupyter Notebook而不是Lab,路径是一样的,脚本通用
  • 如果登录后仍然返回403,检查Cookie是否正确保存,或者尝试清空临时文件重新运行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 18:33:31