𝗖𝗨𝗥𝗟 ਨੂੰ 𝗣𝘆𝘁𝗵𝗼𝗻 𝗥𝗲𝗾𝘂𝗲𝘀𝘁𝘀 ਵਿੱਚ ਬਦਲਣ ਦੇ ਸਟੈਪ-ਬਾਈ-ਸਟੈਪ ਤਰੀਕੇ
ਤੁਸੀਂ ਆਪਣੇ ਬ੍ਰਾਊਜ਼ਰ DevTools ਤੋਂ ਇੱਕ ਰਿਕੁਐਸਟ ਨੂੰ cURL ਕਮਾਂਡ ਵਜੋਂ ਕਾਪੀ ਕਰਦੇ ਹੋ।
ਤੁਹਾਨੂੰ headers, cookies, ਅਤੇ auth tokens ਮਿਲ ਜਾਂਦੇ ਹਨ।
ਪਰ ਅੰਤ ਵਿੱਚ ਤੁਹਾਡੇ ਕੋਲ 30 ਲਾਈਨਾਂ ਦਾ ਉਲਝਿਆ ਹੋਇਆ shell code ਹੁੰਦਾ ਹੈ। ਜਦਕਿ ਤੁਸੀਂ ਸਾਫ਼-ਸੁਥਰਾ Python ਕੋਡ ਚਾਹੁੰਦੇ ਸੀ।
ਇੱਥੇ ਦੱਸਿਆ ਗਿਆ ਹੈ ਕਿ ਤੁਸੀਂ ਮੈਨੂਅਲੀ ਇੱਕ cURL ਕਮਾਂਡ ਨੂੰ Python requests ਲਾਇਬ੍ਰੇਰੀ ਵਿੱਚ ਕਿਵੇਂ ਮੈਪ ਕਰ ਸਕਦੇ ਹੋ।
ਮੈਥਡ (Method) ਦਾ ਪਤਾ ਲਗਾਓ ਜੇਕਰ ਤੁਹਾਨੂੰ --data ਜਾਂ --data-raw ਦਿਖਾਈ ਦਿੰਦਾ ਹੈ, ਤਾਂ curl ਡਿਫੌਲਟ ਰੂਪ ਵਿੱਚ POST ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ। ਸਿਰਫ਼ ਇਸ ਲਈ ਇਹ ਨਾ ਮੰਨ ਲਓ ਕਿ ਇਹ GET ਰਿਕੁਐਸਟ ਹੈ ਕਿਉਂਕਿ -X ਫਲੈਗ (flag) ਗਾਇਬ ਹੈ।
Headers ਨੂੰ ਸੰਭਾਲੋ ਹਰ -H ਫਲੈਗ ਇੱਕ ਡਿਕਸ਼ਨਰੀ (dictionary) ਵਿੱਚ ਇੱਕ ਐਂਟਰੀ ਬਣ ਜਾਂਦਾ ਹੈ। ਜਦੋਂ ਤੁਸੀਂ header string ਨੂੰ ਵੰਡਦੇ (split) ਹੋ, ਤਾਂ ਸਿਰਫ਼ ਪਹਿਲੇ ਕੋਲਨ (colon) 'ਤੇ ਹੀ ਵੰਡੋ। URLs ਜਾਂ timestamps ਵਰਗੀਆਂ ਵੈਲਯੂਜ਼ ਵਿੱਚ ਕੋਲਨ ਹੁੰਦੇ ਹਨ। ਜੇਕਰ ਤੁਸੀਂ ਹਰ ਕੋਲਨ 'ਤੇ ਵੰਡੋਗੇ, ਤਾਂ ਡਾਟਾ ਖਰਾਬ ਹੋ ਜਾਵੇਗਾ।
Cookies ਨੂੰ ਮੈਨੇਜ ਕਰੋ -b ਫਲੈਗ ਇੱਕ semicolon-separated string ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ। ਇਸਨੂੰ ਆਪਣੀ headers ਡਿਕਸ਼ਨਰੀ ਵਿੱਚ ਨਾ ਪਾਓ। ਇਸਦੀ ਬਜਾਏ, ਇਸਨੂੰ cookies argument ਵਜੋਂ ਇੱਕ ਡਿਕਸ਼ਨਰੀ ਦੇ ਰੂਪ ਵਿੱਚ ਪਾਸ ਕਰੋ। ਇਹ ਲਾਇਬ੍ਰੇਰੀ ਨੂੰ encoding ਸੰਭਾਲਣ ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦਾ ਹੈ।
JSON ਬਨਾਮ Data ਦੀ ਵਰਤੋਂ ਇਹ ਇੱਕ ਆਮ ਗਲਤੀ ਹੈ। ਜੇਕਰ content type application/json ਹੈ, ਤਾਂ json= argument ਦੀ ਵਰਤੋਂ ਕਰੋ। ਇਹ ਤੁਹਾਡੀ ਡਿਕਸ਼ਨਰੀ ਨੂੰ serialize ਕਰਦਾ ਹੈ ਅਤੇ ਤੁਹਾਡੇ ਲਈ ਸਹੀ header ਸੈੱਟ ਕਰਦਾ ਹੈ। ਜੇਕਰ ਤੁਸੀਂ data= ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋ, ਤਾਂ requests form-encoding ਦੀ ਵਰਤੋਂ ਕਰੇਗਾ। ਇਸ ਨਾਲ API ਤੁਹਾਡੀ ਰਿਕੁਐਸਟ ਨੂੰ ਰੱਦ ਕਰ ਦੇਵੇਗੀ।
Parameters ਨੂੰ ਸਾਫ਼ ਕਰੋ URL ਤੋਂ query string ਨੂੰ params ਡਿਕਸ਼ਨਰੀ ਵਿੱਚ ਲੈ ਜਾਓ। ਇਹ ਤੁਹਾਡੇ ਕੋਡ ਨੂੰ ਪੜ੍ਹਨਯੋਗ ਬਣਾਉਂਦਾ ਹੈ। double-encoding ਤੋਂ ਸਾਵਧਾਨ ਰਹੋ। ਜੇਕਰ URL ਪਹਿਲਾਂ ਹੀ encoded ਹੈ, ਤਾਂ ਇਸਨੂੰ ਆਪਣੀ ਡਿਕਸ਼ਨਰੀ ਵਿੱਚ ਦੁਬਾਰਾ encode ਨਾ ਕਰੋ।
The final code structure looks like this:
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= ਨੂੰ ਮਿਲਾਉਣਾ।
- ਹਰ ਕੋਲਨ 'ਤੇ headers ਨੂੰ ਵੰਡਣਾ।
- query parameters ਨੂੰ double-encode ਕਰਨਾ।
ਸਰੋਤ (Source): https://dev.to/wanfeng/from-browser-curl-to-clean-python-requests-code-step-by-step-25oh