𝗖𝗨𝗥𝗟-ஐ 𝗣𝘆𝘁𝗵𝗼𝗻 𝗥𝗲𝗾𝘂𝗲𝘀𝘁𝘀-ஆகப் 𝗽𝗼𝗹𝗶𝘁𝗵𝗮 𝘀𝘁𝗲𝗽 𝗯𝘆 𝘀𝘁𝗲𝗽 முறை

உங்கள் உலாவியின் (browser) DevTools-லிருந்து ஒரு request-ஐ cURL கட்டளையாகப் பிரதியெடுக்கிறீர்கள்.

உங்களுக்கு headers, cookies மற்றும் auth tokens கிடைக்கின்றன.

ஆனால், இறுதியில் உங்களுக்கு 30 வரிகள் கொண்ட குழப்பமான shell code கிடைக்கிறது. உங்களுக்குத் தேவை சுத்தமான Python குறியீடு.

ஒரு cURL கட்டளையை Python requests library-க்கு எவ்வாறு கைமுறையாக (manually) மாற்றுவது என்பது இதோ.

  1. முறையைத் (Method) தீர்மானிக்கவும் நீங்கள் --data அல்லது --data-raw என்பதைக் கண்டால், curl இயல்பாகவே POST முறையைப் பயன்படுத்தும். -X flag இல்லை என்பதற்காக அது GET request என்று ஊகிக்க வேண்டாம்.

  2. Headers-ஐக் கையாளவும் ஒவ்வொரு -H flag-உம் ஒரு dictionary-யில் ஒரு உள்ளீடாக (entry) மாறும். Header string-ஐப் பிரிக்கும்போது (split), முதல் কোলன் (colon) மூலம் மட்டுமே பிரிக்கவும். URL அல்லது timestamps போன்ற மதிப்புகள் (values) কোলன்களைக் கொண்டிருக்கும். நீங்கள் ஒவ்வொரு কোলன் மூலமும் பிரித்தால், தரவு (data) சிதைந்துவிடும்.

  3. Cookies-ஐ நிர்வகிக்கவும் -b flag ஒரு semicolon-ஆல் பிரிக்கப்பட்ட string-ஐ வழங்கும். இதை உங்கள் headers dictionary-யில் வைக்க வேண்டாம். அதற்குப் பதிலாக, இதை cookies argument-க்கு ஒரு dictionary-யாக அனுப்பவும். இது library-யே encoding-ஐக் கையாள உதவும்.

  4. JSON vs Data பயன்பாடு இது ஒரு பொதுவான தவறு. Content type application/json ஆக இருந்தால், json= argument-ஐப் பயன்படுத்தவும். இது உங்கள் dictionary-யை serialize செய்து, உங்களுக்காகச் சரியான header-ஐ அமைக்கும். நீங்கள் data= பயன்படுத்தினால், requests form-encoding-ஐப் பயன்படுத்தும். இது API உங்கள் கோரிக்கையை நிராகரிக்கக் காரணமாகும்.

  5. Parameters-ஐச் சுத்தப்படுத்தவும் URL-இல் உள்ள query string-ஐ ஒரு params dictionary-க்குள் மாற்றவும். இது உங்கள் குறியீட்டைப் படிக்க எளிதாக்கும். Double-encoding குறித்துக் கவனமாக இருக்கவும். URL ஏற்கனவே encoded ஆக இருந்தால், உங்கள் dictionary-யில் அதை மீண்டும் encode செய்ய வேண்டாம்.

இறுதி குறியீட்டு அமைப்பு (code structure) இவ்வாறு இருக்கும்:

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())

தவிர்க்க வேண்டிய பொதுவான சிக்கல்கள்:

  • multipart uploads செய்யும் போது files= மற்றும் data= ஆகியவற்றைத் தவறாகப் பயன்படுத்துதல்.
  • ஒவ்வொரு কোলன் மூலமும் headers-ஐப் பிரித்தல்.
  • query parameters-களை double-encoding செய்தல்.

ஆதாரம்: https://dev.to/wanfeng/from-browser-curl-to-clean-python-requests-code-step-by-step-25oh