পাইথনের অনুরোধ লাইব্রেরি ব্যবহার করে "ব্যবহারকারী-এজেন্ট" প্রেরণ


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-requosts.org/en/latest/user/advanced/#request-and-response-objects
এখানে

3
ডিফল্ট মানটি অনুরোধ হিসাবেও উপলব্ধ u ইউটিলেস.ডিফল্ট_ইউজার_এজেন্ট () আপনি যদি নিজের তথ্য দিয়ে কেবল এটি বৃদ্ধি করতে চান।
nealmcb

3
এটা সঠিক নয়। এটি বাকী হেডারগুলিকে ক্লোবার করে। তিনি অনুরোধ.ইটিলস.ডিফল্ট_ইউজার_এজেন্ট () থেকে ডিফল্টের একটি অনুলিপি পাবেন এবং এটি আপডেট করুন এবং সেগুলি প্রেরণ করুন।
চাদ মিলার

1
স্বাচ্ছন্দ্যের জন্য, httpbin.org/ Headers এ (ডাউনলোডযোগ্য স্টাফ) আপনি ব্রাউজার শিরোনাম পেতে পারেন এবং তারপরে আপনার ক্যোয়ারীটি আপনাকে হাজির করতে পারে
m3nda

1
মধ্যে অন্তত 2.13.0, শিরোলেখ clobbered হয়নি এবং ডক্স শুধু ব্যবহার করতে আপনাকে বলতে headerskwarg।
জিমিলস

62

এটি একটি অধিবেশন ব্যবহার করা আরও সুবিধাজনক , আপনি প্রতিবার শিরোনাম সেট করতে মনে রাখবেন না:

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.