使用Python中的Requests库发送"User-agent"

196 python web-crawler python-requests

我想在"User-agent"使用Python请求请求网页时发送一个值.我不确定是否可以将其作为标题的一部分发送,如下面的代码所示:

debug = {'verbose': sys.stderr}
user_agent = {'User-agent': 'Mozilla/5.0'}
response  = requests.get(url, headers = user_agent, config=debug)
Run Code Online (Sandbox Code Playgroud)

调试信息未显示请求期间发送的标头.

在标题中发送此信息是否可以接受?如果没有,我该如何发送?

wkl*_*wkl 294

user-agent应指定为在报头中的字段.

以下是HTTP标头字段列表,您可能对特定请求的字段感兴趣,其中包括User-Agent.

如果您正在使用v2.13及更高版本的请求

做你想做的最简单的方法是创建一个字典并直接指定你的标题,如下所示:

import requests

url = 'SOME URL'

headers = {
    'User-Agent': 'My User Agent 1.0',
    'From': 'youremail@domain.com'  # This is another valid field
}

response = requests.get(url, headers=headers)
Run Code Online (Sandbox Code Playgroud)

如果您使用的是v2.12.x及更早版本的请求

较旧版本的requests破坏默认标头,因此您需要执行以下操作以保留默认标头,然后将其自己添加到它们中.

import requests

url = 'SOME URL'

# Get a copy of the default headers that requests would use
headers = requests.utils.default_headers()

# Update the headers with your custom ones
# You don't have to worry about case-sensitivity with
# the dictionary keys, because default_headers uses a custom
# CaseInsensitiveDict implementation within requests' source code.
headers.update(
    {
        'User-Agent': 'My User Agent 1.0',
    }
)

response = requests.get(url, headers=headers)
Run Code Online (Sandbox Code Playgroud)

  • 您还可以使用`response.request.headers`访问您发送的标头,这是有效的,因为原始请求对象是响应对象的属性.另见[http://docs.python-requests.org/en/latest/user/advanced/#request-and-response-objects](http://docs.python-requests.org/en/latest/user /先进/#请求 - 响应的对象) (5认同)
  • 如果您想使用自己的信息扩充,则默认值也可用作requests.utils.default_user_agent(). (3认同)
  • 这不对.它破坏了其余的标题.他应该从requests.utils.default_user_agent()获取默认值的副本并更新它,并发送它们. (3认同)
  • 为简单起见,在 https://httpbin.org/headers(可下载的东西)上,您可以获得浏览器标题,然后让您的查询出现在您面前 (2认同)

use*_*ser 44

使用会话更方便,这样您每次都不必记住设置标头:

session = requests.Session()
session.headers.update({'User-Agent': 'Custom user agent'})

session.get('https://httpbin.org/headers')
Run Code Online (Sandbox Code Playgroud)

默认情况下,会话还为您管理cookie.如果您要禁用它,请参阅此问题.


Raj*_*man 14

它会像浏览器一样发送请求

import requests

url = 'https://Your-url'
headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36'}

response= requests.get(url.strip(), headers=headers, timeout=10)
Run Code Online (Sandbox Code Playgroud)