コンテンツにスキップ

🌀 cURL ⇄ fetch / axios / wget 変換

cURL コマンドを各言語・各ライブラリの HTTP リクエストコードに変換します。ヘッダー・Cookie・ボディすべて保持。

完全無料 登録不要 ブラウザ完結 5 言語対応 ダークモード

対応している cURL オプション

-X, --request
-H, --header
-d, --data
--data-raw
--data-binary
--data-urlencode
-u, --user
-b, --cookie
-A, --user-agent
-e, --referer
-F, --form
--compressed
-k, --insecure
-L, --location
-I, --head

🔗 関連ツール

📖 つまずきやすいポイント

cURL コマンドを fetch / axios / Python requests / PHP / Go / Rust / wget / HTTPie など 13 種類のコードに変換します。ヘッダー・Cookie・ボディをそのまま保持し、処理はブラウザ内で完結します。「そのまま保持する」ことがこのツールの価値であり、同時に最大の注意点です — ブラウザの DevTools からコピーした cURL には、あなたのログインセッションがそのまま入っています。そしてブラウザが送っていたヘッダーの多くは、コードから送るべきものではありません変換は成功するのに、そのまま貼ると動かないのは、たいていこの 2 つが原因です。

ケース 何が起きるか どうする
コピーした cURL に認証情報がそのまま入っている DevTools の Copy as cURL は、そのリクエストが実際に送った全ヘッダーを書き出します — Cookie ヘッダーにはセッション ID が、Authorization にはアクセストークンが、そのまま平文で入っていますこれは「あなたとしてログインできる文字列」です。危険なのは、この cURL が共有されやすい形をしていることです — 再現手順としてチケットに貼り、Slack で同僚に送り、ブログ記事に載せ、AI に「なぜ動かないか」と聞くために貼り付けますそのどれもが、有効なセッションを外に出す行為です。しかも見た目には長いコマンドの一部にしか見えないので、貼る側が気付きません。 共有する前に CookieAuthorization の行を削ってください。 このページの処理はブラウザ内で完結するのでここに貼ること自体は安全ですが、生成されたコードにも同じ値がそのまま含まれますコピーして別の場所に貼る瞬間に、同じ問題が復活します。実務としては、API を叩くコードを書くなら、まず認証だけを自分で組み直してくださいブラウザのセッション Cookie ではなく、その API 用に発行した API キーやサービスアカウントを使うのが正しい形です。すでに共有してしまったなら、そのセッションを無効化 (ログアウトまたはトークンのローテーション) してください「たぶん誰も見ていない」は対処になりません
ブラウザのヘッダーをそのままコードに持ち込む DevTools がコピーするヘッダーには、API とは無関係のブラウザ都合のものが多く含まれます — sec-ch-uasec-fetch-modeAccept-EncodingConnectionContent-LengthHostReferer など。これらは HTTP クライアントが自動で管理する領域で、手で指定すると壊れます — Content-Length を固定値で持ち込めばボディを変えた瞬間に不整合になりAccept-Encoding: gzip を明示すると、ライブラリによっては伸長せず生の圧縮バイト列が返ります。ブラウザで動かす場合はさらに、OriginRefererCookie などは禁止ヘッダーなので fetch が黙って捨てますエラーにならないので、指定したつもりのまま動作が変わります 変換したあと、ヘッダーを削って最小構成にしてください。 実際に必要なのはたいてい メソッド・URL・Content-Type・認証・ボディの 5 つだけです。削ってから動かして、動かなくなったものだけを戻すこの順序でやると、どのヘッダーが本当に必要かが分かりますUser-Agent だけは例外的に必要なことがあります (既定値を弾く API があるため)。そしてブラウザで動かすなら、CORS を先に確認してくださいcURL は同一オリジンポリシーの外側にいるので、cURL で成功したリクエストが fetch で失敗するのは正常です。これはコードの問題ではなくサーバー側の Access-Control-Allow-Origin の問題で、変換をどう直しても解決しません。
シェルのクォートでボディが変わってしまう cURL コマンドはシェルの構文の上に乗っているので、同じコマンドでもシェルによって届く中身が変わりますWindows の cmd.exe はシングルクォートを引用符として扱わないため、-d '{"a":1}' はクォート記号ごとサーバーに届きます。PowerShell 5.1 では curlInvoke-WebRequest の別名なので、そもそも cURL のオプションが通りません。日本語を含むボディはさらに厄介で、Windows の bash から送ると、環境によっては UTF-8 ではなく Shift-JIS で送られますサーバー側では文字化けとして現れますが、コマンドは成功します。もうひとつ、-d は値の先頭が @ だとファイル名として解釈し、さらに改行を取り除きます整形済み JSON を貼ると 1 行に潰れます ボディはファイルに置き、--data-binary @body.json で送ってください。 --data-binary は改行も文字コードもそのまま送るので、シェルの解釈が入り込む余地がありません — 日本語を含む JSON をテストするときは、これが唯一確実な方法です。Windows では PowerShell からでも curl.exe と拡張子まで書けば本物の cURL が起動しますそもそもの話として、cURL は「一度動かして確かめる」ための道具で、繰り返し実行する手順書には向きません手順として残すなら、変換したコードのほうをリポジトリに置いてください。コードなら差分が読め、レビューでき、テストできます

