You need to enable JavaScript to run this app. 带环境变量的curl可正常运行 转Python3 requests后报403错误
优惠活动
大模型
产品
解决方案
定价
更多

带环境变量的curl可正常运行 转Python3 requests后报403错误

报错原因
  • 凭证传值完全错误:原curl命令里的$TOKEN是Shell的环境变量引用写法,终端执行curl时会自动把这个占位符替换成你提前配置好的有效token值;但Python代码没有Shell的变量解析能力,你直接把'$TOKEN'当普通字符串传进参数,实际发出去的请求带的token就是字面上的"$TOKEN",属于完全无效的凭证,直接被接口拦截返回403。
  • 访问协议不匹配:你在代码里写的是http://开头的明文地址,ipinfo的正式服务默认走HTTPS,明文http请求要么触发服务端拦截规则,要么在自动重定向到HTTPS的过程中丢失携带的参数,也会触发403错误。
修复方法
  1. 用os模块从系统环境变量里读取真实的TOKEN值,替换硬编码的$TOKEN占位符
  2. 把请求地址改成HTTPS协议,和原curl的访问路径保持一致
  3. 调整打印内容,直接输出响应状态和返回体,后续排查问题更方便

修正后的可运行代码:

#!/usr/bin/env python3
import os
import requests

def getIPInfo ():
    # 读取系统环境变量中存储的真实TOKEN
    token = os.getenv("TOKEN")
    if not token:
        print("未获取到环境变量中的TOKEN值,请检查环境配置")
        return
    
    params = (
        ('token', token),
    )
    # 使用HTTPS协议访问接口
    response = requests.get('https://ipinfo.io/8.8.8.8/json', params=params)
    
    print(f"响应状态:{response.status_code}")
    print(f"返回内容:{response.text}")

getIPInfo()

注意:如果你的token是手动配置在脚本内的,直接把真实的token字符串赋值给变量即可,不要保留$符号,否则依然会传无效值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.08 01:36:04