पायथन में अनुरोध पुस्तकालय का उपयोग करके "उपयोगकर्ता-एजेंट" भेजना


216

मैं "User-agent"पायथन अनुरोधों का उपयोग करते हुए एक वेबपेज का अनुरोध करते हुए एक मूल्य भेजना चाहता हूं । मुझे यकीन नहीं है कि क्या हेडर के एक हिस्से के रूप में इसे भेजना ठीक है, जैसा कि नीचे दिए गए कोड में है:

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
यदि आप केवल अपनी जानकारी के साथ इसे बढ़ाना चाहते हैं, तो डिफ़ॉल्ट मान भी request.utils.default_user_agent () के रूप में उपलब्ध है।
nealmcb

3
यह सही नहीं है। यह हेडर के बाकी हिस्सों को देखता है। उसे request.utils.default_user_agent () से डिफ़ॉल्ट की एक प्रति प्राप्त करनी चाहिए और इसे अपडेट करना चाहिए, और उन लोगों को भेजना चाहिए।
चाड मिलर

1
easyness, पर के लिए httpbin.org/headers (डाउनलोड सामान) आप ब्राउज़र हेडर तो आपकी क्वेरी आप प्रदर्शित कर प्राप्त कर सकते हैं
m3nda

1
कम से कम 2.13.0, हेडर बंद नहीं होते हैं और डॉक्स आपको केवल headersकाग का उपयोग करने के लिए कहते हैं।
Jmills

62

एक सत्र का उपयोग करना अधिक सुविधाजनक है , इस तरह आपको हर बार हेडर सेट करने के लिए याद रखने की ज़रूरत नहीं है:

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

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

डिफ़ॉल्ट रूप से, सत्र आपके लिए कुकीज़ भी प्रबंधित करता है। यदि आप इसे अक्षम करना चाहते हैं, तो यह प्रश्न देखें ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.