変換されるのは「1 回のリクエスト」だけです。実際の API 利用に必要なものの多くは、cURL コマンドには写っていません — 再試行、タイムアウト、レート制限への対応、ページング、エラーハンドリング、接続の再利用生成されたコードをそのまま本番に置くと、これらが全部欠けた状態になります。とくにタイムアウトは、既定値が言語ごとに大きく違い、無限に待つものもあるので、必ず明示的に設定してください。もうひとつ、cURL は既定でリダイレクトを追いません (-L が必要) が、多くの HTTP ライブラリは既定で追います同じ URL なのに挙動が違って見える原因の定番です。そして -k / --insecure が付いた cURL を変換した場合は要注意です — これは TLS 証明書の検証を無効にするオプションで、その状態のコードを本番に持ち込むと、中間者攻撃に対して無防備になります証明書エラーは、検証を切るのではなく原因を直してください。

📖 使い方

  1. 1
    DevTools からコピー
    Chrome / Firefox の DevTools > Network タブで任意のリクエストを右クリック → Copy as cURL を選択します。
  2. 2
    cURL を貼り付け
    入力欄に cURL コマンドをペーストします。複数行の \ 区切りも認識されます。
  3. 3
    ターゲット言語を選択
    fetch・axios・Python requests・Go net/http など 13 種類から選ぶと、ヘッダー・Cookie・ボディを保持したまま変換されます。

❓ よくある質問

DevTools の Copy as cURL と完全互換ですか?
はい。-X / -H / -d / --data-raw / --data-binary / --data-urlencode / -u / -b / -A / -e / -F / --compressed / -k / -L / -I と ANSI-C quoting に対応しており、Chrome / Firefox の生成するコマンドをそのまま貼れます。
Python で requests ではなく urllib で出力したい
「Python (urllib)」を選ぶと標準ライブラリのみでの実装になります。外部依存を増やしたくない環境や CI スクリプトで重宝します。
multipart/form-data (-F) はどう扱われますか?
各言語でその言語の慣用的な書き方に変換されます。JavaScript fetch なら FormData、Python requests なら files= パラメータ、PHP cURL なら CURLOPT_POSTFIELDS に配列を渡す形です。
Authorization ヘッダのトークンはどこで管理すべき?
本番では環境変数や Secrets Manager に保存し、コードに直接書き込まないでください。本ツールが出力したコードのトークン部分は placeholder 化することを推奨します。
🐛 このツールで問題が発生しましたか?

完全無料・登録不要。再現手順だけでも結構です。届いたご報告は運営者に直接届き、修正の参考にします。

※ 不具合再現のため、ブラウザ情報 (UA / 画面サイズ / 言語 / URL) を自動で送信します