Python에서 Requests 라이브러리를 사용하여 "User-agent"보내기


216

"User-agent"Python Requests를 사용하여 웹 페이지를 요청하는 동안 값을 보내려고합니다 . 아래 코드와 같이 헤더의 일부로 이것을 보내도 괜찮은지 확실하지 않습니다.

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

디버그 정보에 요청 중에 전송되는 헤더가 표시되지 않습니다.

이 정보를 헤더로 보내도 되나요? 그렇지 않은 경우 어떻게 보낼 수 있습니까?

답변:


323

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)

요청 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)

6
와 함께 보낸 헤더에 액세스 할 수도 있습니다. response.request.headers원래 요청 객체가 응답 객체의 속성이기 때문에 작동합니다. 도 참조 http://docs.python-requests.org/en/latest/user/advanced/#request-and-response-objects
여기

3
자신의 정보로 값을 늘리려는 경우 기본값은 requests.utils.default_user_agent ()로도 사용할 수 있습니다.
nealmcb

3
정확하지 않습니다. 나머지 헤더를 방해합니다. requests.utils.default_user_agent ()에서 기본값 사본을 가져 와서 업데이트 한 후 보내야합니다.
채드 밀러

1
용이성을 위해, httpbin.org/headers (다운로드 가능 항목)에서 브라우저 헤더를 가져 와서 쿼리를 표시 할 수 있습니다.
m3nda

1
적어도에서 2.13.0헤더는 깔끔 하지 않으며 문서headerskwarg 를 사용하도록 지시합니다.
Jmills

62

session 을 사용하는 것이 더 편리합니다 .이 방법으로 매번 헤더를 설정할 필요가 없습니다.

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

session.get('https://httpbin.org/headers')

기본적으로 세션은 쿠키를 관리합니다. 사용하지 않으려면 이 질문을 참조하십시오 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.