वापस ब्लॉग पर

cURL को JavaScript में: अनुरोधों को Fetch और Axios में बदलें

Alex Johnson
Alex Johnson

Senior Web Scraping Engineer

25-Aug-2026

TL;DR:

  • cURL कमांड एक पोर्टेबल अनुरोध अनुबंध है, यह जावास्क्रिप्ट कोड नहीं है। विधि, URL, हेडर, सामग्री, प्रमाणीकरण, रीडायरेक्ट नीति, और टाइमआउट को जानबूझकर परिवर्तित करें।
  • छोटे मानक-आधारित ग्राहकों के लिए अंतर्निहित fetch() का उपयोग करें। response.ok की जांच करें, सामग्री को स्पष्ट रूप से पार्स करें, और एक अम्बॉर्ट सिग्नल के साथ अनुरोध रद्द करें।
  • जब इंटरसेप्टर्स, साझा उदाहरण, और केंद्रीकृत अनुरोध नीति ऐप्लिकेशन को सुधारते हैं, तो Axios का उपयोग करें। वायर अनुरोध को प्रमाणित cURL कॉल के समान रहना चाहिए।
  • कॉपी किए गए कमांड और स्रोत फ़ाइलों से रहस्यों को दूर रखें। API कुंजी को वातावरण से पढ़ें और उन ब्राउज़र-जनित हेडरों को हटा दें जिनकी सर्वर को आवश्यकता नहीं है।

cURL अक्सर एक HTTP अंत बिंदु को साबित करने का सबसे तेज़ तरीका होता है। ब्राउज़र डेवलपर उपकरण, API दस्तावेज़, और समर्थन टीमें सभी कॉपी करने योग्य cURL कमांड उत्पन्न करती हैं क्योंकि प्रारूप अनुरोध को दृश्य बनाता है: URL, विधि, हेडर, और सामग्री एक ही जगह पर होती है।

जावास्क्रिप्ट एप्लिकेशन को उस ही अनुरोध की आवश्यकता होती है जो वस्तुओं और असिंक्रोनस नियंत्रण प्रवाह के रूप में व्यक्त किया गया हो। यह गाइड दिखाता है कि cURL को Fetch और Axios में कैसे परिवर्तित किया जाए बिना व्यवहार खोए, फिर Scrapeless API अनुरोध पर विधि लागू करता है।

“JavaScript में cURL का उपयोग करें” का क्या अर्थ है?

जावास्क्रिप्ट स्वाभाविक रूप से cURL सिंटैक्स को निष्पादित नहीं करता। “JavaScript में cURL का उपयोग करना” आमतौर पर एक कार्यशील cURL अनुरोध को fetch() या Axios में परिवर्तित करने का अर्थ रखता है ताकि एप्लिकेशन वही HTTP संदेश भेज सके।

cURL कमांड-लाइन संदर्भ झंडों को परिभाषित करता है जैसे -X, -H, --data, और --location। प्रत्येक ध्वज का एक जावास्क्रिप्ट समकक्ष होता है, लेकिन मानचित्रण हमेशा एक-के-एक नहीं होता क्योंकि शेल, cURL, ब्राउज़र, और Node.js के विभिन्न डिफ़ॉल्ट होते हैं।

cURL-से-जावास्क्रिप्ट मैपिंग

cURL तत्व Fetch Axios
URL पहला तर्क url
-X POST method: "POST" method: "post"
-H headers वस्तु headers वस्तु
--data / --json body data
--location सामान्य Fetch उपयोग में डिफ़ॉल्ट रूप से अनुसरण किए गए रीडायरेक्ट Node एडेप्टर द्वारा संभाले गए रीडायरेक्ट
--max-time अम्बॉर्ट सिग्नल timeout
आउटपुट सामग्री response.text() या .json() response.data

ब्राउज़र डेवलपर उपकरण से हर हेडर की कॉपी न करें। Host, Content-Length, कनेक्शन-स्तरीय क्षेत्र, अस्थायी कुकीज़, और ट्रेसिंग हेडर सामान्यतः रनटाइम द्वारा उत्पन्न होते हैं या एक सत्र के लिए विशेष होते हैं।

चरण 1: एक प्रमाणित cURL अनुरोध के साथ शुरू करें

यह सार्वजनिक उदाहरण एक ईको अंत बिंदु पर JSON भेजता है:

चरण 1–4 में सार्वजनिक ईको ब्लॉक चित्रात्मक अनुरोध अनुबंध हैं; वे विनिर्माण सेवा परिणाम का दावा किए बिना समकक्ष वायर व्यवहार दिखाते हैं।

