2010-11-15 2 views
12

Wir verwenden seit einiger Zeit Informationen von einer Site (etwas, das die Site zulässt, wenn Sie die Quelle angeben und wir tun) und wir haben die Informationen von Hand kopiert. Wie Sie sich vorstellen können, kann dies ziemlich schnell langweilig werden, also habe ich versucht, den Prozess zu automatisieren, indem ich die Informationen mit einem PHP-Skript abrief.Wie kann man sein PHP-Skript als Browser tarnen?

Die URL ich zu holen bin versucht:

http://mediaforest.ro/weeklycharts/viewchart.aspx?r=WeeklyChartRadioLocal&y=2010&w=46 08-11-10 14-11-10 

Wenn ich es in einem Browser eingeben funktioniert es, wenn ich ein file_get_contents versuchen() Ich bekomme Bad Request

ich dachte, dass sie überprüft, ob der Client ein Browser ist, damit ich eine CURL-basierte Lösung gerollt:

$ch = curl_init(); 

$header=array(
    'User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12', 
    'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 
    'Accept-Language: en-us,en;q=0.5', 
    'Accept-Encoding: gzip,deflate', 
    'Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7', 
    'Keep-Alive: 115', 
    'Connection: keep-alive', 
); 

curl_setopt($ch,CURLOPT_URL,$url); 
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true); 
curl_setopt($ch,CURLOPT_COOKIEFILE,'cookies.txt'); 
curl_setopt($ch,CURLOPT_COOKIEJAR,'cookies.txt'); 
curl_setopt($ch,CURLOPT_HTTPHEADER,$header); 
$result=curl_exec($ch); 

curl_close($ch); 

ich habe überprüft und die Header sind identisch mit meinem br owser die Kopf- und ich immer noch Bad Request

Also habe ich eine andere Lösung versucht:

http://www.php.net/manual/en/function.curl-setopt.php#78046 

Leider ist diese entweder nicht funktioniert und ich bin aus Ideen. Was vermisse ich?

+8

Haben Sie 'urlencode' in der URL vor dem Aufruf von' file_get_contents' verwendet? –

+0

Verdammt, das ist peinlich ... wie könnte ich das verpassen? – pandronic

+1

Nun, es funktioniert sogar mit file_get_contents(), also gibt es keinerlei Schutz. Sorry für verschwenden alle Zeit :) – pandronic

Antwort

11

Versuchen Sie, Ihre URL zu entkommen, ist es für mich, dass die Art und Weise funktioniert.

http://mediaforest.ro/weeklycharts/viewchart.aspx?r=WeeklyChartRadioLocal&y=2010&w=46%2008-11-10%2014-11-10 
8

Verwenden curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12');

Sie den User-Agent mit einem anderen natürlich ersetzen.

jedoch „Bad Request“ ist höchstwahrscheinlich einen fehlender/schlecht User-Agenten zu nicht verwendet. Es klingt wie der Webserver selbst nicht Ihre Anfrage .. nicht die Anwendung hinter dem angeforderten URI.

Verwandte Themen