IWS/Beispiele/User-Agents Übermittlung
Aus ITscope GmbH - Wissensbasis
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.