bash Copy
curl 'https://httpbin.org/anything' \
  -X POST \
  -H 'accept: application/json' \
  -H 'content-type: application/json' \
  --data '{"query":"browser automation","limit":3}'

इसे परिवर्तित करने से पहले, अनुबंध की पहचान करें:

  • विधि: POST।
  • URL: https://httpbin.org/anything
  • अनुरोध मीडिया प्रकार: JSON।
  • स्वीकृत प्रतिक्रिया: JSON।
  • सामग्री के क्षेत्र: query और limit

चरण 2: cURL को Fetch में परिवर्तित करें

आधुनिक ब्राउज़र और वर्तमान Node.js रनटाइम Fetch API को सार्वजनिक करते हैं। MDN Fetch गाइड अनुरोध विकल्पों और एक महत्वपूर्ण व्यवहार को दस्तावेज करता है: HTTP त्रुटि स्थितियाँ अभी भी एक Response पर हल होती हैं, इसलिए कोड को response.ok की जांच करनी चाहिए।

javascript Copy
const response = await fetch("https://httpbin.org/anything", {
  method: "POST",
  headers: {
    accept: "application/json",
    "content-type": "application/json",
  },
  body: JSON.stringify({ query: "browser automation", limit: 3 }),
});

if (!response.ok) {
  throw new Error(`HTTP ${response.status}`);
}

const data = await response.json();
console.log(data.json);

JSON.stringify() को पास की गई ऑब्जेक्ट cURL JSON सामग्री का प्रत्यक्ष समकक्ष है। एक साधारण ऑब्जेक्ट को body के रूप में पास न करें; Fetch एक सामग्री प्रकार की अपेक्षा करता है जैसे एक स्ट्रिंग, FormData, या बाइट्स।

चरण 3: एक स्पष्ट टाइमआउट जोड़ें

एक एप्लिकेशन अनुरोध को एक रोकने की स्थिति की आवश्यकता होती है। एक अम्बॉर्ट सिग्नल का उपयोग करें ताकि ऑपरेशन और प्रतिक्रिया-शरीर का उपभोग एक साथ रद्द किया जा सके। AbortController दस्तावेज़</a उस रद्द करने के मॉडल का वर्णन करता है।

javascript Copy
const controller = new AbortController();
const timer = setTimeout(() => controller.abort(), 15_000);

try {
  const response = await fetch("https://httpbin.org/anything", {
    method: "POST",
    headers: { "content-type": "application/json" },
    body: JSON.stringify({ query: "browser automation", limit: 3 }),
    signal: controller.signal,
  });

  if (!response.ok) throw new Error(`HTTP ${response.status}`);
  console.log(await response.json());
} finally {
  clearTimeout(timer);
}

परिवहन त्रुटियों, HTTP स्थिति त्रुटियों, और प्रतिक्रिया-स्कीमा त्रुटियों को अलग रखें। वे विभिन्न कारणों की ओर इशारा करते हैं और विभिन्न लॉग उत्पन्न करने चाहिए।

चरण 4: उसी cURL अनुरोध को Axios में परिवर्तित करें

Axios सामग्री को data में स्वीकार करता है और सामान्य JSON प्रतिक्रियाओं को response.data में पार्स करता है। इसकी अनुरोध कॉन्फ़िगरेशन दस्तावेज़ में हेडर, टाइमआउट, प्रमाणीकरण, और अन्य क्लाइंट नियंत्रणों की सूची होती है।

javascript Copy
import axios from "axios";

const response = await axios({
  method: "post",
  url: "https://httpbin.org/anything",
  headers: {
    accept: "application/json",
    "content-type": "application/json",
  },
  data: { query: "browser automation", limit: 3 },
  timeout: 15_000,
});

console.log(response.data.json);

जब एक एप्लिकेशन एक कॉन्फ़िगर की गई उदाहरण से लाभ उठाता है, तो Axios उपयोगी होता है:

javascript Copy
const api = axios.create({
  baseURL: "https://httpbin.org",
  timeout: 15_000,
  headers: { accept: "application/json" },
});

const { data } = await api.post("/anything", {
  query: "browser automation",
  limit: 3,
});

Scrapeless के साथ स्क्रैपिंग शुरू करें

