مكتبة requests هي مكتبة شائعة تابعة لجهات خارجية في Python لإجراء HTTP REQUESTS . يوفر واجهة برمجة تطبيقات (API) بسيطة لإرسال طلبات HTTP / 1.1 ، ويدعم مجموعة متنوعة من method مثل GET و POST و PUT و DELETE وما إلى ذلك.
الأمن السيبراني (الاختراق) مع بايثون Python
تتضمن بعض الميزات الرئيسية لمكتبة requests ما يلي :
- واجهة برمجة تطبيقات (API) سهلة الاستخدام لإجراء طلبات HTTP.
- يدعم HTTP Method المختلفة.
- يدعم التعامل مع ملفات تعريف الارتباط cookies والجلسات sessions.
- يمكنه التعامل مع عمليات إعادة توجيه HTTP redirects تلقائيًا.
- يدعم التعامل مع مصادقة HTTP basic authentication الأساسية.
- يدعم HTTP / 2 و HTTPS.
- يمكن التعامل مع gzip و deflate algorithms وفك ضغط HTTP Request.
- يدعم إرسال البيانات مع request مثل (form data, JSON data).
pip insatll requests
import requestsresponse = requests.get("https://www.cyberelliot.com")
import requests
headers = {
"User-Agent": "My User Agent",
"Accept-Encoding": "gzip, deflate",
}
response = requests.get("https://www.cyberelliot.com", headers=headers)
Response handling : الاستجابة من طلب HTTP عبارة عن كائن requests.Response يحتوي على معلومات حول response ، مثل رمز الحالة status code, ال headers والمحتوى content. يمكنك الوصول إلى المحتوى باستخدام خاصية النص text ، والتي تُرجع نص الاستجابة ك string :
import requests
response = requests.get("https://www.example.com")
print(response.text)
Error handling : تثير مكتبة الطلبات استثناءات للعديد من الأخطاء ، مثل عناوين URL غير الصالحة وأخطاء الاتصال وما إلى ذلك. يمكنك اكتشاف هذه الاستثناءات والتعامل معها في التعليمات البرمجية الخاصة بك. علي سبيل المثال:
import requests
try:
response = requests.get("https://www.example.com")
except requests.exceptions.RequestException as e:
print(f"Request failed: {e}")
Session persistence : يوفر requests.Session object علي مستوي ال session نطاقًا لطلبات HTTP ، مما يسمح لك بالاستمرار في parameters معينة ، مثل ملفات تعريف الارتباط cookies، عبر طلبات متعددة. يمكن أن يكون هذا مفيدًا للسيناريوهات التي تحتاج فيها إلى الحفاظ على جلسة مع خادم ، كما هو الحال عند المصادقة باستخدام واجهة برمجة التطبيقات. علي سبيل المثال:
import requests
session = requests.Session()
# Send a login request to authenticate
data = {
"username": "myusername",
"password": "mypassword",
}
session.post("https://www.example.com/login", data=data)
# Send a request using the authenticated session
response = session.get("https://www.example.com/restricted_page")
JSON data : إذا كنت بحاجة إلى إرسال بيانات JSON مع طلبك ، فيمكنك استخدام المعامله json. ستقوم مكتبة requests تلقائيًا بتشفير البيانات ك JSON string وتعيين Content-Type ك header المناسب. علي سبيل المثال:
import requests
data = {
"name": "elliot",
"email": "elliot@example.com",
}
response = requests.post("https://www.example.com/create_user", json=data)
تحميلات الملفات File uploads : يمكنك أيضًا إرسال ملفات مع طلبك باستخدام المعامله files. ستقوم مكتبة requests تلقائيًا بتشفير الملفات على هيئة بيانات متعددة الأجزاء multipart/form-data وإرسالها في request body. علي سبيل المثال:
import requests
files = {
"file": ("shell.py", open("shell.py", "rb"))
}
response = requests.post("https://www.example.com/upload_file", files=files)
المهلات timeout : يمكنك تحديد مهلة لطلبات HTTP الخاصة بك باستخدام المعامله timeout. يمكن أن يكون هذا مفيدًا لمنع تعليق code الخاص بيك إلى أجل غير مسمى في حالة استغراق الخادم وقتًا طويلاً للاستجابة. علي سبيل المثال:
import requests
response = requests.get("https://www.cyberelliot.com", timeout=5.0)
Ref: https://requests.readthedocs.io/en/latest