如果我没有在requests.get()中指定用户代理,会发生什么情况?

2022-02-22 00:00:00 python python-requests web-scraping

问题描述

有人能解释一下如果我没有在requests.get(url)中指定我的用户代理会发生什么情况吗?

如果我指定,将如下所示:

user_agent = {'User-agent': 'Mozilla/5.0'}
requests.get(url, headers=user_agent)

如果我不这样做,那就是

requests.get(url)

有什么不同呢?如果我不指定,用户代理的默认值是多少?

提前感谢!

User-Agent报头通常由推荐答案浏览器或其他HTTP客户端发送时,没有任何定义的含义。它只是告诉服务器有关客户端的某些信息,服务器可以随心所欲地处理该信息。

通常,这将用于更改响应以保持与不同客户端(浏览器)的兼容性。例如,如果Web应用程序通过User-Agent字符串检测到移动浏览器,则它可能会使用简化的站点进行响应。

但这里没有硬性规定。服务器可能会完全忽略此标头。

在其他情况下,您可能会发现应用程序,特别是较旧的应用程序,其编码依赖于仅在特定浏览器中可用的功能,如果它们不将客户端识别为他们喜欢的浏览器,则不会返回有用的响应。在这种情况下,将User-Agent头设置为应用程序编码处理的支持良好的浏览器的头非常有用。事情不应该是这样的,但有时这是必要的。

默认情况下,requests发送一个用户代理标头,该标头标识您正在使用的请求包的版本、Python版本和操作系统。

大多数Web应用程序编写时不会将python-requests识别为浏览器,因此,如果将它们编码为特定于用于访问它们的浏览器,则它们可能不会返回良好的响应,在这种情况下,您需要伪造标头,使其看起来像是服务器端应用程序识别的更常见的浏览器。

相关文章