Scrapeless के साथ अपने वेब स्क्रैपिंग और स्वचालन वर्कफ़्लो को सक्रिय करें!
आज साइन अप करें और $5 का फ्री क्रेडिट प्राप्त करें — क्रेडिट कार्ड की आवश्यकता नहीं।
अपने मुफ्त क्रेडिट का दावा करें Scrapeless Dashboard में।

कदम 5: एक Scrapeless API अनुरोध को परिवर्तित करें

इसी मैपिंग का उपयोग एक प्रबंधित वेब-अधिग्रहण अनुरोध के लिए किया जाता है। यह उदाहरण Scrapeless यूनिवर्सल स्क्रैपिंग API का उपयोग करता है। इसके लिए एक पाठक-स्वामित्व वाला SCRAPELESS_API_KEY की आवश्यकता है, इसलिए प्रमाणपत्र-गेटेड ब्लॉक कॉन्फ़िगरेशन उदाहरण हैं न कि प्राप्त लाइव परिणाम।

cURL स्वरूप है:

bash Copy
curl 'https://api.scrapeless.com/api/v2/unlocker/request' \
  -H "x-api-token: ${SCRAPELESS_API_KEY}" \
  -H 'content-type: application/json' \
  --data '{
    "actor":"unlocker.webunlocker",
    "proxy":{"country":"ANY"},
    "input":{
      "url":"https://example.com/",
      "jsRender":{"enabled":true,"response":{"type":"markdown"}}
    }
  }'

Fetch अनुवाद है:

javascript Copy
const payload = {
  actor: "unlocker.webunlocker",
  proxy: { country: "ANY" },
  input: {
    url: "https://example.com/",
    jsRender: { enabled: true, response: { type: "markdown" } },
  },
};

const response = await fetch(
  "https://api.scrapeless.com/api/v2/unlocker/request",
  {
    method: "POST",
    headers: {
      "content-type": "application/json",
      "x-api-token": process.env.SCRAPELESS_API_KEY,
    },
    body: JSON.stringify(payload),
  },
);

if (!response.ok) throw new Error(`HTTP ${response.status}`);
const result = await response.json();
console.log(result);

Axios अनुवाद केवल क्लाइंट स्वरूप को बदलता है:

javascript Copy
const { data } = await axios.post(
  "https://api.scrapeless.com/api/v2/unlocker/request",
  payload,
  {
    headers: { "x-api-token": process.env.SCRAPELESS_API_KEY },
    timeout: 90_000,
  },
);

console.log(data);

Fetch या Axios: आप किसे चुनें?

जब प्रोजेक्ट एक मानक-आधारित API, न्यूनतम निर्भरता और स्पष्ट प्रतिक्रिया प्रबंधन चाहता है, तो Fetch चुनें। जब साझा उदाहरण, इंटरसेप्टर्स, अनुरोध रूपांतरण, या एक समान क्लाइंट नीति एप्लिकेशन कोड को कम करते हैं, तो Axios चुनें।

चुनाव को सर्वर अनुबंध नहीं बदलना चाहिए। निदान के लिए एक गहरा cURL आदेश बनाए रखें, फिर पुष्टि करें कि JavaScript क्लाइंट उसी विधि, हेडर और अनुक्रमित शरीर को भेजता है।

सामान्य परिवर्तन त्रुटियाँ

  • Fetch अनुरोध में JSON.stringify() भूल जाना।
  • यह मान लेना कि Fetch अपने आप 404 या 500 प्रतिक्रिया पर फेंकता है।
  • स्रोत कोड में एक अस्थायी कुकी या प्रमाणीकरण मान की नकल करना।
  • Fetch विकल्पों के भीतर data भेजना, body के बजाय।
  • Axios में body भेजना, data के बजाय।
  • हर प्रतिक्रिया को JSON के रूप में पार्स करना बिना content-type की जांच किए।
  • एक Node.js क्लाइंट में केवल ब्राउज़र हेडर ले जाना।
  • एक स्पष्ट समय-सीमा या निरस्त संकेत को छोड़ देना।

Scrapeless JSON cURL गाइड शेल उद्धरण और पेलोड फ़ाइलों को और अधिक गहराई में कवर करता है। वर्तमान Scrapeless मूल्य निर्धारण देखें जब अनुवादित क्लाइंट स्थानीय मान्यता से निरंतर अधिग्रहण में जाता है।

निष्कर्ष

