2016/07/07

サーバで受けたリクエストを Curl で再現する Plack::Middleware::Curlizer 書いた

copy as cURL 超便利

Chrome や Firefox の開発者ツールには "copy as cURL" というブラウザの発行したリクエストを cURL コマンドで再現するためのメニューがあったりします。ターミナルからリクエストの中身をちょろちょろ書き換えて再発行したいときなど超便利ですよね。

サーバで受けたリクエストでも同じようなことをしたい

"copy as cURL" と同じようなことを、サーバサイドで受けたリクエストでもやりたくて、Plack::Middleware::Curlizer というモジュールを書きました。Plack サーバで受けたリクエストを curl で再発行するためのコマンドラインを作ってくれます。コピペでどーんと楽できます。うれしいですね!

enable 'Curlizer',
    callback => sub {
        my ($curl, $req, $env) = @_;
        print "$curl\n";
    };

上記のような感じで Plack アプリに組み込んで、ブラウザからポチっとアクセスすると、リクエストに応じて以下のような curl コマンドが出てきます(実際は 1行)。

curl 'https://bayashi.net/diary/2016/0528' \
    -H 'Connection: close' \
    -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
    -H 'Accept-Encoding: gzip, deflate, br' \
    -H 'Accept-Language: ja,en;q=0.7,en-US;q=0.3' \
    -H 'Host: bayashi.net' \
    -H 'Referer: https://bayashi.net/' \
    -H 'User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:47.0) Gecko/20100101 Firefox/47.0' \
    -H 'COOKIE: snip'

ざっと簡単な GET/POST で動くくらいのクオリティなので CPAN にはあげてませんが、(CPANあげた) だれかのお役に立てれば幸いです。

サイト内検索