𝗖𝗼𝗻𝘃𝗲𝗿𝘁 𝗖𝗨𝗥𝗟 𝘁𝗼 𝗣𝘆𝘁𝗵𝗼𝗻 𝗥𝗲𝗾𝘂𝗲𝘀𝘁𝘀 𝗦𝘁𝗲𝗽 𝗕𝘆 𝗦𝘁𝗲𝗽
आप अपने ब्राउज़र DevTools से एक रिक्वेस्ट को cURL कमांड के रूप में कॉपी करते हैं।
आपको हेडर (headers), कुकीज़ (cookies) और ऑथ टोकन (auth tokens) मिल जाते हैं।
लेकिन अंत में आपके पास 30 लाइनों का उलझा हुआ शेल कोड (shell code) बचता है। जबकि आप एक साफ़-सुथरा Python कोड चाहते थे।
यहाँ बताया गया है कि आप मैन्युअल रूप से एक cURL कमांड को Python requests लाइब्रेरी में कैसे मैप कर सकते हैं।
मेथड (Method) निर्धारित करें यदि आप
--dataया--data-rawदेखते हैं, तो curl डिफ़ॉल्ट रूप से POST का उपयोग करता है। केवल इसलिए कि-Xफ्लैग गायब है, यह न मान लें कि यह GET रिक्वेस्ट है।हेडर (Headers) को हैंडल करें हर
-Hफ्लैग डिक्शनरी (dictionary) में एक एंट्री बन जाता है। जब आप हेडर स्ट्रिंग को स्प्लिट (split) करते हैं, तो केवल पहले कोलन (colon) पर ही स्प्लिट करें। URL या टाइमस्टैम्प जैसे मानों (values) में कोलन होते हैं। यदि आप हर कोलन पर स्प्लिट करेंगे, तो डेटा खराब हो जाएगा।कुकीज़ (Cookies) को मैनेज करें
-bफ्लैग सेमीकोलन (semicolon) से अलग की गई एक स्ट्रिंग प्रदान करता है। इसे अपनी हेडर डिक्शनरी में न डालें। इसके बजाय इसेcookiesआर्गुमेंट में एक डिक्शनरी के रूप में पास करें। इससे लाइब्रेरी एन्कोडिंग (encoding) को खुद संभाल लेती है।JSON बनाम Data का उपयोग करें यह एक आम गलती है। यदि कंटेंट टाइप
application/jsonहै, तोjson=आर्गुमेंट का उपयोग करें। यह आपकी डिक्शनरी को सीरियलाइज़ (serialize) करता है और आपके लिए सही हेडर सेट कर देता है। यदि आपdata=का उपयोग करते हैं, तोrequestsफॉर्म-एन्कोडिंग (form-encoding) का उपयोग करेगा। इससे API आपकी रिक्वेस्ट को रिजेक्ट कर देगा।पैरामीटर्स (Parameters) को साफ़ करें URL से क्वेरी स्ट्रिंग (query string) को
paramsडिक्शनरी में ले जाएँ। इससे आपका कोड पढ़ने में आसान हो जाता है। डबल-एन्कोडिंग (double-encoding) से सावधान रहें। यदि URL पहले से ही एन्कोडेड है, तो उसे अपनी डिक्शनरी में दोबारा एन्कोड न करें।
अंतिम कोड स्ट्रक्चर ऐसा दिखता है:
import requests
url = "https://api.example.com/v2/search"
params = {"lang": "en", "page": "2"}
headers = {
"accept": "application/json",
"authorization": "Bearer token_here",
"referer": "https://app.example.com/dashboard",
}
cookies = {"session": "abc123"}
payload = {"q": "nginx"}
resp = requests.post(
url,
params=params,
headers=headers,
cookies=cookies,
json=payload,
)
resp.raise_for_status()
print(resp.json())
बचने के लिए सामान्य गलतियाँ (Common traps):
- मल्टीपार्ट अपलोड (multipart uploads) के दौरान
files=औरdata=को मिलाना। - हर कोलन पर हेडर को स्प्लिट करना।
- क्वेरी पैरामीटर्स को डबल-एन्कोड करना।
स्रोत (Source): https://dev.to/wanfeng/from-browser-curl-to-clean-python-requests-code-step-by-step-25oh