cURL को JavaScript में बदलना एक HTTP अनुबंध का नियंत्रित अनुवाद है। URL, विधि, हेडर, शरीर, प्रमाणीकरण, रीडायरेक्ट, समय सीमा और प्रतिक्रिया पार्सिंग को एक-एक करके मानचित्रित करें। Fetch क्लाइंट को वेब मानकों के करीब रखता है; Axios एप्लिकेशन-स्तरीय सुविधाओं को जोड़ता है। एक सत्यापित cURL आदेश दोनों के लिए सर्वोत्तम निदान संदर्भ बना रहता है।

क्या आप एक सिद्ध अनुरोध को डेटा कार्यप्रवाह में बदलने के लिए तैयार हैं?

Discord या Telegram पर Scrapeless समुदाय में शामिल हों। Scrapeless Dashboard में एक खाता बनाएं और एक कार्यशील cURL अनुरोध को JavaScript क्लाइंट में पोर्ट करें जो आपकी एप्लिकेशन पहले से ही उपयोग कर रही है।

सामान्य प्रश्न

प्रश्न: क्या JavaScript सीधे cURL आदेश चला सकता है?

JavaScript सामान्यत: cURL अनुरोध को Fetch या Axios में अनुवादित करता है। एक Node.js प्रक्रिया बाहरी curl बाइनरी को लांच कर सकती है, लेकिन यह एक ऑपरेटिंग-सिस्टम निर्भरता जोड़ता है और एप्लिकेशन HTTP कॉल के लिए शायद ही कभी आवश्यक होता है।

प्रश्न: क्या Fetch Node.js में उपलब्ध है?

वर्तमान Node.js रिलीज़ एक ब्राउज़र-संगत वैश्विक Fetch API प्रदान करती हैं। न्यूनतम प्रोजेक्ट संस्करण चुनने से पहले रनटाइम की आधिकारिक दस्तावेज़ और समर्थन नीति की जाँच करें।

प्रश्न: Fetch HTTP 404 पर क्यों नहीं फेंकता?

Fetch एक HTTP प्रतिक्रिया को एक पूर्ण नेटवर्क ऑपरेशन के रूप में मानता है, भले ही स्थिति एप्लिकेशन त्रुटि का संकेत देती हो। शरीर का पार्स करने से पहले response.ok या response.status की जांच करें।

प्रश्न: क्या Axios Fetch से बेहतर है?

जब इसके उदाहरण, इंटरसेप्टर्स, रूपांतरण और समय-सीमा कॉन्फ़िगरेशन एक बड़े क्लाइंट को सरल बनाते हैं, तो Axios बेहतर है। जब एक छोटी निर्भरता-मुक्त मानक-आधारित सतह पर्याप्त हो, तो Fetch बेहतर है।

प्रश्न: परिवर्तन के दौरान API कुंजियों को कैसे संभाला जाना चाहिए?

API कुंजियों को पर्यावरण चर या एक रहस्य सेवा से पढ़ें, उन्हें रनटाइम पर इंजेक्ट करें, और उन्हें लॉग से हटाएं। कभी भी एक असली कुंजी को एक cURL आदेश में न डालें जो एक भंडारण में कमिट किया गया हो।

प्रश्न: कब एक JavaScript अनुरोध को Scrapeless की आवश्यकता होती है?

जब लक्ष्य को प्रबंधित रेंडरिंग, क्षेत्रीय निर्गम, सत्र अवसंरचना, या सीधे HTTP प्रतिक्रिया के परे संरचित अधिग्रहण की आवश्यकता होती है, तो एक JavaScript क्लाइंट Scrapeless से लाभान्वित होता है।

स्क्रैपलेस में, हम केवल सार्वजनिक रूप से उपलब्ध डेटा का उपयोग करते हैं, जबकि लागू कानूनों, विनियमों और वेबसाइट गोपनीयता नीतियों का सख्ती से अनुपालन करते हैं। इस ब्लॉग में सामग्री केवल प्रदर्शन उद्देश्यों के लिए है और इसमें कोई अवैध या उल्लंघन करने वाली गतिविधियों को शामिल नहीं किया गया है। हम इस ब्लॉग या तृतीय-पक्ष लिंक से जानकारी के उपयोग के लिए सभी देयता को कोई गारंटी नहीं देते हैं और सभी देयता का खुलासा करते हैं। किसी भी स्क्रैपिंग गतिविधियों में संलग्न होने से पहले, अपने कानूनी सलाहकार से परामर्श करें और लक्ष्य वेबसाइट की सेवा की शर्तों की समीक्षा करें या आवश्यक अनुमतियाँ प्राप्त करें।

सबसे लोकप्रिय लेख

सूची