logo
GeekFormat

Konwerter cURL na kod

Wprowadzanie polecenia cURL

Wklej polecenie cURL, aby automatycznie sparsować adres URL, metodę, nagłówki i treść żądania oraz wygenerować gotowy do uruchomienia kod w JavaScript fetch, Axios, Node fetch, Python requests/httpx, Go net/http, PHP cURL, Java OkHttp, C# HttpClient, PowerShell Invoke-RestMethod, wget.

Sparsowane żądanie

https://api.example.com/items1 nagłówkówTreść: 15 znakówcurlToCode.flag.followRedirects

Wygenerowany kod

curlToCode.target.fetch

Wklej polecenie curl — natychmiast otrzymaj działający kod zapytania HTTP w 11 językach.

Powiązane Rekomendacje

Przypadki użycia

  • W panelu Network Chrome DevTools kliknij prawym przyciskiem na zapytanie → «Copy as cURL», następnie wklej do tego narzędzia i przekonwertuj na kod dla swojego projektu — 10 razy szybciej niż ręczne pisanie zapytania
  • Podczas pracy z zewnętrznymi API, gdy dokumentacja zawiera przykłady curl, szybko przekonwertuj na kod Python requests/Java OkHttp/C# HttpClient do wbudowania w projekt
  • Podczas debugowania API w produkcji kopiuj polecenia curl z narzędzi do sniffowania (Charles/mitmproxy/Wireshark), przekonwertuj na kod testów jednostkowych do natychmiastowej weryfikacji
  • Podczas pisania dokumentacji API szybko przełączaj się między przykładami w różnych językach, dostarczając czytelnikom z różnymi stosami gotowy działający kod
  • Podczas badania problemów z zapytaniami w produkcji odtwórz problem za pomocą curl, przekonwertuj na kod i wyślij kolegom lub utwórz Issue — inni będą mogli natychmiast odtworzyć
  • Podczas programowania wielojęzycznego (np. przejście z Pythona na projekt w Go) szybko przekonwertuj istniejące zapytania curl na wywołania klienta HTTP nowego języka, oszczędzając czas na czytanie dokumentacji
  • Konwertuj polecenia curl na PowerShell Invoke-RestMethod dla kolegów administratorów Windows w skryptach shell lub odwrotnie
  • Nauka protokołu HTTP: porównując kod tego samego zapytania w różnych językach, zrozum różnice w API bibliotek klientów HTTP
  • Szybko konwertuj curl -X POST -d 'json' na kod z poprawnym Content-Type i serializacją JSON, unikając błędów przy ręcznej konkatenacji ciągów
  • Gdy potrzebujesz wywołać API w skryptach CI/CD, przekonwertuj lokalnie odpluskwione polecenia curl na kod odpowiedniego języka skryptowego do wbudowania w pipeline

