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

Python Requests代码昨日正常今日返回TooManyRedirects错误求助

解决requests请求出现TooManyRedirects的问题

针对你遇到的问题,提供以下几种可行的解决方案:

1. 使用Session保持会话并携带完整浏览器请求头

网站可能通过识别请求头中的User-Agent等字段判断请求来源,Colab默认的requests请求头容易被反爬机制识别,导致循环重定向。使用requests.Session()可以在重定向过程中自动保持会话状态和请求头,避免被拦截:

import requests
import json

def GetAllStocks():
    url = 'https://iboard.ssi.com.vn/dchart/api/1.1/defaultAllStocks'
    # 模拟Chrome浏览器的请求头,可根据自己浏览器的实际请求头调整
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36',
        'Accept': 'application/json, text/plain, */*',
        'Referer': 'https://iboard.ssi.com.vn/'
    }
    
    with requests.Session() as session:
        session.headers.update(headers)
        response = session.get(url)
        response.raise_for_status()  # 主动抛出HTTP状态码错误
        return response.json()  # 直接使用response.json()解析,比json.loads更高效

2. 手动处理302重定向

如果自动重定向出现循环,可以手动获取重定向地址并发起请求:

import requests
import json

def GetAllStocks():
    url = 'https://iboard.ssi.com.vn/dchart/api/1.1/defaultAllStocks'
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36',
        'Accept': 'application/json, text/plain, */*',
        'Referer': 'https://iboard.ssi.com.vn/'
    }
    
    with requests.Session() as session:
        session.headers.update(headers)
        # 禁止自动重定向,获取302响应中的Location
        first_response = session.get(url, allow_redirects=False)
        
        if first_response.status_code == 302:
            redirect_url = first_response.headers.get('Location')
            if redirect_url:
                # 处理相对路径的重定向地址
                if not redirect_url.startswith('http'):
                    redirect_url = 'https://iboard.ssi.com.vn' + redirect_url
                # 请求重定向后的地址
                final_response = session.get(redirect_url)
                final_response.raise_for_status()
                return final_response.json()
        else:
            first_response.raise_for_status()
            return first_response.json()

3. 检查Colab环境IP是否被限制

Colab的服务器IP属于云服务商段,可能被目标网站的反爬策略标记为异常流量。可以先在本地运行上述代码测试,如果本地正常,说明是Colab的IP问题:

  • 尝试重启Colab运行时,重新分配IP
  • 考虑使用代理IP(需注意合规性)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 21:54:14