curl 코드 변환기 — Python, JavaScript, Go, PHP 등
Chrome의 "cURL로 복사"를 포함한 curl 명령을 붙여 넣으면 같은 요청을 Python, JavaScript, Node, Go, PHP, Ruby, Java, C#, wget, HTTPie 코드로 만들어 줍니다.
import requests headers = { 'Authorization': 'Bearer YOUR_API_TOKEN', 'Content-Type': 'application/json', } json_data = { 'customer_id': 'cus_123', 'items': [ { 'sku': 'TSHIRT-M', 'qty': 2, }, ], 'note': 'Leave at the door', } response = requests.post('https://api.example.com/v1/orders', headers=headers, json=json_data) print(response.status_code) print(response.text)
모든 처리는 브라우저 안에서 이루어집니다. 명령은 해석만 할 뿐 실행하거나 어디로도 보내지 않으므로, 명령 안의 토큰과 쿠키는 기기에 그대로 남습니다. 모든 무료 도구 보기.
문제를 발견하셨거나 개선할 점이 있나요? 모든 메시지를 읽고 빠르게 고칩니다.
이 무료 curl 코드 변환기는 curl 명령을 받아 같은 HTTP 요청을 Python(requests), JavaScript(fetch 또는 Axios), Node.js, Go, PHP, Ruby, Java, C#, wget, HTTPie 코드로 작성합니다. 일반적인 사용 방법은 이렇습니다. 브라우저 개발자 도구에서 요청을 찾아 cURL로 복사를 선택하고 여기에 붙여 넣으면, 헤더를 다시 입력하거나 JSON 본문을 손으로 이스케이프하지 않고도 작동하는 코드를 얻을 수 있습니다.
파서는 curl 자체의 규칙을 따릅니다. 짧은 옵션은 합치거나(-sSL) 붙여 쓸 수 있고(-XPOST), URL은 어디에나 올 수 있으며, -d는 폼 콘텐츠 유형의 POST를 뜻하고, -G는 데이터를 쿼리 문자열로 옮기며, --data-urlencode는 curl과 같은 방식으로 인코딩합니다. Chrome이 만드는 $'…' 문자열을 포함한 bash 따옴표 규칙과, ^ 이스케이프를 쓰는 Windows cmd 따옴표 규칙을 이해합니다. 브라우저에서 TLS 검증 건너뛰기처럼 대상 언어로 표현할 수 없는 것은 조용히 빼지 않고 주석으로 알려 줍니다.
사용 방법
- Chrome이나 Edge 개발자 도구에서 네트워크 탭을 열고 요청을 마우스 오른쪽 버튼으로 클릭한 뒤 복사 → cURL로 복사(bash 또는 cmd)를 선택하세요. Firefox에서는 값 복사 → cURL로 복사를 선택하세요. 직접 작성한 curl 명령을 써도 됩니다.
- 상자에 붙여 넣으세요. 출력 위에 메서드, URL, 헤더 수, 본문 유형이 표시되므로 제대로 읽혔는지 확인할 수 있습니다.
- 대상 언어를 고르세요. 코드가 즉시 업데이트됩니다.
- 노란 상자에 표시되는 참고 사항을 읽어 보세요. 무시되었거나 주의가 필요한 옵션이 나열됩니다.
- 코드를 복사하거나 다운로드하세요. 어딘가에 커밋하기 전에 토큰과 쿠키를 바꾸세요.
자주 묻는 질문
Chrome에서 요청을 cURL로 복사하려면 어떻게 하나요?
개발자 도구(F12 또는 Cmd+Option+I)를 열고 네트워크 탭으로 이동한 뒤, 목록이 비어 있으면 페이지를 새로고침하세요. 원하는 요청을 마우스 오른쪽 버튼으로 클릭하고 복사를 고른 다음, macOS와 Linux에서는 cURL로 복사(bash), Windows에서는 cURL로 복사(cmd)를 선택하세요. 두 형식 모두 여기서 작동합니다. 복사한 명령에는 쿠키와 인증 헤더가 들어 있으므로 비밀번호처럼 다루세요.
브라우저 fetch 코드에서 일부 헤더가 빠지는 이유는 무엇인가요?
브라우저는 JavaScript가 특정 요청 헤더를 설정하지 못하게 합니다. Cookie, Host, Origin, Referer, 사실상 User-Agent, Content-Length, Accept-Encoding, Connection, 그리고 Sec-나 Proxy-로 시작하는 모든 헤더입니다. Fetch 표준에서는 이를 금지된 요청 헤더(forbidden request headers)라고 부르며 브라우저가 직접 채웁니다. 브라우저 fetch 출력은 이 헤더를 빼고 주석으로 알려 주며, Node.js fetch 출력은 Node에 그런 제한이 없으므로 그대로 둡니다.
-d, --data-raw, --data-binary의 차이는 무엇인가요?
-d(--data)는 텍스트를 본문으로 보내지만, @로 시작하는 값은 파일에서 읽으며 캐리지 리턴과 줄바꿈을 제거합니다. --data-raw는 @ 파일 동작만 없고 나머지는 같아서 브라우저가 이를 사용합니다. --data-binary도 @파일을 읽지만 바이트를 정확히 그대로 유지합니다. 세 가지 모두 직접 헤더를 지정하지 않으면 Content-Type: application/x-www-form-urlencoded를 설정하며, -d 옵션이 여러 개면 &로 연결됩니다.
curl은 리디렉션을 따라가나요?
기본적으로는 따라가지 않습니다. -L(--location)을 추가하지 않으면 3xx 응답을 그대로 반환합니다. 대부분의 HTTP 라이브러리는 반대입니다. fetch, Python requests, Go net/http, Node의 Axios, .NET HttpClient는 자동으로 리디렉션을 따라갑니다. Java HttpClient, PHP cURL, Ruby Net::HTTP는 따라가지 않으므로, 명령에 -L이 있으면 생성된 코드에서 이들에 대해 리디렉션 따라가기를 켭니다(Ruby는 Net::HTTP에 해당 스위치가 없어 참고 사항으로 안내합니다).
--compressed는 무엇을 하며, 코드에도 필요한가요?
curl이 Accept-Encoding 헤더(curl 빌드에 따라 gzip, deflate, br, zstd)를 보내고 응답의 압축을 풀게 합니다. 브라우저, Python requests, Go, Node fetch는 따로 지정하지 않아도 이미 압축 응답을 요청하고 디코딩합니다. 생성된 코드는 라이브러리에서 켜야 하는 경우에만 이를 추가합니다. PHP의 CURLOPT_ENCODING, C#의 AutomaticDecompression, wget의 --compression=auto입니다.
curl 명령이 어딘가로 전송되나요?
아니요. 명령은 이 페이지의 JavaScript가 파싱하고 변환합니다. 실행되지도, 서버로 전송되지도 않으므로 개발자 도구에서 복사한 요청의 토큰과 세션 쿠키는 내 컴퓨터에만 남습니다.
curl 옵션과 변환 결과
• -X / --request는 메서드를 설정합니다. 없으면 GET이고, -d, --json, -F가 있으면 POST, -I면 HEAD, -T면 PUT입니다.
• -H / --header는 헤더를 추가합니다. 뒤에 아무것도 없는 "Name:"은 헤더를 제거하고, "Name;"은 빈 헤더를 보냅니다.
• --json 본문은 JSON을 보내며 Content-Type과 Accept를 모두 application/json으로 설정합니다(curl 7.82 이상).
• -F name=value와 -F file=@photo.jpg;type=image/jpeg는 multipart/form-data 본문을 만듭니다. 코드에서는 상황에 맞게 FormData, files=, CURLFile, MultipartFormDataContent를 사용합니다.
• -u user:password는 Basic 인증이 되고, -b "a=1; b=2"는 Cookie 헤더(Python에서는 cookies dict)가 됩니다.
• -A와 -e는 User-Agent와 Referer를 설정합니다. -k / --insecure는 인증서 검사를 끕니다. 프로덕션에 절대 들어가서는 안 되므로 가능한 경우 경고와 함께 표시합니다.
• -G / --get은 모든 -d와 --data-urlencode 값을 쿼리 문자열로 URL에 붙여 GET으로 보냅니다.
• -s, -S, -v, -i, -o와 진행률 옵션은 curl의 출력 방식에만 영향을 주므로 코드에 대응하는 것이 없어 무시됩니다.
Bash와 Windows 따옴표 규칙 간단 정리
bash에서 '작은따옴표' 안의 텍스트는 그대로 쓰이고, "큰따옴표"는 \"와 \$ 이스케이프를 허용하며, $'…' 문자열은 \n, \t, \', \xHH 이스케이프를 이해합니다. 줄 끝의 백슬래시는 명령을 다음 줄로 이어 줍니다. Chrome은 헤더나 본문에 작은따옴표나 비ASCII 문자가 있으면 $'…'를 사용합니다.
Windows cmd에서는 ^가 이스케이프 문자이자 줄 이어 쓰기 문자입니다. Chrome의 "cURL로 복사(cmd)"는 모든 값을 ^"…^"로 감싸고 &, %, {, } 같은 문자를 ^로 이스케이프합니다. PowerShell은 또 다릅니다. Windows PowerShell 5에서는 curl이 Invoke-WebRequest의 별칭이므로 curl.exe를 명시적으로 실행하세요. 이 변환기는 bash와 cmd 형식을 모두 읽으며, 백틱 줄 이어 쓰기 같은 PowerShell 전용 문법은 지원하지 않습니다.
관련 무료 도구
- JSON → TypeScript — JSON 샘플을 붙여 넣으면 TypeScript 인터페이스, Zod 스키마, JSON Schema, 또는 Go, Python, Java, C#, Kotlin, Swift, Rust 타입을 만들어 줍니다.
- JSON 포매터 — JSON을 보기 좋게 정렬하고, 압축하고, 검증하세요. 파싱 오류는 줄과 열 위치까지 알려 줍니다. 브라우저에서 실행, 업로드 없음.
- JWT 디코더 — JWT의 헤더와 페이로드를 디코딩하고, 만료 시간을 알기 쉽게 확인하고, HS·RS·PS·ES 서명을 검증하거나 새 토큰에 서명하세요. 브라우저 밖으로 나가는 것은 없습니다.
- Base64 인코더 / 디코더 — 텍스트나 파일을 Base64로 인코딩하고, 이미지를 CSS·<img> 코드와 함께 data URI로 바꾸고, Base64를 미리보기 가능한 파일로 디코딩하세요. 어떤 데이터도 브라우저 밖으로 나가지 않습니다.
- SSL 인증서 디코더 — PEM 인증서, 체인, CSR을 붙여 넣거나 .crt 파일을 업로드해 SAN, 만료일, 발급자, 키 유형, 지문을 확인하세요. 브라우저에서 디코딩합니다.