User Agent Pflicht bei API Abrufen

Last modified: 21. September 2020

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. SnoopySmarty 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");

Was this article helpful?
Dislike 0
Views: 89