curl コード変換 — Python、JavaScript、Go、PHP など
Chrome の「Copy as 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)
すべてブラウザ内で動作します。コマンドは解析されるだけで、実行やどこかへの送信は一切行われないため、含まれるトークンや Cookie はお使いのマシンから出ません。 すべての無料ツールを見る.
不具合や改善できそうな点を見つけましたか?いただいたメッセージはすべて読み、すぐに対応します。
この無料の curl コード変換ツールは、curl コマンドを受け取り、同じ HTTP リクエストを Python(requests)、JavaScript(fetch または Axios)、Node.js、Go、PHP、Ruby、Java、C#、wget、HTTPie のコードとして書き出します。よくある使い方は、ブラウザの DevTools でリクエストを見つけ、「Copy as cURL」を選んでここに貼り付けることです。ヘッダーを打ち直したり、JSON の本文を手でエスケープしたりせずに、動くコードが手に入ります。
パーサーは curl 自身のルールに従います。短いオプションはまとめたり(-sSL)くっつけたり(-XPOST)でき、URL はどこに置いてもよく、-d はフォームの Content-Type で POST になることを意味し、-G はデータをクエリー文字列に移し、--data-urlencode は curl と同じ方法でエンコードします。Chrome が出力する $'…' 文字列を含む bash の引用符と、^ によるエスケープを使う Windows cmd の引用符を理解します。ブラウザで TLS の検証を省略するなど、出力先の言語で表現できないものは、黙って削除するのではなくコメントで指摘します。
使い方
- Chrome や Edge の DevTools で「Network」タブを開き、リクエストを右クリックして「Copy」→「Copy as cURL」(bash または cmd)を選びます。Firefox では「値をコピー」→「cURL としてコピー」を選びます。自分で curl コマンドを書いてもかまいません。
- ボックスに貼り付けます。出力の上にメソッド、URL、ヘッダー数、本文の種類が表示されるので、正しく読み込まれたかを確認できます。
- 出力先の言語を選びます。コードがすぐに更新されます。
- 黄色のボックスに表示される注記を読みます。無視されたオプションや注意が必要なオプションが一覧表示されます。
- コードをコピーするかダウンロードします。どこかにコミットする前に、トークンや Cookie を置き換えてください。
よくある質問
Chrome でリクエストを cURL としてコピーするには?
DevTools を開き(F12 または Cmd+Option+I)、「Network」タブに移動し、一覧が空ならページを再読み込みします。目的のリクエストを右クリックし、「Copy」を選んでから、macOS と Linux では「Copy as cURL (bash)」、Windows では「Copy as cURL (cmd)」を選びます。どちらの形式もここで使えます。コピーしたコマンドには Cookie や Authorization ヘッダーが含まれるので、パスワードと同じように扱ってください。
ブラウザ用の fetch コードで一部のヘッダーが抜けているのはなぜですか?
ブラウザは、JavaScript から特定のリクエストヘッダーを設定することを許可していません。Cookie、Host、Origin、Referer、実質的には User-Agent、Content-Length、Accept-Encoding、Connection、そして Sec- や Proxy- で始まるすべてのヘッダーです。これらは Fetch 標準で「禁止リクエストヘッダー」と呼ばれ、ブラウザが自分で設定します。ブラウザ用の fetch 出力ではこれらを省き、コメントでその旨を示します。Node.js の fetch 出力にはそうした制限がないので、そのまま残します。
-d、--data-raw、--data-binary の違いは何ですか?
-d(--data)はテキストを本文として送りますが、@ で始まる値はファイルから読み込み、復帰と改行を取り除きます。--data-raw は同じですが @ によるファイル読み込みがないので、ブラウザはこちらを使います。--data-binary も @ でファイルを読み込みますが、バイト列をそのまま保ちます。3 つとも、自分でヘッダーを指定しない限り 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 には切り替えるスイッチがないため、注記が付きます)。
--compressed は何をしますか?コードでも必要ですか?
curl に Accept-Encoding ヘッダー(curl のビルド方法に応じて gzip、deflate、br、zstd)を送らせ、レスポンスを展開させます。ブラウザ、Python requests、Go、Node の fetch は、指示しなくても圧縮されたレスポンスを要求してデコードします。生成されるコードでは、ライブラリ側で有効化が必要な場合にだけ追加します。PHP の CURLOPT_ENCODING、C# の AutomaticDecompression、wget の --compression=auto です。
curl コマンドはどこかに送信されますか?
いいえ。コマンドの解析と変換は、このページの JavaScript で行われます。実行されることも、サーバーに送信されることもないので、DevTools からコピーしたリクエストに含まれるトークンやセッション Cookie は、あなたのマシンから出ません。
curl のオプションと変換結果
• -X / --request はメソッドを設定します。指定がなければ GET、-d、--json、-F があれば POST、-I なら HEAD、-T なら PUT です。
• -H / --header はヘッダーを追加します。"Name:" の後に何もなければそのヘッダーを削除し、"Name;" は空のヘッダーを送ります。
• --json body は 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 の辞書)になります。
• -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 の「Copy as 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 を整形、圧縮(minify)、検証し、解析エラーは行と列で位置を示します。ブラウザ上で動作、アップロード不要。
- JWT デコーダー — JWT のヘッダーとペイロードをデコードし、有効期限をわかりやすく表示し、HS・RS・PS・ES の署名を検証したり、新しいトークンに署名したりできます。何もブラウザの外に出ません。
- Base64 エンコーダー / デコーダー — テキストやファイルを Base64 にエンコードし、画像を CSS や <img> のコード付きでデータ URI に変換、Base64 をプレビュー可能なファイルにデコードできます。データはブラウザの外に出ません。
- SSL 証明書デコーダー — PEM の証明書、チェーン、CSR を貼り付けるか .crt ファイルをアップロードすると、SAN、有効期限、発行者、鍵の種類、フィンガープリントがわかります。ブラウザ内でデコードします。