IWS/Beispiele/User-Agents Übermittlung

Aus ITscope GmbH - Wissensbasis

Wechseln zu: Navigation, Suche

Inhaltsverzeichnis

1 Allgemein

Bei IWS Anfragen an die ITscope Server von Seiten im öffentlichen Web (z.B. Shops) sind einige Punkte zum Schutz gegen unnötige Suchmaschinenzugriffe auf unsere Server zu beachten.

1.1 Suchmaschinen

Bitte stellen Sie sicher, daß bei Suchmaschinenzugriffen auf Ihrer Seite die IWS Anfragen an unsere Server nicht weitergeleitet werden. Bei z.B. mehr als 100.000 Produkten in einem Shop bedeutet das auch genausoviele Webservicezugriffe (Flooding). Das kann dazu führen, daß auf unseren Servern die Anfrage-IP-Adressen für eine gewisse Zeit gesperrt werden, so daß tatsächliche Kundenanfragen geblockt werden.

Möglichkeiten auf Ihrer Seite sind z.B. Filter auf Suchmaschinenanfragen oder Cachingsysteme oder das Setzen (bzw. Weiterleiten) des aufrufenden User-Agents.

1.2 User Agents

Unsere Server filtern bereits nach bestimmten User-Agents (Crawler, Bot, Spider, usw.). Mittlerweile werden aber auch andere Agents gegen Flooding gefiltert, z.B. Snoopy, Smarty oder auch nicht gesetzte (null) User-Agents.

Daher ist es sehr wichtig, daß Sie, falls Sie in einem Shop Webservice Dienste nutzen möchten, den User-Agent korrekt setzen. Es wird empfohlen, den aufrufenden User-Agent einfach an uns weiterzuleiten. So kann unser Server erkennen, daß die Anfrage nicht von einem normalen Benutzer, sondern z.B. vom GoogleBot kommt. Die hier aufgeführten Beispiele sollen Ihnen bei der korrekten Umsetzung Ihrer Scripte helfen.

2 Für 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.

2.1 Snoopy

In der Datei inc/its_integration.php nach der Anweisung

$snoopy = new Snoopy;

folgenden Code hinzufügen

// UserAgent Code Start
$snoopy->agent = $_SERVER['HTTP_USER_AGENT']; 
// UserAgent Code Ende

In der Datei Snoopy.class.php die Anweisung

var $agent ="Snoopy v1.2.4";

durch folgenden Code ersetzen

// UserAgent Code Start
var $agent =$_SERVER['HTTP_USER_AGENT']; 
// UserAgent Code Ende

die Anweisung

var $read_timeout = 0 ;// timeout on read operations, in seconds

durch folgenden Code ersetzen

var $read_timeout = 10 ;// timeout on read operations, in seconds

die Anweisung

var $_fp_timeout = 30 ;// timeout for socket connection

durch folgenden Code ersetzen

var $_fp_timeout = 10 ;// timeout for socket connection

die Anweisung in der Funktion _httprequest ca Zeile 837 (je nach Version der Klasse)

$headers .= "\r\n";
 
// set the read timeout if needed
if ($this->read_timeout > 0)

durch folgenden Code ersetzen

// Connection Keep-Alive abschalten
//$headers .= "\r\n";
$headers .= "Connection: Close\r\n\r\n";
 
// set the read timeout if needed
if ($this->read_timeout > 0)
// Connection Keep-Alive abschalten Ende

2.2 Smarty Template Engine

In der Datei smarty/libs/plugins/function.fetch.php in der Funktion smarty_function_fetch folgenden Code austauschen

$agent = "Smarty Template Engine ".$smarty->_version;

durch

// UserAgent Code Start
$agent = $_SERVER['HTTP_USER_AGENT'];
// UserAgent Code Ende

2.3 curl

Bei der Anweisung für curl_setopt

curl_setopt($ch, CURLOPT_MUTE, 1);

folgenden Code hinzufügen

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

2.4 file_get_contents

Funktionsaufruf file_get_content

$ihreVariable = file_get_contents($url);

ersetzen durch

// 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

2.5 fsockopen

Nach der Anweisung fsockopen

$fp = @fsockopen($url, 80, $errno, $errstr, $timeout);
$out = "GET / HTTP/1.0\r\n";
$out .= "Host: www.example.com\r\n";

folgenden Code hinzufügen

// UserAgent Code Start
$out .= 'User-Agent: '.$_SERVER['HTTP_USER_AGENT'] . "\r\n";
// UserAgent Code Ende

2.6 fopen

Vor der Anweisung fopen

$result = @fopen($url,"r");

folgenden Code hinzufügen

// UserAgent Code Start
ini_set('user_agent',$_SERVER['HTTP_USER_AGENT']); 
// UserAgent Code Ende

2.7 phpthumb

In der Datei phpthumb.functions.php bei der Funktion function URLreadFsock() nach der Anweisung fsockopen

if ($fp = @fsockopen($host, 80, $errno, $errstr, $timeout)) {
$out  = 'GET '.$file.' HTTP/1.0'."\r\n";
$out .= 'Host: '.$host."\r\n";

folgenden Code hinzufügen

// UserAgent Code Start
$out .= 'User-Agent: '.$_SERVER['HTTP_USER_AGENT'] . "\r\n";
// UserAgent Code Ende

2.8 Varien_Http_Client (Magento)

In der Datei magento\lib\Varien\Http\client.php bei:

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

muss diese Zeile

$this->config['useragent'] = 'Varien_Http_Client';

durch folgende Zeile ersetzt werden

$this->config['useragent'] = $_SERVER['HTTP_USER_AGENT'];

3 Für JAVA Abfragen

Derzeit keine Anleitung.

4 Für .NET Abfragen

Derzeit keine Anleitung.