CURL を使用して GET 要求を 2 つの異なる Web ページに送信するが、同じ接続を使用する BASH コマンドを作成しようとしています。私にとっては、GET リクエストをログイン ページに送信してサーバーを認証し、2 番目のリクエストが Web ブラウザで (メタリフレッシュ タグを介して) 発生するホームページへの自動リダイレクトを模倣するようなものです。(サーバーによって生成された) ホームページのコンテンツは、認証されたユーザーとゲスト ユーザーでは異なるため、要求をチェーンする必要があります。
SOF投稿からの推奨に基づいて、最初にこのコマンドを試しました(変数$IP
と$PORT
はすでに有効な値で定義されていると仮定します):
curl -u user:pass ${IP}:${PORT}/login.php && curl ${IP}:${PORT}/index.php
ただし、最初の GET の終わりと 2 番目の開始の間で、常に次のようなことが起こります。
* Connection #0 to host 10.0.3.153 left intact
* Closing connection #0
では、SOF の投稿は間違っていたのでしょうか。とにかく、このコマンドを実行すると、2 つのリクエスト間で接続が正常に維持されます。
curl -u user:pass ${IP}:${PORT}/login.php ${IP}:${PORT}/index.php
ただし、後者のコマンドよりも前者のコマンドに近いソリューションを本当に好みます。主な理由は、最初のページと 2 番目のページの出力を 2 つの異なる出力ファイルに分けるためです。だから私は次のようなことをしたい:
curl page1.html > output1 && curl page2.html > output2
もちろん、同じ接続を再利用する必要があります。これは、page2.html のコンテンツは、同じ HTTP セッションで page1.html へのリクエストを行うことに依存しているためです。
PHP ではなく、netcat または wget を使用するソリューションも受け入れます。