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

Google Colab使用Requests下载NASA Earthdata遇401鉴权失败及.netrc配置求助

Colab环境下NASA Earthdata GPM数据下载401鉴权报错的解决方法
  • 首先解决.netrc文件不被识别的核心问题:
    Colab默认的用户主目录为/root,Requests库只会自动读取该目录下权限合规的.netrc文件。如果之前把文件存在其他路径、或是文件权限不符合安全要求,库会直接跳过加载配置。
    直接在Colab单元格执行以下代码生成合规的配置文件,替换成你自己的Earthdata账号信息即可:
    !cat << EOF > /root/.netrc
    machine urs.earthdata.nasa.gov
    login 你的Earthdata注册用户名
    password 你的Earthdata账号密码
    EOF
    # 必须设置600权限,否则Requests会判定.netrc不安全,拒绝加载
    !chmod 600 /root/.netrc
    
  • 修正下载请求的逻辑缺陷:
    原代码直接调用requests.get()发起请求,既不会自动关联.netrc存储的鉴权信息,也会在NASA的302重定向鉴权链路中丢失会话cookie,是触发401报错的直接原因。替换成带自动鉴权的会话逻辑,分块写入大文件避免Colab内存溢出:
    import requests
    from requests.auth import HTTPBasicAuth
    
    # 初始化自动读取.netrc配置的会话
    dl_session = requests.Session()
    # 绑定.netrc的鉴权信息到会话
    dl_session.auth = HTTPBasicAuth.from_netrc()
    
    for i in range(len(rutas_GPM)):
        target_url = rutas_GPM.iloc[i,0]
        save_name = f'GPM{i}.nc'
        save_full_path = "/content/drive/MyDrive/Colab Notebooks/Prueba/" + save_name
        try:
            # 允许跨域重定向,设置10分钟超时适配大文件下载
            resp = dl_session.get(target_url, allow_redirects=True, timeout=600)
            resp.raise_for_status()
            # 分块写入文件,避免大文件占用全部Colab运行时内存
            with open(save_full_path, 'wb') as f:
                for chunk in resp.iter_content(chunk_size=1024*1024):
                    if chunk:
                        f.write(chunk)
            print(f'{save_name} 下载完成,已保存到目标路径')
        except Exception as e:
            err_code = resp.status_code if 'resp' in locals() else "请求未正常发出"
            print(f'{save_name} 下载失败,错误码{err_code},详情:{str(e)}')
    
  • 常见排查点:
    • 每次Colab运行时重启,都要重新执行一遍生成.netrc的代码,因为运行时的本地临时文件不会跨会话保留
    • 确认你的Earthdata账号已经开通了对应GPM数据集合的访问权限,未授权的账号就算鉴权流程走完,也会返回403/401错误
    • 不要直接把账号密码拼接到下载URL的参数里,NASA的网关会自动拦截这类带敏感参数的请求

内容的提问来源于stack exchange,提问作者Devis Alexander Perez Campo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.25 09:15:06