ホームページ  >  記事  >  バックエンド開発  >  Web サイト スクレイパーがリモート サーバー上の「file_get_contents()」で 403 Forbidden エラーを返すのはなぜですか?

Web サイト スクレイパーがリモート サーバー上の「file_get_contents()」で 403 Forbidden エラーを返すのはなぜですか?

DDD
DDDオリジナル
2024-10-26 18:04:03327ブラウズ

Why is My Website Scraper Returning a 403 Forbidden Error with `file_get_contents()` on Remote Servers?

file_get_contents() での 403 Forbidden エラー

Web サイト スクレイパーを開発しようとして、開発者がリモートで 403 Forbidden エラーに遭遇しました。ローカルマシン上で問題なく file_get_contents() を使用している間、サーバーにアクセスできます。エラー メッセージは、HTTP リクエストが失敗したことを示しています。

検査の結果、php.ini 構成ファイルのallow_url_fopen 設定が有効であることが確認され、さらなる解決策の検索が必要になりました。エラーの原因を解明するには、PHP のデバッグ メカニズムを使用することが推奨されます。

具体的には、$http_response_header 変数は、各 file_get_contents() 呼び出しの後に応答 HTTP ヘッダーを提供できます。さらに、ignore_errors コンテキスト オプションは実際の応答を返し、403 エラーを説明できる可能性があります。

実際の分析によると、このエラーは Referer や User-Agent などの必要な HTTP ヘッダーの欠落が原因である可能性があります。これに対処するには、stream_context_create() を使用してカスタム コンテキストを作成し、実際のブラウザ リクエストをシミュレートしてユーザー エージェントを設定します。

$context = stream_context_create(
    array(
        "http" => array(
            "header" => "User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36"
        )
    )
);

echo file_get_contents("www.google.com", false, $context);

このコード例は、ユーザー エージェントの設定と Google へのリクエストの送信を示しています。 、効果的な Web スクレイピングのためにヘッダーを操作する方法を紹介します。

以上がWeb サイト スクレイパーがリモート サーバー上の「file_get_contents()」で 403 Forbidden エラーを返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。