Python调用GFG搜索API传Payload时遇连接重置错误求解决方案
解决方案:GFG搜索API连接重置问题
问题原因分析
你遇到的ConnectionResetError是服务器拒绝请求导致的,核心问题有两个:
- GET请求参数传递错误:
requests.get()中使用data参数不符合规范,GET参数需通过params传递,data仅用于POST/PUT等请求的表单数据。 - 缺少必要请求头:GFG的API会拦截无标识的爬虫请求,需要添加
User-Agent等头信息模拟浏览器访问。
修正后的代码示例
方式1:GET请求+params传递参数
import requests headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36' } params = {'page': 3, 'sort': 'relevance', 'type': 'premium', 'query': 'nump'} try: r = requests.get('https://api.geeksforgeeks.org/post/api/googlesearch/', params=params, headers=headers) r.raise_for_status() # 触发HTTP错误状态码异常 result = r.json() print(result) except requests.exceptions.RequestException as e: print(f"请求失败: {e}")
方式2:改用POST请求(若API要求POST接收参数)
如果GFG的API实际需要POST方式接收参数,可调整为:
import requests headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36', 'Content-Type': 'application/x-www-form-urlencoded' } data = {'page': 3, 'sort': 'relevance', 'type': 'premium', 'query': 'nump'} try: r = requests.post('https://api.geeksforgeeks.org/post/api/googlesearch/', data=data, headers=headers) r.raise_for_status() result = r.json() print(result) except requests.exceptions.RequestException as e: print(f"请求失败: {e}")
额外注意事项
- 若仍出现连接问题,可添加
Referer头(值设为https://www.geeksforgeeks.org/),进一步模拟正常访问流程。 - 避免频繁发送请求,防止触发GFG反爬虫机制导致IP被封禁。
内容的提问来源于stack exchange,提问作者Vinay Edula
相关产品推荐
相关产品推荐

