You need to enable JavaScript to run this app. 如何为请求添加代理以避免API请求频率限制
优惠活动
大模型
产品
解决方案
定价
更多

如何为请求添加代理以避免API请求频率限制

问题原因及解决方案

1. 代理配置不完整

你当前的proxyDict仅配置了http协议的代理规则,如果目标API使用https协议,请求会直接走本地网络,不会触发代理,这是最常见的原因。
修正代理配置示例:

# 同时配置http和https协议的代理规则
proxyDict = {
    "http" : "http://"+https_proxy,
    "https" : "http://"+https_proxy # 若你的代理需使用https连接,可将前缀改为https://
}

如果代理需要身份认证,代理地址格式为用户名:密码@代理IP:端口。

2. 代理未随请求更新

如果你是批量发起多次请求,当前代码仅在初始化时随机选中1个代理,所有请求都会复用这个代理IP,一旦该IP被限制,后续请求都会触发拦截。
需要调整逻辑,每次发起新请求前都重新随机选择代理:

import random
import requests

# 初始化时一次性读取代理池
proxies = open("proxies.txt", encoding="UTF-8", errors="ignore").read().splitlines()

# 每次请求前重新选代理
for _ in range(请求次数):
    cur_proxy = random.choice(proxies)
    proxyDict = {
        "http": f"http://{cur_proxy}",
        "https": f"http://{cur_proxy}"
    }
    # 每次新建会话,避免Cookie关联
    session = requests.Session()
    # 配置随机请求头,避免UA特征被识别
    session.headers.update({
        "User-Agent": random.choice([
            "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36",
            "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.0 Safari/605.1.15"
        ])
    })
    try:
        req2 = session.get(url=url2, timeout=timeout, proxies=proxyDict).json()
        example = req2['data']
    except Exception as e:
        # 可在此处将无效代理从代理池移除
        continue

3. 代理本身存在问题

  • 检查代理是否为透明代理:这类代理会在请求头中携带你的真实IP,目标API可直接读取到你的本地IP
  • 提前校验代理可用性:可调用公开IP查询接口验证返回IP是否为代理IP,排除已失效、已被目标API封禁的代理
  • 若使用的是公共共享代理,大部分IP早已被主流API拉黑,建议更换独享代理池

4. 其他反爬策略绕过

API的限制规则通常不只有IP检测,还包括:

  • 请求频率限制:可添加随机请求间隔,避免短时间内发起大量请求
  • 请求头校验:确保User-Agent、Referer等头信息符合正常浏览器特征,不要使用固定值
  • Cookie追踪:不要复用同一个会话对象,每次请求新建会话或者主动清除Cookie

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 15:45:07