Pack Camo

cURL-zu-Code-Konverter

Macht aus einem curl-Befehl fetch, axios, Python requests, Go, PHP und mehr.

Alles läuft lokal — nichts wird hochgeladen.

curl-Befehl

POST api.example.com

fetch

23 Zeilen

// Browsers do not let scripts set Cookie; fetch ignores them.
const response = await fetch("https://api.example.com/v1/orders?expand=items", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    Authorization: "Bearer sk_test_4eC39HqLyjWDarjtT1zdp7dc",
    Cookie: "session=abc123; theme=dark",
  },
  body: JSON.stringify({
    "customer": "cus_42",
    "items": [
      {
        "sku": "TSHIRT-M",
        "qty": 2
      }
    ],
    "gift": false,
    "note": null
  }),
  signal: AbortSignal.timeout(30000),
});

console.log(response.status, await response.text());

curl-Befehl einfügen, funktionierenden Code erhalten

Dieser Konverter macht aus einem curl-Befehl denselben HTTP-Request in JavaScript fetch, axios, Node.js, Python requests, Go net/http, der curl-Erweiterung von PHP oder Rust reqwest. Er liest curl so, wie Ihre Shell und curl selbst es tun: einfache und doppelte Anführungszeichen, $'…'-Strings, Zeilenfortsetzungen, kombinierte Flags wie -sSL, wiederholte -d-Daten und Multipart-Felder mit -F. Header, Cookies, Basic- und Bearer-Authentifizierung, JSON-Bodys, Timeouts und TLS-Einstellungen werden übernommen, und alles, was sich nicht übersetzen lässt, wird angezeigt. Der Befehl wird in Ihrem Browser geparst und nirgendwohin gesendet, sodass Tokens und Cookies darin privat bleiben.

So wandeln Sie einen curl-Befehl in Code um

  1. 1Kopieren Sie einen Request als curl. Öffnen Sie in Chrome, Edge oder Firefox die Entwicklertools, wechseln Sie zum Tab Network, klicken Sie mit der rechten Maustaste auf einen Request und wählen Sie Copy › Copy as cURL. Sowohl die bash- als auch die Windows-cmd-Variante funktionieren.
  2. 2Fügen Sie den Befehl in den linken Bereich ein. Mehrzeilige Befehle mit \- oder ^-Fortsetzungen sind kein Problem.
  3. 3Wählen Sie die Zielsprache: fetch, axios, Node.js, Python, Go, PHP oder Rust, oder JSON, um den geparsten Request zu sehen.
  4. 4Lesen Sie die Hinweise unter dem Code zu Flags, die ignoriert wurden oder Aufmerksamkeit brauchen, und kopieren Sie dann den Code oder laden Sie ihn als Datei herunter.

Was umgewandelt wird

Methode und URL
-X/--request, --url, -G/--get (Daten wandern in den Query-String), -I/--head, -T/--upload-file (PUT). Ohne -X wird die Methode so gewählt wie bei curl: POST, wenn es einen Body gibt, sonst GET.
Header
-H/--header, -A/--user-agent, -e/--referer, -b/--cookie und -r/--range. Wiederholte Header werden zusammengeführt.
Bodys
-d/--data, --data-raw, --data-binary und --data-urlencode (mit & verbunden, wie curl es tut), --json sowie Multipart-Felder mit -F/--form, einschließlich Datei-Uploads mit ;type= und ;filename=.
Authentifizierung
-u/--user für Basic Auth, --digest, --oauth2-bearer und Zugangsdaten in der URL.
Verbindungsoptionen
-k/--insecure, -L/--location, --compressed, -m/--max-time und -x/--proxy, sofern die Zielsprache eine Entsprechung hat.

JSON-Bodys werden zu echten Objekten

Ist der Body JSON, weil der Content-Type es angibt oder weil er offensichtlich JSON ist, wird er formatiert und, wo die Sprache es erlaubt, als nativer Wert geschrieben: ein an JSON.stringify übergebenes Objekt für fetch, ein einfaches Objekt für axios und ein als json= übergebenes Dictionary für Python requests, wobei true, false und null zu True, False und None werden. Das lässt sich viel leichter bearbeiten als ein escapter String. Schalten Sie JSON-Bodys formatieren aus, um den Body Byte für Byte unverändert zu lassen.

