User Agent obligatoire pour les requêtes API

Last modified: 20. septembre 2022

User Agent


Qu’est-ce qu’un agent utilisateur ? Voir https://fr.wikipedia.org/wiki/User_Agent

L’équilibreur de charge ITscope qui reçoit les requêtes API dispose de certains mécanismes de protection concernant le DoS, le Flooding et les requêtes des moteurs de recherche. Pour éviter d’être victime de ces mécanismes de protection, une règle à respecter lors de la récupération des demandes d’API est de définir des agents utilisateurs (User Agents). Les exemples ci-dessous devraient vous aider à mettre en œuvre vos scripts correctement.

Entre-temps, certains agents utilisateurs sont filtrés contre les DoS et les Floodings, par exemple Snoopy, Smarty mais aussi les agents utilisateurs non paramétrés (nuls).

Nos serveurs filtrent également les agents utilisateurs de moteurs de recherche spécifiques tels que : bot spider search seek retriever checker agent crawler gonzo yandex snoopy slurp Indy.

Gestion des marchandises et autres applications

Pour les applications qui utilisent toujours un agent utilisateur fixe, il suffit que l’agent utilisateur soit constitué d’une combinaison du nom de la société (nom de la société qui a développé l’application) et du nom de l’application et de la version de l’application.

ex. société en développement – nom de la demande – version de la demande

Magasins et moteurs de recherche

Les magasins ne doivent pas envoyer un agent utilisateur fixe à l’API ITscope, mais l’agent utilisateur est toujours celui du navigateur avec lequel le client navigue dans le magasin.

Par conséquent, il est très important, si des appels d’API ITscope sont utilisés dans un magasin, que l’agent utilisateur du client demandeur soit correctement redirigé vers l’API ITscope. Ainsi, notre équilibreur de charge peut reconnaître que la requête provient d’un navigateur d’utilisateur normal et non d’un moteur de recherche.

Impact

Si un agent utilisateur est détecté comme un moteur de recherche, la demande d’API ITscope est délivrée avec des délais variables (10-20 secondes). De cette façon, l’équilibreur de charge évite aux vrais clients de subir des temps de chargement inutiles lorsqu’ils utilisent les services d’ITscope.

Les Flooding, DoS ou pas (null) User Agents peuvent être bloqués très rapidement, donc toujours définir un User Agent pour votre propre sécurité.

Exemples de requêtes PHP

Instructions pour les scripts PHP afin de soumettre les agents utilisateurs.

Actuellement, de nombreuses demandes de service web sont soumises avec un agent utilisateur incorrect ou inexistant. Nous vous demandons donc de modifier vos demandes en suivant les instructions ci-dessous.

Snoopy

Modifications dans le fichier Snoopy.class.php

// User Agent début du code
// var $agent ="Snoopy v1.2.4";
var $agent =$_SERVER['HTTP_USER_AGENT']; 
// User Agent fin du code


Smarty Template Engine
Modifications dans le fichier smarty/libs/plugins/function.fetch.php->smarty_function_fetch

// User Agent début du code
//$agent = "Smarty Template Engine ".$smarty->_version;
$agent = $_SERVER['HTTP_USER_AGENT'];
// User Agent fin du code


curl
Prolongez l’instruction curl_setOpt avec :

// User Agent début du code
curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
// User Agent fin du code


file_get_contents

L’appel de fonction devrait ressembler à ceci :

// User Agent début du code
$opts = array (
 'http'=>array (
 'header'=>"User-Agent: " . $_SERVER['HTTP_USER_AGENT'] . " \r\n"
 )
);
$context = stream_context_create($opts); 
$ihreVariable = file_get_contents($url,false,$context);
// User Agent fin du code


fsockopen

Exemple avec User Agent :

$fp = @fsockopen($url, 80, $errno, $errstr, $timeout);
$out = "GET / HTTP/1.0\r\n";
$out .= "Host: www.example.com\r\n";
// UserAgent début du code
$out .= 'User-Agent: '.$_SERVER['HTTP_USER_AGENT'] . "\r\n";
// User Agent fin du code


fopen

Exemple avec User Agent :

// User Agent début du code
ini_set('user_agent',$_SERVER['HTTP_USER_AGENT']); 
// User Agent fin du code
$result = @fopen($url,"r");


Varien_Http_Client (Magento)
Exemple pour le fichier magento\lib\Varien\Http\client.php

class Varien_Http_Client extends Zend_Http_Client
{
 public function __construct($uri = null, $config = null)
 {
 //$this->config['useragent'] = 'Varien_Http_Client';
 $this->config['useragent'] = $_SERVER['HTTP_USER_AGENT']; 
 parent::__construct($uri, $config);
 }


Exemples C#

HttpWebRequest

Dans le HttpWebRequest, définissez la variable User Agent au nom de votre entreprise et de votre application :

HttpWebRequest myHttpWebRequest = HttpWebRequest)WebRequest.Create("https://api.itscope.com...");

myHttpWebRequest.UserAgent="applicationCompany-applicationName-applicationVersion";

HttpWebResponse myHttpWebResponse=(HttpWebResponse)myHttpWebRequest.GetResponse();


Exemples C++

HttpWebRequest

Dans le HttpWebRequest, définissez la variable UserAgent au nom de votre entreprise et de votre application :

HttpWebRequest^ myHttpWebRequest = (HttpWebRequest^)( WebRequest::Create( "https://api.itscope.com..." ) );

myHttpWebRequest->UserAgent = "applicationCompany-applicationName-applicationVersion";

HttpWebResponse^ myHttpWebResponse = (HttpWebResponse^)( myHttpWebRequest->GetResponse() );


Exemples Visual Basic VB

HttpWebRequest

Dans le HttpWebRequest, définissez la variable User Agent au nom de votre entreprise et de votre application :

Dim myHttpWebRequest As HttpWebRequest = CType(WebRequest.Create("https://api.itscope.com...."), HttpWebRequest)

myHttpWebRequest.UserAgent= "applicationCompany-applicationName-applicationVersion"

Dim myHttpWebResponse As HttpWebResponse = CType(myHttpWebRequest.GetResponse(), HttpWebResponse)


Exemples Java


Apache HttpGet

Dans le HttpGet, définissez la variable User Agent au nom de votre entreprise et de votre application :

HttpGet myHttpWebRequest = new HttpGet("https://api.itscope.com....");

myHttpWebRequest.setHeader("User-Agent","applicationCompany-applicationName-applicationVersion");

Was this article helpful?
Dislike 0
Views: 127