次のスクリプトを使用して GET 要求をサイトに送信していますが、サーバーからの応答がありませんというエラーが表示され続けます。
- このスクリプトを実行した結果として生成されるトラフィックを確認するために、wireshark を実行しましたが、トラフィックはありません。
- ブラウザからサイトに接続でき、file_get_contents 関数を使用してコンテンツを取得することもできますが、ソケットを使用するとできません。
ソケットを使用してサイトにリクエストを送信するコードを次に示します。接続が成功しなかった場合、「サーバーからの応答がありません」というエラーが返されます。
<?php
error_reporting(0);
set_time_limit(0);
ini_set("default_socket_timeout", 5);
function http_send($host, $packet)
{
if (!($sock = fsockopen($host, 80)))
die( "\n[-] No response from {$host}:80\n");
fwrite($sock, $packet);
return stream_get_contents($sock);
}
$host="http://example.com";
$path="/";
$packet = "GET {$path} HTTP/1.0\r\n";
$packet .= "Host: {$host}\r\n";
$packet .= "Connection: close\r\n\r\n";
http_send($host, $packet);
?>
では、上記のコードで GET 要求を送信できないのは何が問題なのですか?
私には問題ないように見えます.GETリクエストのHTTPリクエストヘッダーを形成し、$packet変数に保存します。
$host は宛先サイト名です。
次に、リクエストを送信する関数 http_send を呼び出します。
エラー出力: [-] http://example.com:80からの応答なし