UserAgent

Was ist ein UserAgent? Siehe https://de.wikipedia.org/wiki/User_Agent

Der ITscope Loadbalancer der die API Anfragen entgegen nimmt, hat einige Schutzmechanismen bzgl. DoS, Flooding und Suchmaschinenabfragen. Damit Sie nicht Opfer dieser Schutzmechanismen werden, ist eine Regel beim Abrufen von API Requests, das Setzen von UserAgents. Die hier weiter unten aufgeführten Beispiele sollen Ihnen bei der korrekten Umsetzung Ihrer Scripte helfen.

Mittlerweile werden gewisse UserAgents gegen Dos und Flooding gefiltert, z.B. Snoopy, Smarty aber auch nicht gesetzte (null) UserAgents.

Unsere Server filtern ebenfalls nach bestimmten Suchmaschinen UserAgents wie z.B. bot spider search seek retriever checker agent crawler gonzo yandex snoopy slurp Indy.

 

Warenwirtschaften und andere Anwendungen

Bei Anwendungen die immer einen festen UserAgent nutzen, langt es wenn der UserAgent aus einer Kombination aus Firmenname (Name der Firma, die die Anwendung entwickelt hat) und der Name der Anwendung und die Version der Anwendung besteht

z.B. Entwicklende Firma - Anwendungsname - Anwendungversion

 

Shops und Suchmaschinen

Shops sollten an die ITscope API keinen festen UserAgent schicken, sondern der UserAgent ist immer der des Browsers, mit dem der Kunde im Shop navigiert.

Daher ist es sehr wichtig, falls im einem Shop ITscope API Abrufe genutzt werden, der UserAgent des anfragenden Kunden korrekt an die ITscope API weitergeleitet wird. So kann unser Loadbalancer erkennen, daß die Anfrage von einem normalen Benutzerbrowser kommt und nicht von einer Suchmaschine. 

 

Auswirkungen

Wird ein UserAgent als Suchmaschine erkannt, wird er ITscope API Request unterschiedlich zeitverzögert ausgeliefert(10-20 Sekunden). Damit verhindert der Loadbalancer das echte Kunden keinen unnötigen Ladezeiten beim Nutzen der ITscope Dienste erfahren.

Flooding-, DoS- oder keine (null) UserAgents können sehr schnell geblockt werden, daher zur eigenen Sicherheit immer einen UserAgent setzen.

 

Beispiele PHP Abfragen

Anleitungen für PHP Skripte zur Übermittlung der User-Agents.

Derzeit werden vielen Webservice Abfragen der Kunden mit inkorrektem oder keinem User-Agent übermittelt. Wir bitten Sie deshalb, Ihre Abfragen nach untenstehender Anleitung umzustellen.

Snoopy

Änderungen in der Datei Snoopy.class.php

// UserAgent Code Start
// var $agent ="Snoopy v1.2.4";
var $agent =$_SERVER['HTTP_USER_AGENT'];
// UserAgent Code Ende

 

Smarty Template Engine
Änderungen in der Datei smarty/libs/plugins/function.fetch.php->smarty_function_fetch

// UserAgent Code Start
//$agent = "Smarty Template Engine ".$smarty->_version;
$agent = $_SERVER['HTTP_USER_AGENT'];
// UserAgent Code Ende

 

curl
Anweisung curl_setOpt erweitern mit

// UserAgent Code Start
curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
// UserAgent Code Ende

 

file_get_contents

Funktionsaufruf sollte so aussehen

// UserAgent Code Start
$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);
// UserAgent Code Ende

 

fsockopen

Beispiel mit UserAgent

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

 

fopen

Beispiel mit UserAgent

// UserAgent Code Start
ini_set('user_agent',$_SERVER['HTTP_USER_AGENT']);
// UserAgent Code Ende
$result = @fopen($url,"r");

 

Varien_Http_Client (Magento)
Beispiel für Datei 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);
}

 

Beispiele C#

HttpWebRequest

Bei dem HttpWebRequest die Variable UserAgent setzen auf den Namen Ihrer Firma und Anwendung

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

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

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

 

Beispiele C++

HttpWebRequest

Bei dem HttpWebRequest die Variable UserAgent setzen auf den Namen Ihrer Firma und Anwendung

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

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

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

 

Beispiele Visual Basic VB

HttpWebRequest

Bei dem HttpWebRequest die Variable UserAgent setzen auf den Namen Ihrer Firma und  Anwendung

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)

Haben Sie Fragen? Anfrage einreichen