fetch im Browser oder Node.js

Die beiden fetch-Ziele unterscheiden sich, weil Browser einschränken, was eine Seite senden darf. Ein Skript im Browser kann Cookie, Referer, Host, Accept-Encoding und keinen Sec--Header setzen, kann die Zertifikatsprüfung nicht überspringen und keine Dateien über einen Pfad lesen. Das Browser-Ziel nennt die Header, die verworfen werden. Das Node.js-Ziel kann all das: Dateien werden mit openAsBlob und readFile gelesen, und --insecure oder ein Proxy werden zu einem undici-Dispatcher.

Was ein Antwortstatus bedeutet, sobald der Request läuft, steht in der HTTP-Statuscode-Referenz. Query-Werte, die escapt werden müssen, lassen sich mit dem URL-Encoder kodieren.

Quoting-Regeln, erledigt

Die meisten Umwandlungsfehler entstehen durch Anführungszeichen. In einer POSIX-Shell bleibt in einfachen Anführungszeichen alles wörtlich erhalten, doppelte Anführungszeichen verarbeiten weiterhin \" und \$, und $'…' versteht Escapes wie \n und \x41. Ein Backslash am Zeilenende setzt den Befehl fort. Windows-cmd nutzt stattdessen ^ für Escapes und Fortsetzungen, und genau das erzeugt „Copy as cURL (cmd)“. Der Tokenizer befolgt jede dieser Regeln, sodass Ihr Code genau den Body sendet, den curl gesendet hätte.

Alles nach einer Pipe, einem Semikolon oder einer Umleitung, etwa | jq ., gehört zur Shell und nicht zu curl und wird mit einem Hinweis ignoriert.

Häufige Fragen

Wird mein curl-Befehl an einen Server gesendet?
Nein. Der Befehl wird in Ihrem Browser geparst und der Code dort erzeugt. Tokens, Cookies und Passwörter darin verlassen Ihr Gerät nie.
Wie kopiere ich einen Request im Browser als curl?
Öffnen Sie die Entwicklertools (F12), wählen Sie den Tab Network, klicken Sie mit der rechten Maustaste auf den Request und wählen Sie Copy und dann Copy as cURL. Unter Windows können Sie hier sowohl die bash- als auch die cmd-Version einfügen.
Welche curl-Optionen werden unterstützt?
Die Optionen, die einen Request definieren: Methode, URL, Header, Cookies, alle -d-Varianten, --json, -F-Formulare, -u-Authentifizierung, -G, -I, -T, -L, -k, --compressed, --max-time und --proxy. Ausgabeoptionen wie -s, -o und -v beeinflussen den Request nicht und werden ignoriert.
Warum fehlen im Browser-fetch-Code einige Header?
Browser verbieten Skripten, Header wie Cookie, Referer, Host und Accept-Encoding zu setzen, und fetch verwirft sie stillschweigend. Nutzen Sie das Node.js-Ziel, wenn Sie sie senden müssen.
Wie werden Datei-Uploads umgewandelt?
Ein -F-Feld wie file=@photo.jpg wird zu einem Multipart-Dateifeld, das photo.jpg in Node.js, Python, Go, PHP und Rust von der Festplatte liest. Im Browser-fetch wird eine über ein <input type="file"> ausgewählte Datei verwendet, weil Seiten keine Dateien über einen Pfad lesen können.
Was macht --data-urlencode?
Es wendet vor dem Senden Prozentkodierung auf den Wert an, sodass name=a b&c als name=a%20b%26c gesendet wird. Der Konverter wendet dieselbe Kodierung an, sodass der erzeugte Code dieselben Bytes sendet.
Folgt curl Weiterleitungen?
Nur wenn Sie -L angeben. Die meisten HTTP-Bibliotheken folgen Weiterleitungen standardmäßig, daher folgt der erzeugte Code ihnen meist ohnehin; die curl-Erweiterung von PHP tut das nur, wenn -L angegeben ist.