我正在尝试通过Google上的简单查询获得第一个非广告结果。

res = requests.get('https://www.google.com?q=' + query)


分配任何值查询,您将得到一个错误。
我尝试添加一些标头,但没有任何变化。

我试图添加所有Google通常关联到查询的所有其他参数,但再次没有任何变化。

如果您使用硒进行搜索没有问题。

错误代码为429,但这似乎只是此查询的标准响应。这与我的IP无关,我也不是向Google发送垃圾邮件,而且这种情况在一段时间后不会消失。

您知道为什么会发生这种情况吗?是否可以添加一些标头,或者是否可以使用其他解决方案来仅查看结果,就像您在Google上搜索该关键字一样?

最佳答案

429请求太多

HTTP 429 Too Many Requests响应状态代码指示用户在给定的时间内发送了太多请求(“速率限制”)。响应表示应包含说明条件的详细信息,并且可以包含Retry-After头,指示在发出新请求之前要等待多长时间。

当服务器受到攻击或仅从单方接收到大量请求时,以429状态码响应每个请求都将占用资源。因此,不需要服务器使用429状态代码。当限制资源使用时,仅断开连接或采取其他步骤可能更合适。

但是,当我使用您的代码并执行相同的测试时,得到的完美结果如下:


代码块:

import requests

query = "selenium"
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36'}
url = 'https://www.google.com?q=' + query
res = requests.get(url, headers=headers)
print(res)

控制台输出:

<Response [200]>




  您可以在Failed to load resource: the server responded with a status of 429 (Too Many Requests) and 404 (Not Found) with ChromeDriver Chrome through Selenium中找到相关的讨论

08-20 04:48