piapia123
ja

cURL ツールボックス

Web

処理はすべてブラウザ内で完結します。データは送信されません

入力
ファイルをここにドロップすると読み込めます
出力

1 本の curl コマンドを 3 つの見方で扱います:コードへ(curl → 7 言語のリクエストコード)、解析(curl → メソッド・アドレス・クエリパラメータ・ヘッダー・ボディを項目ごとに列挙)、構築(テキストで書いた HTTP リクエスト → curl コマンド)。 3 方向を 1 つのツールにまとめている理由:実際に連続して使うからです。開発者ツールで「Copy as cURL」したコマンドを解析して実際に何を送っているか確かめ、コードに変換する。逆に、手で書いたリクエストを curl にして解析に戻して意図どおりか確認する。ページを分けると、視点を変えるたびに同じ内容を貼り直すことになります。 コードへは 7 つの出力先に対応します。JavaScript の fetch、Node.js の node:https、Python の requests、Python スクレイピングフレームワークの feapder、PHP の cURL、Go の net/http、Java の HttpClient です。開発者ツールの「Copy as cURL」で得られる複数行のコマンドをそのまま貼れます。シングルクォート、ダブルクォート内のエスケープ、バックスラッシュによる行継続をシェルの規則どおりに解析するため、空白で分割したときに起きる誤り(-d '{"a": 1}' の JSON 内の空白で引数が切れるなど)はありません。生成コードに影響しないオプション(--retry や --connect-timeout など)は先頭のコメントに列挙し、何が省かれたかが分かるようにします。 解析では、他のツールがやらないことを 2 つ行います。`-u` のパスワードをマスクします(この結果はスクリーンショットに撮られ、画面共有に映ります)。そして `-k`(証明書検証のスキップ)には専用の赤いバナーを付けます —— これは「ひとつのオプション」ではなく「このリクエストは相手の身元を確認しない」という宣言だからです。 構築はフォームではなくテキスト形式です。1 行目が「メソッド アドレス」(メソッドは省略可、省略時は GET)、空行の前がヘッダー、後ろがボディです。これは独自のものではなく、VS Code の REST Client と JetBrains の HTTP Client が採用している形式です。フォームにしないのは、任意のボディがフォームでは表現できないからです —— そしてボディこそ貼り付けたい部分です。

機能

  • 7 つの出力先:JavaScript(fetch)、Node.js(node:https —— -k と -u を活かせるのはこれだけ)、Python(requests)、feapder、PHP(cURL)、Go(net/http)、Java(HttpClient)
  • 3 つの方向が入力欄を共有:コードへ・解析・構築
  • シェル準拠の解析:シングルクォート、ダブルクォート内のエスケープ、行継続に対応
  • -X、-H、-d / --data-raw、-F フォーム、-u 認証、-b Cookie、-A / -e などに対応
  • -G はデータをリクエスト本文ではなくクエリ文字列に連結します(curl と同じ動作)
  • -sSL のようなオプションの連結と --opt=value の両方に対応
  • 未対応のオプションは先頭のコメントに列挙し、黙って落としません
  • 解析:メソッド・アドレス・クエリパラメータ・ヘッダー・ボディを項目ごとに列挙。JSON のボディは整形して展開します
  • 解析:-u のパスワードはマスクされ、コマンド内の平文が画面に再表示されません
  • 解析:-k は通常のオプションに混ぜず、専用のバナーで警告します
  • 構築:1 行目が「メソッド アドレス」、空行の後ろがボディ(VS Code REST Client の .http 形式)
  • 構築:シングルクォートをシェルの規則でエスケープ(`'\''`)するため、ボディにアポストロフィがあってもコマンドが切れません
  • 長い文字列は 80 / 100 / 120 桁で折り返し、その言語の連結演算子(PHP は `.`、他は `+`)でつなぎます。折り返しは書き方だけを変え、内容は変えません

使い方

  1. 方向を選びます:コードへ・解析・構築
  2. コードへ:ターミナルや開発者ツールから curl コマンドをコピーして貼り付け、出力言語を選びます
  3. 解析:curl コマンドを貼り、実際に何を送っているかを項目ごとに確認します
  4. 構築:1 行目に「メソッド アドレス」、続けてヘッダー、空行の後ろにボディを書きます
  5. コードが長い場合は「長い文字列を折り返して連結」を 80 か 100 桁にします
  6. 先頭のコメントに、省略されたオプションが示されます
  7. 結果をコピーしてそのまま使えます

