Quando utilizzi il client GuzzleHTTP, se il dominio con cui stai interagendo utilizza Sucuri, potresti trovare alcuni risultati imprevisti. Generalmente i problemi si presentano con codici di risposta agli errori 4XX o 5XX. Stranamente il problema si presenta quando l'URL funziona normalmente nel browser (o curl), ma presenta un inspiegabile 403 con Guzzle. Parte del tuo chilometraggio può variare in base alle impostazioni e alla configurazione di Securi dei domini, ma di solito questo suggerimento può portarti sulla strada giusta!
Correzione di 403 errori durante l'utilizzo di Guzzle con Sucuri
Se riscontri un problema con "GET"-ing una pagina utilizzando Guzzle ma l'URL funziona normalmente in un browser, prova questo. Se configuri il tuo client Guzzle per utilizzare alcune intestazioni specifiche, potrebbe aiutare Securi ad accettare la tua richiesta. In questi casi il problema non è in realtà con Securi, il tuo codice o il server, piuttosto il problema è solo che la tua richiesta attiva un falso positivo nel loro sistema. Impostando queste intestazioni puoi segnalare a Securi che la tua richiesta non è dannosa.
Prova la seguente configurazione del client 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',
],
]);
Cosa possono fornire queste opzioni?
Le opzioni di Guzzle utilizzate qui sono semplicemente le intestazioni opzione. Questa opzione utilizza un array per impostare le intestazioni HTTP che desideri utilizzare con le richieste. L'opzione è semplicissima da usare, basta impostare la chiave dell'intestazione sulla chiave e il valore dell'intestazione sul valore! Qui stiamo usando le seguenti intestazioni:
- User-Agent:Questa intestazione è una stringa che descrive le caratteristiche del software che effettua la richiesta. Aiuta i peer di rete a identificare il tipo di applicazione, il sistema operativo, il fornitore di software e le versioni. La chiave qui è semplicemente impostarne uno che descriva lo strumento che stai utilizzando e costruito! (Quindi aggiorna "Nome del tuo strumento" per adattarlo.)
- Accetta: questa intestazione definisce il tipo di documento e i sottotipi variabili accettati dal software richiedente. In questo caso stiamo utilizzando lo stesso valore che potrebbe utilizzare un browser moderno. Puoi andare avanti e usarlo così com'è!
- Accept-Encoding:questa intestazione annuncia quale codifica del contenuto è accettabile per la risposta da utilizzare. Generalmente viene utilizzato per definire l'algoritmo di compressione che il client è in grado di comprendere. Nel nostro caso utilizziamo Gzip, deflate (zlib) e br(Brotli).
Con queste 3 intestazioni impostate il falso positivo attivato in Securi ora può essere risolto! Puoi continuare a costruire/utilizzare il tuo strumento senza più grattacapi. E soprattutto non è necessario modificare nulla in Securi per risolvere il problema.
Se sai davvero cosa stai facendo con le intestazioni HTTP, probabilmente puoi anche perfezionare i valori Accept per includere solo i doctype con cui vuoi occuparti.
Cos'è GuzzleHTTP?
Guzzle è un client HTTP basato su PHP utilizzato per semplificare la creazione di richieste Web in PHP. In passato abbiamo spiegato come utilizzare Composer e persino utilizzato Guzzle come uno degli esempi. Il client GuzzleHttp è un wrapper estremamente intuitivo per le funzioni PHP curl che forniscono la funzionalità del client HTTP nativo. Pensa a Guzzle come se utilizzi Curl o un browser Web :forniscigli un URL e riceverà le risorse servite dall'URL. Tuttavia, è molto più vicino al curl poiché, allo stesso modo, manca un motore di rendering di un browser.