dedlfix: fopen liefert 403 bei manchen Wikipedia-Seiten

Beitrag lesen

Hi!

Damals habe ich sehr lange gesucht und bin dann in einer Mailing-Liste für Wikipedia-API-Entwickler fündig geworden. Ich denke, dass ich auch ein sehr spezielles Problem, wenn man Requests an Wikipedia stellt. Keine Ahnung, ob es bei anderen Seite auch vorkommt.

Kommt es. Es ist also kein Wikipedia-spezifisches Phänomen. Obwohl der User-Agent kein Pflicht-Header ist, wollen manche Webserver ihn unbedingt haben. Was drin steht ist dann wieder egal.

Ohne "Fremdlösungen" kann man das selbst herausfinden, indem man sich die HTTP-Header eines funktionierenden Requests vornimmt - die bekommt man mit Browser-Tools wie der livehttpheaders-Extension für den Firefox - und einen Request mit diesen Headern stellt. Schrittweise entfernt man nun Header-Zeilen und schaut, ob es noch funktioniert. Irgendwann bleibt dann neben dem absoluten Minimum (GET und Host) noch der User-Agent übrig.

Die Lösung war ja dann letztlich einfach. Einfach vor dem Request diese Zeile einfügen:
ini_set("user_agent", "Twick.it");

So setzt man das generell, was für kleine Scripte kein Problem ist. Man kann auch über den Stream-Kontext gehen. Jede Fuktion, bei der man wahlweise Dateinamen oder URLs angeben kann, hat einen optionalen $context-Parameter. Weiterführende Informationen sind üblicherweise von jeder dieser Handbuchseiten verlinkt.

Lo!