Wikipedia hat einen simplen aber effektiven Schutz, um sich vor Content-Diebstahl zu schützen: eine Abfrage ohne "User-Agent" erhält nur einen praktisch nichts-sagenden Fehler:
Failed to open stream: HTTP request failed! HTTP/1.0 403 Forbidden
Anders ausgedrückt: wer mit dem Browser auf Wikipedia surft hat kein Problem, wer aber einen Grabber nutzt um Wikipedia-Content abzufragen kriegt keine Ergebnisse.
Nun ist es aber gerade kein Content-Diebstahl wenn man Wikipedia-Texte auf seiner Homepage zitiert, egal ob in Auszügen oder als Ganzes -- solange die Herkunft bzw. der Autor genannt wird. (Diesen Umstand wissen die meisten Wikipedia-Autoren aber selbst auch nicht.)
Um Wikipedia-Content trotzdem abzufragen nutze ich diese Python-Funktion:
# -*- coding: UTF-8 -*-
import urllib2
def get_wiki_page(keyword):
headers = {
'User-Agent': 'Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3',
'Accept-Encoding': 'deflate',
'Accept-Charset': 'utf-8',
'Referer': 'http://de.wikipedia.org/wiki/Hauptseite',
}
url = 'http://de.wikipedia.org/wiki/%s' % keyword
try:
request = urllib2.Request(url, None, headers)
response = urllib2.urlopen(request)
content = response.read()
response.close()
return content
except urllib2.HTTPError:
print "HTTPError: %s" % url
print get_wiki_page("Urheberrecht")
In PHP würde diese Funktion etwa so aussehen. Hier mit Hilfe der Curl-Funktionen.
<?php
function get_wiki_page($keyword)
{
$url = 'http://de.wikipedia.org/wiki/'.$keyword;
$ch = curl_init();
$options = array(
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => True,
CURLOPT_HEADER => False,
CURLOPT_USERAGENT => 'Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3',
CURLOPT_ENCODING => 'deflate',
CURLOPT_REFERER => 'http://de.wikipedia.org/wiki/Hauptseite',
);
curl_setopt_array($ch, $options);
$response = curl_exec($ch);
curl_close($ch);
return $response;
}
echo get_wiki_page("Urheberrecht");
?>