چگونه میتوان هدر و کوکیها را در یک درخواست وارد کرد؟
همانطور که پیشتر گفته شد، میتوانید با استفاده از req.cookies
و req.headers
به کوکیها و هدرهایی که سرور برای شما ارسال میکند دسترسی داشته باشید. همچنین امکان ارسال کوکیها و هدرهای سفارشی در درخواستها وجود دارد. این ویژگی زمانی مفید است که بخواهید عامل کاربری (User-Agent) سفارشی برای درخواست خود تنظیم کنید.
برای افزودن هدرهای HTTP به یک درخواست، کافی است آنها را در پارامتر headers
وارد کنید. به همین ترتیب، میتوانید کوکیهای شخصی خود را از طریق پارامتر cookies
به سرور ارسال کنید.
import requests
url = 'http://some-domain.com/set/cookies/headers'
headers = {'user-agent': 'your-own-user-agent/0.0.1'}
cookies = {'visit-month': 'February'}
ظرف کوکیها (Cookie Jar) نیز میتواند کوکیها را ذخیره کند. این روش امکان استفاده از کوکیها در مسیرهای مختلف را به شما میدهد.
مثال زیر را ببینید:
import requests
jar = requests.cookies.RequestsCookieJar()
jar.set('first_cookie', 'first', domain='httpbin.org', path='/cookies')
jar.set('second_cookie', 'second', domain='httpbin.org', path='/extra')
jar.set('third_cookie', 'third', domain='httpbin.org', path='/cookies')
url = 'http://httpbin.org/cookies'
req = requests.get(url, cookies=jar)
req.text
# خروجی: '{ "cookies": { "first_cookie": "first", "third_cookie": "third" }}'
احراز هویت با استفاده از Python Requests
احراز هویت، مجوز دسترسی کاربر به منابع خاص را کنترل میکند. چون همه نمیتوانند به هر URL دسترسی داشته باشند، ابتدا احراز هویت لازم است. معمولاً دادههای احراز هویت از طریق هدر Authorization
یا هدرهای سفارشی سرور ارسال میشود.
import requests
from requests.auth import HTTPBasicAuth
response = requests.get('https://api.github.com/user',
auth=HTTPBasicAuth('user', 'pass'))
print(response)
نام کاربری و رمز عبور خود را به جای user
و pass
قرار دهید. در صورت موفقیت، پاسخ 200
و در غیر این صورت 403
دریافت خواهید کرد.
شیء Session
شیء Session
به شما اجازه میدهد پارامترها مانند کوکیها را بین درخواستها حفظ کنید. همچنین نشستها از اتصال مجدد TCP جلوگیری کرده و باعث افزایش کارایی میشوند. به عنوان مثال، ابتدا کوکی را روی یک URL تنظیم و سپس در درخواست بعدی آن را بررسی میکنیم:
import requests
s = requests.Session()
s.get('https://httpbin.org/cookies/set/sessioncookie/123456789')
r = s.get('https://httpbin.org/cookies')
print(r.text)
تأیید گواهی SSL
درخواستها مانند مرورگرها، گواهیهای SSL را برای درخواستهای HTTPS بررسی میکنند. گواهیهای SSL کلیدهای رمزنگاری را به اطلاعات سازمان متصل میکنند و وبسایتهای دارای این گواهی معمولاً امن نامیده میشوند. به صورت پیشفرض، تأیید SSL فعال است و در صورت عدم تایید، خطای SSLError
رخ میدهد.
غیرفعال کردن تأیید گواهی SSL
فرض کنید بخواهید با استفاده از requests به سایتی با گواهی نامعتبر دسترسی پیدا کنید:
import requests
response = requests.get('https://expired.badssl.com/')
print(response)
این وبسایت دارای گواهی نامعتبر است و باعث خطا میشود.
همچنین میتوانید مسیر فایل گواهی را برای تأیید به requests بدهید:
import requests
response = requests.get('https://github.com', verify='/path/to/certfile')
print(response)
البته مسیر certfile
باید صحیح و معتبر باشد.
برای اطلاعات بیشتر میتوانید به لینک تأیید گواهی SSL در Python Requests مراجعه کنید.