よくある質問

空白で分割するだけではだめなのですか?
curl コマンドはシェルのコマンド行であり、空白区切りの文字列の並びではないからです。-d '{"a": 1}' の空白はデータの一部で、-H "X: a\"b" の引用符はエスケープです。空白で分割すると引数の切れ目がずれ、その結果は一見まったく正常なのに送信内容が違うコードになります。これが最も気づきにくい種類の不具合です。
生成されたコードにコメントがあるのはなぜですか?
元のコマンドにあって、生成コードが直接表現しないものを記録しているためです。-k による証明書検証の無効化、-L によるリダイレクト追従、そして --retry や --connect-timeout のような 1 回のリクエストには影響しないオプションです。コードと元コマンドの差が分かるように列挙しており、黙って何かが欠けることはありません。
Cookie と Basic 認証に対応していますか?
対応しています。-b の Cookie はセミコロンで分割してヘッダーに書き、-u user:pass は各言語の認証の書き方(Python の auth 引数、Go の SetBasicAuth など)に変換します。Base64 の Authorization ヘッダーを手で組み立てることはありません。
「長い文字列を折り返して連結」はデータを変えませんか?
変えません。変わるのは文字列の書き方だけで、内容は同じです:300 文字の URL は数片に分かれ、その言語の連結演算子(PHP は `.`、残り 6 言語は `+`)でつながれます。つなぎ直すと元と 1 文字も違わない —— これはテストで固定しています。意図的に避けている点が 2 つあります:エスケープシーケンスは分割しません(`\"` を `\` と `"` に割ると構文エラーになります)。コメント内の引用符も触りません(冒頭の説明文には引用符があり、それを文字列とみなして折り返すとコメントが壊れます)。行幅の制限があるコードに貼るときだけオンにしてください。
コマンドは送信されますか?
いいえ。解析と生成はブラウザ内で完結し、ページはリクエストを送りません。curl コマンドには Authorization ヘッダーやトークンが含まれることが多く、それらが端末から出ることはありません。
「構築」はなぜフォームではなくテキスト形式なのですか?
フォームでは任意のリクエストボディを表現できず、そのボディこそ貼り付けたい部分だからです。形式は、1 行目が「メソッド アドレス」(メソッドは省略可、省略時は GET)、空行までがヘッダー、その後ろがボディです。これは VS Code の REST Client と JetBrains の HTTP Client が使っている `.http` の慣習で、ここで新しく作ったものではありません。副次的な利点として、ドキュメントやチケット、同僚のメッセージから丸ごと貼り付けられます。
構築したコマンドが複数行になるのはなぜですか?
改行が出る場所は 2 つです。1 つは各オプションの前のバックスラッシュによる行継続(行末にバックスラッシュ、次の行へ続く)で、人間が読めるようにするためです。ターミナルやスクリプトに貼っても正しく動きます。もう 1 つはボディ内の改行がシングルクォート内にそのまま残ることです —— シェルはシングルクォートの複数行を許し、curl もそのまま受け取るので、内容は 1 文字も変わりません。ただし 1 行しか読まない入力欄に貼る場合は、先に自分で 1 行にまとめてください。ボディを 1 行に潰すとデータが変わりうる(JSON の改行は意味に影響しませんが、署名・プレーンテキスト・フォームではそうとは限りません)ため、ここでは忠実さを選んでいます。
解析結果で -u のパスワードがマスクされるのはなぜですか?
この結果はスクリーンショットに撮られ、画面共有に映り、ブラウザのセッションに残るからです —— 自分で貼り付けたものでも、画面にもう一度表示すべきだという理由にはなりません。パスワード自体はどの変換にも関与しません(実際に効くのは、curl が Base64 にして Authorization ヘッダーに入れるという点で、その説明は行の隣に書いてあります)ので、マスクしても得られる情報は減りません。ついでに明言しておくと、Basic 認証の Base64 は暗号化ではなく平文と同等で、HTTP で使えばパスワードを公開放送するのと同じです。

関連ツール