GuzzleHTTPクライアントを使用しているときに、操作しているドメインがSucuriを使用している場合、予期しない結果が生じる可能性があります。通常、問題は4XXまたは5XXエラー応答コードの邪魔になります。奇妙なことに、この問題は、URLがブラウザー(またはカール)で正常に機能している場合に発生しますが、Guzzleでは説明できない403が発生します。マイレージの一部は、ドメインのSecuriの設定と構成によって異なる場合がありますが、このヒントは通常、正しい方向に進むことができます!
SucuriでGuzzleを使用する際の403エラーの修正
Guzzleを使用してページを「GET」する際に問題が発生しているが、URLがブラウザで正常に機能する場合は、これを試してください。特定のヘッダーを使用するようにGuzzleクライアントを構成すると、Securiが要求を受け入れるのに役立つ場合があります。このような場合、問題は実際にはSecuri、コード、またはサーバーにあるのではなく、リクエストがシステムで誤検知をトリガーするだけです。これらのヘッダーを設定することで、リクエストが悪意のないものではないことをSecuriに通知できます。
次のGuzzleクライアント構成を試してください。
$guzzle = new Client([
'headers' => [
'User-Agent' => 'Name of your tool/v1.0',
'Accept' => 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
'Accept-Encoding' => 'gzip, deflate, br',
],
]);
これらのオプションは何を提供できますか?
ここで使用されるガズルオプションは、単にヘッダーです。 オプション。このオプションでは、配列を使用して、リクエストで使用するHTTPヘッダーを設定します。このオプションは非常に簡単に使用できます。ヘッダーキーをキーに設定し、ヘッダー値を値に設定するだけです。ここでは、次のヘッダーを使用しています:
- User-Agent:このヘッダーは、リクエストを行うソフトウェアの特性を説明する文字列です。これは、ネットワークピアがアプリケーションの種類、OS、ソフトウェアベンダー、およびバージョンを識別するのに役立ちます。ここで重要なのは、使用して構築したツールを説明するものを設定することです。 (したがって、「ツールの名前」を適切に更新してください。)
- Accept:このヘッダーは、リクエスト元のソフトウェアが受け入れるさまざまなドキュメントタイプとサブタイプを定義します。この場合、最新のブラウザが使用するのと同じ値を使用しています。先に進んで、これをそのまま使用できます!
- Accept-Encoding:このヘッダーは、応答で使用できるコンテンツエンコーディングをアドバタイズします。通常、クライアントが理解できる圧縮アルゴリズムを定義するために使用されます。この例では、Gzip、deflate(zlib)、br(Brotli)を使用しています。
これらの3つの見出しを設定すると、Securiでトリガーされている誤検知を解決できるようになります。あなたはもう頭痛の種なしであなたのツールを構築/使用し続けることができます。そして何よりも、問題を解決するためにSecuriで何も調整する必要はありません。
HTTPヘッダーで何をしているのかを本当に理解している場合は、Accept値を調整して、処理するDoctypeのみを含めることもできます。
GuzzleHTTPとは何ですか?
Guzzleは、PHPでのウェブリクエストの作成を簡素化するために使用されるPHPベースのHTTPクライアントです。これまで、Composerの使用方法について説明し、例の1つとしてGuzzleを使用しました。 GuzzleHttpクライアントは、ネイティブHTTPクライアント機能を提供するPHPcurl関数の非常にユーザーフレンドリーなラッパーです。 Guzzleは、Curlやウェブブラウザを使用するのと同じように考えてください。URLを指定すると、URLが提供するリソースを取得できます。同様に、ブラウザのレンダリングエンジンがないため、カールに非常に近いです。