2010-11-15 28 views
12

Od pewnego czasu używamy informacji z witryny (coś, co pozwala na to witryna, jeśli podajesz źródło i robimy to), a my kopiujemy informacje ręcznie. Jak można sobie wyobrazić, może to być dość nudne, więc próbowałem zautomatyzować proces, pobierając informacje za pomocą skryptu PHP.Jak ukryć swój skrypt PHP jako przeglądarkę?

URL Próbuję pobrać to:

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

Gdybym wpisać w przeglądarce to działa, jeśli próbuję file_get_contents() otrzymuję Bad Request

wyobraziłem który sprawdził się, aby zobaczyć, czy klient jest przeglądarka więc walcowane rozwiązanie oparte Zwijanie:

$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); 

Sprawdziłem i nagłówki są identyczne z moim Fr. Nagłówki owser i wciąż otrzymuję Bad Request

więc spróbowałem innego rozwiązania:

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

Niestety to nie działa albo i jestem z pomysłów. czego mi brakuje?

+8

Czy użyłeś 'urlencode' na URL przed wywołaniem' file_get_contents'? –

+0

Cholera, to krępujące ... jak mógłbym tęsknić? – pandronic

+1

Cóż, działa nawet z file_get_contents(), więc nie ma żadnej ochrony. Przepraszamy za zmarnowanie czasu dla wszystkich :) – pandronic

Odpowiedz

11

Spróbuj uciekać z adresu URL, działa to dla mnie w ten sposób.

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

Zastosowanie 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');

Można wymienić useragent z innym oczywiście.

Jednak "Złe żądanie" najprawdopodobniej NIE jest związane z brakującym/złym użytkownikiem. Wygląda na to, że sam serwer nie podoba się twojemu żądaniu .. nie jest to aplikacja za żądanym URI.

Powiązane problemy