GNU/Linux >> Tutoriels Linux >  >> Linux

Guzzle &Sucuri :Correction des erreurs de requête 403

Lorsque vous utilisez le client GuzzleHTTP, si le domaine avec lequel vous interagissez utilise Sucuri, vous pouvez trouver des résultats inattendus. Généralement, les problèmes se présentent sous la forme de codes de réponse d'erreur 4XX ou 5XX. Curieusement, le problème se présente lorsque l'URL fonctionne normalement dans le navigateur (ou curl), mais présente un 403 inexplicable avec Guzzle. Une partie de votre kilométrage peut varier en fonction des paramètres et de la configuration de Securi des domaines, mais cette astuce peut généralement vous mettre sur la bonne voie !

Correction des erreurs 403 lors de l'utilisation de Guzzle avec Sucuri

Si vous rencontrez un problème avec 'GET'-ing une page à l'aide de Guzzle mais que l'URL fonctionne normalement dans un navigateur, essayez ceci. Si vous configurez votre client Guzzle pour utiliser certains en-têtes spécifiques, cela pourrait aider Securi à accepter votre demande. Dans ces cas, le problème ne vient pas réellement de Securi, de votre code ou de votre serveur. Le problème est simplement que votre demande déclenche un faux positif dans leur système. En définissant ces en-têtes, vous pouvez signaler à Securi que votre demande n'est pas malveillante.

Essayez la configuration suivante du 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',
  ],
]);

Que peuvent apporter ces options ?

Les options Guzzle utilisées ici sont simplement les en-têtes option. Cette option utilise un tableau pour définir les en-têtes HTTP que vous souhaitez utiliser avec les requêtes. L'option est super simple à utiliser, il vous suffit de définir la clé d'en-tête sur la clé et la valeur d'en-tête sur la valeur ! Ici, nous utilisons les en-têtes suivants :

  • User-Agent :cet en-tête est une chaîne décrivant les caractéristiques du logiciel effectuant la requête. Il aide les pairs du réseau à identifier le type d'application, le système d'exploitation, le fournisseur de logiciels et les versions. La clé ici est d'en définir un qui décrit l'outil que vous utilisez et que vous construisez ! (Donc, mettez à jour "Nom de votre outil" pour l'adapter.)
  • Accept : Cet en-tête définit les différents types et sous-types de documents acceptés par le logiciel demandeur. Dans ce cas, nous utilisons la même valeur qu'un navigateur moderne pourrait utiliser. Vous pouvez continuer et utiliser celui-ci tel quel !
  • Accept-Encoding :cet en-tête annonce quel encodage de contenu est acceptable pour la réponse à utiliser. Généralement, il est utilisé pour définir l'algorithme de compression que le client est capable de comprendre. Dans notre cas, nous utilisons Gzip, deflate (zlib) et br(Brotli).

Avec ces 3 rubriques définies, les faux positifs déclenchés dans Securi peuvent maintenant être résolus ! Vous pouvez continuer à construire/utiliser votre outil sans plus de maux de tête. Et surtout, il n'est pas nécessaire d'ajuster quoi que ce soit chez Securi pour résoudre le problème.

Si vous savez vraiment ce que vous faites avec les en-têtes HTTP, vous pouvez probablement même affiner les valeurs Accept pour n'inclure que les doctypes que vous souhaitez traiter.

Qu'est-ce que GuzzleHTTP ?

Guzzle est un client HTTP basé sur PHP utilisé pour simplifier la création de requêtes Web en PHP. Dans le passé, nous avons expliqué comment utiliser Composer et même utilisé Guzzle comme l'un des exemples. Le client GuzzleHttp est un wrapper extrêmement convivial pour les fonctions curl PHP qui fournissent la fonctionnalité client HTTP native. Pensez à Guzzle comme à l'utilisation de Curl ou d'un navigateur Web :vous lui donnez une URL et il obtiendra les ressources que l'URL dessert. C'est beaucoup plus proche de curl car, de même, il manque un moteur de rendu d'un navigateur.


Linux
  1. Partage d'origine de référence croisée (CORS)

  2. Erreurs PHP

  3. 403 Erreurs interdites lorsque vous travaillez sur votre site Web ? Pare-feu, pare-feu, pare-feu

  4. Écouter la requête wakeonlan

  5. OpenVPN client à client

Comment faire une requête POST avec cURL

Comment installer le client de bureau Nextcloud sur Linux

Client ADSL

Existe-t-il un client OneDrive pour Linux ?

10 clients de messagerie Linux + 7 clients de messagerie Terminal [&installation]

Dépannage :erreurs de connexion au serveur