User Agent
Was ist ein User Agent? 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 User Agents. Die hier weiter unten aufgeführten Beispiele sollen Ihnen bei der korrekten Umsetzung Ihrer Scripte helfen.
Mittlerweile werden gewisse User Agents gegen Dos und Flooding gefiltert, z.B. Snoopy, Smarty aber auch nicht gesetzte (null) User Agents.
Unsere Server filtern ebenfalls nach bestimmten Suchmaschinen User Agents 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 User Agent nutzen, langt es wenn der User Agent 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 User Agent schicken, sondern der User Agent 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 User Agent 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 User Agent als Suchmaschine erkannt, wird der ITscope API Request unterschiedlich zeitverzögert ausgeliefert (10-20 Sekunden). Damit verhindert der Loadbalancer, dass echte Kunden keine unnötigen Ladezeiten beim Nutzen der ITscope Dienste erfahren.
Flooding-, DoS- oder keine (null) User Agents können sehr schnell geblockt werden, daher zur eigenen Sicherheit immer einen User Agent 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
// User Agent Code Start
// var $agent ="Snoopy v1.2.4";
var $agent =$_SERVER['HTTP_USER_AGENT'];
// User Agent Code Ende
Smarty Template Engine
Änderungen in der Datei smarty/libs/plugins/function.fetch.php->smarty_function_fetch
// User Agent Code Start
//$agent = "Smarty Template Engine ".$smarty->_version;
$agent = $_SERVER['HTTP_USER_AGENT'];
// User Agent Code Ende
curl
Anweisung curl_setOpt erweitern mit:
// User Agent Code Start
curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
// User Agent Code Ende
file_get_contents
Funktionsaufruf sollte so aussehen:
// User Agent 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);
// User Agent Code Ende
fsockopen
Beispiel mit User Agent:
$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
// User Agent Code Start
ini_set('user_agent',$_SERVER['HTTP_USER_AGENT']);
// User Agent 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 User Agent auf den Namen Ihrer Firma und Anwendung setzen:
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 User Agent auf den Namen Ihrer Firma und Anwendung setzen:
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)
Beispiele Java
Apache HttpGet
Bei dem HttpGet die Variable User Agent auf den Namen Ihrer Firma und Anwendung setzen
HttpGet myHttpWebRequest = new HttpGet("https://api.itscope.com....");
myHttpWebRequest.setHeader("User-Agent","applicationCompany-applicationName-applicationVersion");