Funkcje

  • 11 docelowych języków/bibliotek: frontend (JS fetch/Axios), Node.js (node-fetch), Python (requests/httpx), Go (net/http), PHP (cURL), Java (OkHttp), C# (HttpClient), PowerShell (Invoke-RestMethod), wiersz poleceń (wget) — wszystkie główne stosy technologiczne
  • Inteligentne parsowanie poleceń curl: automatyczne rozpoznawanie URL, metod HTTP, nagłówków, treści zapytania, obsługa pojedynczych/podwójnych cudzysłowów, eskejpowania backslashem, wieloliniowych poleceń (backslash na końcu linii)
  • Pełna obsługa popularnych opcji curl: -X/--request do określania metody, -H/--header do nagłówków, -d/--data/-F do treści formularza/JSON, -u/--user do Basic Auth, -A/--user-agent do UA, -b/--cookie do Cookie, -e/--referer do Referer, -L/--location do śledzenia przekierowań, --compressed do automatycznej dekompresji, -k/--insecure do pomijania weryfikacji certyfikatu, -I/--head do zapytań HEAD
  • Inteligentne rozpoznawanie treści JSON: przy wykryciu Content-Type jako application/json automatycznie używa serializacji JSON.parse/JSON.stringify/requests(json=)/json=, wygenerowany kod używa obiektów zamiast ciągów znaków
  • Automatyczna konwersja Basic Auth: rozpoznanie -u user:pass automatycznie generuje nagłówek Authorization: Basic <base64>, docelowy język używa natywnego mechanizmu auth (Python auth=, OkHttp credentials, C# credentials itp.)
  • Wskaźniki bezpieczeństwa: automatyczne wykrywanie flag --compressed/-L/-k/-u, wyświetlane jako odznaki w wynikach parsowania
  • Ręczne przełączanie metody zapytania: po automatycznym parsowaniu metody curl, użytkownik może ręcznie przełączyć metodę na liście rozwijanej (GET/POST/PUT i 7 innych metod) i natychmiast zobaczyć odpowiedni kod
  • Bezpieczne eskejpowanie ciągów znaków: podczas generowania kodu dla każdego języka używane są natywne literały ciągów (potrójne cudzysłowy/eskejpowanie w Python, backticki w Go, @"" w C#, pojedyncze cudzysłowy w PHP, podwójne cudzysłowy z eskejpowaniem w Javie)
  • Wskazówki o błędach parsowania: przy wprowadzeniu nieprawidłowego polecenia curl (brak URL, nie zaczyna się od curl, POST bez treści itp.) wyświetlane jest pomarańczowe ostrzeżenie ze wskazaniem problemu
  • 3 przykłady do załadowania jednym kliknięciem: dostępne 3 typowe przykłady: GET+autoryzacja Token, POST+JSON, Basic Auth+śledzenie przekierowań
  • Czyszczenie wprowadzania jednym kliknięciem: przycisk Clear do szybkiego resetowania, wklejanie nowych poleceń bez pozostałości
  • W pełni lokalne przetwarzanie: parsowanie i konwersja poleceń curl odbywa się w całości lokalnie w przeglądarce, dane nie są wysyłane na serwer, wrażliwe Tokeny/hasła nie wyciekają
  • Kopiowanie kodu jednym kliknięciem: po wygenerowaniu kodu przycisk Copy kopiuje go do schowka
  • Obsługa niebezpiecznego trybu HTTPS: parametr -k/--insecure generuje odpowiednią konfigurację pomijania weryfikacji certyfikatu TLS dla Node/Go/Python/PHP/C#/PowerShell (wget używa --no-check-certificate, C# używa ServicePointManager, Node ustawia NODE_TLS_REJECT_UNAUTHORIZED)

Jak Używać

  1. Pobierz polecenie curl: w panelu Network przeglądarki DevTools kliknij prawym przyciskiem na zapytanie → Copy → Copy as cURL (bash); lub eksportuj cURL z narzędzi Postman/Charles/mitmproxy; lub napisz polecenie curl ręcznie
  2. Wklej w pole wprowadzania: wklej polecenie curl w górny obszar wprowadzania, obsługiwane są jedno-/wieloliniowe polecenia (kontynuacja przez backslash), znaki nowej linii są automatycznie usuwane
  3. Użyj przycisków przykładów jako odniesienia: jeśli nie znasz formatu, kliknij «Przykład 1/2/3», aby załadować predefiniowane polecenia curl i zobaczyć wynik
  4. Przejrzyj wynik parsowania: w obszarze wyników wyświetlany jest URL, liczba nagłówków, liczba znaków treści oraz odznaki dla kompresji/przekierowań/pomijania certyfikatu/Basic Auth, przy problemach wyświetlane jest pomarańczowe ostrzeżenie
  5. W razie potrzeby skoryguj metodę: jeśli automatycznie rozpoznana metoda jest nieprawidłowa (np. curl bez -X POST, ale powinno być POST), ręcznie przełącz metodę HTTP na liście rozwijanej
  6. Wybierz docelowy język: w obszarze kodu docelowego kliknij przycisk odpowiedniego języka (fetch/Axios/Python requests/Go/PHP/Java/C#/PowerShell/wget itp.)
  7. Skopiuj kod: kliknij przycisk «Kopiuj kod», wklej do swojego projektu/terminala — kod jest gotowy do uruchomienia

Często Zadawane Pytania

Do czego służy konwerter cURL na kod? Dlaczego nie używać polecenia curl bezpośrednio?

Bezpośrednie wywoływanie polecenia curl w kodzie (np. shell_exec, subprocess.run) wymaga uruchomienia procesu potomnego, jest niebezpieczne i utrudnia obsługę błędów, pobieranie nagłówków odpowiedzi, konwersję typów. Kod produkcyjny powinien używać natywnych klientów HTTP języków programowania (Python requests, Java OkHttp, JS fetch itp.). Wartość curl-to-code polega na automatycznym tłumaczeniu poleceń curl skopiowanych z DevTools/narzędzi do sniffowania na kod klienta HTTP odpowiedniego języka, eliminując mechaniczną pracę przy wyszukiwaniu dokumentacji API, ręcznym eskejpowaniu cudzysłowów, obsłudze JSON/autoryzacji — wystarczy skopiować i wkleić, aby uruchomić.

Jakie docelowe języki/biblioteki są obsługiwane?

Obecnie obsługiwanych jest 11 celów: JavaScript fetch (przeglądarkowy natywny), Axios (uniwersalna biblioteka HTTP dla Node/przeglądarki), Node.js node-fetch, Python requests (najpopularniejsza biblioteka HTTP Pythona), Python httpx (nowa generacja biblioteki HTTP z obsługą HTTP/2 i asynchroniczności), Go net/http (biblioteka standardowa Go), rozszerzenie PHP cURL, Java OkHttp (uniwersalna wysokowydajna biblioteka dla Android/backendu), C# HttpClient (standardowy klient HTTP .NET), PowerShell Invoke-RestMethod (często używany w skryptach automatyzacji Windows), wget (narzędzie wiersza poleceń do pobierania). Jeśli potrzebnego języka nie ma na liście (np. Ruby, Rust reqwest, Dart http, Swift URLSession itp.), możesz zostawić opinię na stronie, dodamy go na życzenie.

Jak skopiować polecenie curl z Chrome DevTools?

Kroki: 1. Otwórz Chrome/Edge, naciśnij F12, aby otworzyć DevTools; 2. Przejdź do panelu Network; 3. Odśwież stronę lub wywołaj docelowe zapytanie; 4. Znajdź docelowe zapytanie na liście zapytań (możesz filtrować po XHR/JS); 5. Kliknij prawym przyciskiem na to zapytanie → Copy → wybierz «Copy as cURL (bash)» (zalecana wersja bash, najlepsza kompatybilność); 6. Wklej w pole wprowadzania tego narzędzia. Uwaga: nie wybieraj Copy as fetch (to kod JS, nie curl). W Firefox/Safari działania są podobne, tam również jest opcja Copy as cURL.

Obsługa cudzysłowów w poleceniu curl sprawia trudności, jakie formaty są obsługiwane?

Narzędzie obsługuje styl bash z pojedynczymi/podwójnymi cudzysłowami i eskejpowaniem backslashem; podwójne cudzysłowy Windows cmd+eskejpowanie przez ^; eskejpowanie przez backtick PowerShell są w większości rozpoznawane. Zaleca się używanie formatu bash (otoczenie pojedynczymi cudzysłowami). Wieloliniowe polecenia (kontynuacja backslash \) również są obsługiwane przy wklejaniu, narzędzie automatycznie usuwa znaki nowej linii i kontynuacji. Jeśli Twoje polecenie curl jest szczególnie złożone (zawiera zmienne powłoki, podstawianie poleceń $(...), potok | itp.), zaleca się najpierw wykonać polecenie echo w terminalu, aby wyświetlić faktycznie rozwinięte curl, a następnie skopiować, lub ręcznie uprościć (podstawić zmienne na rzeczywiste wartości).

Dlaczego podczas wysyłania JSON przez -d w curl serwer otrzymuje nieczytelne znaki/400?

To jeden z najczęstszych błędów curl. Opcja -d/--data w curl domyślnie używa Content-Type application/x-www-form-urlencoded (format formularza), a nie application/json. Jeśli bezpośrednio wykonasz curl -d '{"name":"demo"}' url, serwer będzie parsował jako formularz (parsowanie zakończy się błędem lub otrzymane zostaną puste dane). Należy jawnie dodać nagłówek -H "Content-Type: application/json", aby poprawnie wysłać JSON. To narzędzie przy wykryciu treści bez Content-Type wyświetla pomarańczowe ostrzeżenie.

Czy można bezpośrednio kopiować i uruchamiać wygenerowany kod? Jakie zależności trzeba zainstalować?

Kod większości języków używa bibliotek standardowych i może być uruchamiany bezpośrednio (fetch/Go net/http/PHP cURL/C# HttpClient/PowerShell/wget — wbudowane), dodatkowa instalacja nie jest wymagana. Dla innych wymagane są biblioteki zewnętrzne: Axios (wymagane npm install axios), node-fetch (wymagane npm install node-fetch, w Node 18+ fetch jest już wbudowany, instalacja nie jest potrzebna), Python requests (pip install requests), Python httpx (pip install httpx), Java OkHttp (wymagane dodanie zależności okhttp3 przez Maven/Gradle). Kod domyślnie wyświetla kod statusu odpowiedzi i tekst, możesz modyfikować logikę obsługi w razie potrzeby.

Czy obsługiwane jest wysyłanie plików multipart/form-data (parametr -F)?

Podstawowa obsługa: parametr -F jest rozpoznawany jako treść zapytania (body), ale wygenerowany kod obecnie obsługuje @file jako dosłowny ciąg znaków, a nie faktyczne wysyłanie pliku. Wysyłanie plików wymaga odczytania zawartości plików lokalnych, sposoby obsługi znacznie się różnią w różnych językach (JS używa FormData/FormData.append, Python używa parametru files=, Go używa multipart.Writer). Zaleca się na podstawie wygenerowanego przez narzędzie kodu zapoznać się z dokumentacją dotyczącą wysyłania plików odpowiedniej biblioteki w celu wprowadzenia korekt. W przyszłych wersjach obsługa multipart zostanie rozszerzona.

Czy moje polecenia curl i wrażliwe dane zostaną wysłane?

Absolutnie nie. Cały proces parsowania i generowania kodu w 100% odbywa się lokalnie w Twojej przeglądarce (czysty frontendowy JavaScript), polecenia curl, Tokeny/Ciasteczka/hasła w nagłówkach, dane w treści zapytania nie są wysyłane na żadne serwery. Możesz używać tego narzędzia przy odłączonym internecie, nie martwiąc się o wyciek wrażliwych informacji.

Jak obsługiwane jest pomijanie weryfikacji certyfikatu -k/--insecure w kodzie dla różnych języków?

Przy wykryciu parametru -k to narzędzie generuje dla każdego docelowego języka odpowiednią konfigurację pomijania weryfikacji certyfikatu: Python requests/httpx używają verify=False; Node.js ustawia process.env.NODE_TLS_REJECT_UNAUTHORIZED='0'; Go tworzy własny tls.Config{InsecureSkipVerify: true}; PHP ustawia CURLOPT_SSL_VERIFYPEER=false i CURLOPT_SSL_VERIFYHOST=0; Java OkHttp wymaga własnego TrustManagera (w kodzie dodany komentarz z podpowiedzią, ponieważ kod jest dość długi); C# może dostosować ServerCertificateCustomValidationCallback; PowerShell używa -SkipCertificateCheck (PS6+); wget używa --no-check-certificate; przeglądarkowy fetch nie może pominąć weryfikacji certyfikatu (ograniczenie bezpieczeństwa przeglądarki, w kodzie dodany komentarz z wyjaśnieniem). Uwaga: te konfiguracje są przeznaczone wyłącznie do lokalnego programowania i testowania, nigdy nie wyłączaj weryfikacji certyfikatu w środowisku produkcyjnym.

Dlaczego wygenerowany kod Go nie śledzi przekierowań? Dodałem -L, powinien śledzić?

Domyślne zachowanie net/http w Go — nie śledzenie przekierowań (zgodne z domyślnym zachowaniem curl, curl jawnie wymaga -L do śledzenia). Narzędzie przy wykryciu parametru -L generuje pusty client (http.Client{} z CheckRedirect domyślnie nil, czyli śledzi 10 przekierowań); bez -L generuje client z CheckRedirect zwracającym http.ErrUseLastResponse, nie śledzi przekierowań (zgodnie z zachowaniem curl bez -L). Jeśli chcesz, aby Go zawsze śledził przekierowania, możesz bezpośrednio użyć http.DefaultClient lub własnego Client{Timeout: ...} w kodzie.

Jak obsługiwać zapytania wymagające logowania/z Ciasteczkami?

Są dwa sposoby: ①Bezpośrednio skopiuj curl z DevTools zalogowanej przeglądarki (zalecane): kliknij prawym przyciskiem na zapytanie→Copy as cURL, wtedy ciasteczka/nagłówki są automatycznie dołączone, wklej do konwersji — kod można uruchomić od razu; ②Ręcznie określ wartość Cookie w curl przez -b/--cookie (-b 'sessionid=abc; token=xyz'), -u/--user dla Basic Auth, -H "Authorization: Bearer xxx" dla Bearer Token, narzędzie przekonwertuje te nagłówki bez zmian. Uwaga: Ciasteczka skopiowane z przeglądarki mają termin ważności, po kilku godzinach mogą wygasnąć i wymagać ponownego kopiowania.

Dlaczego dla treści JSON w Python requests używany jest parametr json=, a nie data=?

Parametr data biblioteki Python requests koduje dict jako application/x-www-form-urlencoded, wysyła string bez zmian, a parametr json automatycznie serializuje dict/listę na ciąg JSON i automatycznie ustawia nagłówek Content-Type: application/json (jeśli nie ustawiłeś go ręcznie). To narzędzie przy wykryciu Content-Type zawierającego application/json i prawidłowego JSON w treści automatycznie parsuje JSON na Python dict i używa parametru json=, dzięki czemu kod jest bardziej zwięzły, nie wymaga ręcznego json.dumps i nie zapomina nagłówka Content-Type. Nie-JSON treść (formularz/XML/zwykły tekst) jest wysyłana przez parametr data= jako oryginalne ciągi.

Polecenie curl jest długie, z wieloma nagłówkami, co zrobić, jeśli wygenerowany kod zawiera wszystkie nagłówki?

Polecenie curl skopiowane z DevTools zawiera wiele automatycznie dodawanych przez przeglądarkę nagłówków (Host, Connection, Accept, Accept-Encoding, Accept-Language, Sec-Fetch-*, sec-ch-ua, Upgrade-Insecure-Requests itp.), większość z tych nagłówków w kodzie nie musi być jawnie ustawiana (klient HTTP automatycznie dodaje rozsądne wartości domyślne, takie jak Accept-Encoding, Connection, Host, Content-Length itp.). Zaleca się po skopiowaniu wygenerowanego kodu ręcznie usunąć niepotrzebne nagłówki, przynajmniej zachowując: Content-Type, Authorization, Cookie (jeśli wymagane), własne nagłówki biznesowe. Zbędne nagłówki nie tylko sprawiają, że kod jest brzydki, ale mogą również prowadzić do nietypowego zachowania (np. jawne ustawienie Accept-Encoding, ale klient nie będzie automatycznie dekompresował).

Czy obsługiwany jest parametr HTTPS proxy (-x/--proxy)?

Obecnie parametr HTTP proxy (-x/--proxy) nie jest jeszcze automatycznie konwertowany. Konfiguracja proxy znacznie się różni w różnych językach (JS fetch nie ma natywnej obsługi proxy, wymagany jest Agent, Python używa parametru proxies=, Go przez Transport.Proxy, PHP używa CURLOPT_PROXY, C# używa WebProxy, Java używa OkHttpClient.Builder().proxy()). Nagłówki proxy (autoryzacja samego proxy) również wymagają oddzielnej obsługi. W bieżącej wersji parametry związane z proxy są ignorowane, możesz ręcznie dodać konfigurację proxy na podstawie wygenerowanego kodu, w przyszłych wersjach obsługa proxy zostanie rozszerzona.

Jaka jest różnica w porównaniu z narzędziami online takimi jak curlconverter.com?

W porównaniu ze znanymi narzędziami takimi jak curlconverter.com, zalety curl-to-code od GeekFormat: ①W pełni lokalne przetwarzanie (logika przetwarzania curlconverter jest po stronie serwera lub klienta), dane nie są wysyłane, bezpieczniej; ②Zlokalizowany interfejs i szczegółowe wyjaśnienia po polsku; ③Wygenerowany kod bardziej odpowiada rzeczywistemu użyciu produkcyjnemu (np. Python requests używa parametru json= dla treści JSON zamiast data=, domyślne zachowanie Go jest zgodne z curl, C# poprawnie obsługuje Content-Type bez sztywnego kodowania application/json); ④Towarzysząca głęboka dokumentacja, FAQ, tabele zgodności, rozwiązywanie problemów — nie tylko generuje kod, ale także pomaga zrozumieć, dlaczego jest napisany w ten sposób; ⑤Darmowe, bez reklam, nie wymaga rejestracji i logowania, nie wymaga żądań sieciowych do użycia.

术语表

cURL / curl
Otwarte narzędzie wiersza poleceń i biblioteka libcurl do wysyłania zapytań HTTP/HTTPS/FTP i innych przez URL z wiersza poleceń, najpopularniejsze narzędzie programisty do debugowania API.
Metoda HTTP
Akcja zapytania HTTP, popularne: GET (odczyt), POST (tworzenie), PUT (pełna aktualizacja), PATCH (częściowa aktualizacja), DELETE (usuwanie), HEAD (pobieranie nagłówków), OPTIONS (zapytywanie możliwości serwera).
Nagłówek zapytania (Header)
Pary klucz-wartość metadanych w zapytaniu HTTP, takie jak Content-Type, Authorization, User-Agent, Cookie, Accept itp., określane w curl przez -H/--header.
Treść zapytania (Body)
Część danych zapytania HTTP, często używana w POST/PUT/PATCH, określana w curl przez -d/--data/--data-binary/-F, popularne formaty: JSON, form-urlencoded, multipart/form-data.
Content-Type
Nagłówek zapytania/odpowiedzi, określający typ mediów treści. application/json oznacza JSON, application/x-www-form-urlencoded oznacza formularz kodowany URL, multipart/form-data oznacza formularz do wysyłania plików.
Basic Auth
Podstawowa autoryzacja HTTP, przekazuje nazwę użytkownika i hasło przez nagłówek Authorization: Basic base64(user:pass), w curl określana przez -u user:pass.
Bearer Token
Autoryzacja oparta na tokenie, przekazywana przez nagłówek Authorization: Bearer <token>, często używana w JWT/OAuth2.
User-Agent
Nagłówek zapytania, identyfikujący typ klienta (przeglądarka/bot/skrypt), curl domyślnie wysyła «curl/wersja», wiele stron blokuje nieprzeglądarkowe UA, często określany przez -A.
Cookie
Pary klucz-wartość wysyłane przez serwer przez Set-Cookie i zwracane przez przeglądarkę w kolejnych zapytaniach przez nagłówek Cookie, używane do utrzymywania sesji. curl -b wysyła Cookie, -c zapisuje Cookie.
Referer
Nagłówek zapytania, określający URL strony źródłowej bieżącego zapytania, niektóre kontrole hotlinkingu/CSRF go sprawdzają. curl -e ustawia.
Przekierowanie (3xx)
Gdy serwer zwraca kody statusu 301/302/303/307/308, nakazując przeglądarce przejście na nowy URL. curl domyślnie nie śledzi, dodaj -L/--location, aby śledzić.
--compressed
Opcja curl, automatycznie dodaje nagłówek Accept-Encoding: deflate, gzip i automatycznie dekompresuje odpowiedź. Bez niej odpowiedź może być skompresowanymi danymi jako nieczytelne znaki.
-k/--insecure
Opcja curl, pomija weryfikację certyfikatu HTTPS, używana tylko w środowiskach testowych z certyfikatami samopodpisanymi, zabroniona w produkcji.
fetch API
Natywne przeglądarkowe JavaScript API do zapytań HTTP, zwraca Promise, obsługiwane przez wszystkie nowoczesne przeglądarki.
Axios
Popularna biblioteka klienta HTTP oparta na Promise, uniwersalna dla przeglądarki i Node.js, automatyczna serializacja JSON, interceptory, timeout i anulowanie.
OkHttp
Biblioteka klienta HTTP Java/Android od firmy Square, wysokowydajna, z obsługą HTTP/2, pulą połączeń, przezroczystym GZIP.
HttpClient (.NET)
Zalecany klient HTTP dla C#/.NET, przestrzeń nazw System.Net.Http, standardowe API w .NET Core/.NET 5+.
Invoke-RestMethod
Wbudowany w PowerShell 3.0+ cmdlet do zapytań HTTP, automatycznie parsuje odpowiedzi JSON/XML na obiekty PowerShell.

Tabela zgodności popularnych opcji cURL z 11 docelowymi językami

Popularne wartości Content-Type i użycie w curl

Porównanie trzech formatów Copy as cURL z Chrome DevTools

Troubleshooting