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

使用Python requests执行谷歌搜索时返回429状态码如何解决

核心原因

你遇到的单次请求就返回429的问题,和请求频率没有关系,本质是谷歌对不同来源IP的风控等级差异:

  • 你本地笔记本用的是家庭宽带的住宅IP,这类IP属于普通网民常用IP段,谷歌默认信任度高,哪怕请求特征略有瑕疵也大概率放行。
  • 主机服务商的服务器IP属于数据中心IP段,这类IP池常年被大量爬虫、垃圾请求脚本占用,谷歌对这类IP的校验规则极其严格,根本不会等你发多次请求触发限流,第一次访问只要请求特征匹配脚本规则,就直接返回429。
    你换代理仍然报错的核心原因是:你选的大概率还是普通机房代理,IP属性依然是数据中心IP,自然逃不过风控。
可落地的解决方法
  • 先补全请求头,不要只携带User-Agent。真实浏览器发搜索请求时会携带一整套标准头,只带UA是非常明显的脚本特征。补全后的请求头参考如下:
query = 'https://www.google.com/search?q=search+term&ie=utf-8'
header = {
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36',
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8',
    'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8',
    'Accept-Encoding': 'gzip, deflate, br',
    'Connection': 'keep-alive',
    'Upgrade-Insecure-Requests': '1',
    'Sec-Fetch-Dest': 'document',
    'Sec-Fetch-Mode': 'navigate',
    'Sec-Fetch-Site': 'none',
    'Sec-Fetch-User': '?1'
}
resp = requests.get(query, headers=header)
  • 如果调用量不大,优先走谷歌官方提供的自定义搜索接口,走正规API鉴权调用完全不会触发网页端的风控规则,只是免费额度有上限,个人小规模使用完全足够。
  • 如果必须爬取网页端搜索结果,更换代理时选择真实的住宅代理,不要使用廉价机房代理、公开免费代理,这类IP早就被谷歌加入风控黑名单,换多少个都没用。
  • 替换请求客户端,requests库的TLS握手特征非常明显,和真实浏览器的TLS指纹差异极大,哪怕请求头完全一致,也很容易被识别为脚本。可以换用支持自定义TLS指纹的HTTP客户端,或者直接用Playwright、Selenium这类无头浏览器框架发起请求,模拟真实浏览器的完整访问特征,通过率会高很多。
注意事项

哪怕解决了IP和请求特征的问题,也要控制请求频率,两次请求之间加3-10秒的随机等待,不要连续高频发起请求,否则哪怕是真实住宅IP也会触发临时限流。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 17:09:30