2013-03-21 5 views
5

Ich habe ein Stück Code, der entwickelt wurde, um eine beliebige URL zu empfangen und aus dem Internet zu rippen. Bisher es arbeitet gut, bis jemand diese URL gab:Nicht in der Lage, eine Remote-Datei zu CURL

http://www.aspensurgical.com/static/images/aspen_hill-rom_logo.png

Wenn ich es von meinem Browser getroffen, zeigt es ganz gut. Aber wenn ich versuche, es zu kräuseln nach unten, die ich erhalten:

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> 
<html><head> 
<title>403 Forbidden</title> 
</head><body> 
<h1>Forbidden</h1> 
<p>You don't have permission to access /static/images/aspen_hill-rom_logo.png 
on this server.</p> 
<hr> 
<address> Server at www.aspensurgical.com Port 80</address> 
</body></html> 

Der Curl-Code ich benutze ist:

$ch = curl_init(str_replace(' ', '%20', $url)); 
$fh = fopen($local_file, "w"); 
curl_setopt($ch, CURLOPT_FILE, $fh); 
curl_exec($ch); 
curl_close($ch); 

Ist ihr Server irgendwie zu realisieren Ich bin kein normaler Browser und mich zu booten ?

Antwort

8

Sie haben useragent überprüfen, wer du bist. Fügen Sie normales Browser-Useragent hinzu und Sie sollten in Ordnung sein.

curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; rv:19.0) Gecko/20100101 Firefox/19.0"); 

Hier ist Arbeitsbeispiel in codepad.

+2

Sie, mein Herr, verdienen einen großen großen Cookie. Danke vielmals! – Anthony

+1

Kannst du Useragent erklären, was ist mit Chrome, Safari und anderen Browsern, warum müssen wir sie hinzufügen? – Naeem

+0

@Naeem Jeder Browser sendet seine eigene User-Agent-Zeichenfolge, um sich zu identifizieren. Gemeinsame Suchmaschinen-Bots zeigen im User-Agent-String an, für welche Suchmaschine sie arbeiten. Das ist der Grund, warum einige Websites diese Zeichenfolge durchsuchen, um zu sehen, wer die Seite anfordert. – Ranty

1

Einige Server, um unnötigen Datenverkehr zu blockieren, erlauben jeden Download nur von einem Browser. Also, um solche Server zu täuschen, hat curl eine zusätzliche Option --user-agent, die den Trick macht!

Ich benutze curl von meinem Windows7 PC, habe installiert gow.

Beispiel

curl --user-agent "Mozilla/4.0" http://www.example.com/archives/abc.txt --output pqr.txt