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


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.