2013-03-21 17 views
5

Ho una parte di codice progettata per ricevere qualsiasi URL e strapparla dal Web. Finora è stato lavorando bene, fino a quando qualcuno ha dato questo URL:Impossibile convertire in CURL un file remoto

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

Se mi ha colpito dal mio browser, si vede bene. Ma quando provo a riccio verso il basso, ottengo:

<!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> 

Il codice CURL che sto utilizzando è:

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

È proprio server in qualche modo rendersi conto che non sono un normale browser e mi avvio ?

risposta

8

Hanno controllo useragent per vedere chi sei. Aggiungi il normale useragent del browser e dovresti stare bene.

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

Ecco esempio di lavoro in codepad.

+2

Lei, signore, meritano un grande grande biscotto. Grazie mille! – Anthony

+1

puoi spiegare useragent, per quanto riguarda chrome, safari e altri browser, perché dobbiamo aggiungerli? – Naeem

+0

@Naeem Ogni browser invia la propria stringa di agente utente per identificarsi. I motori comuni dei motori di ricerca mostrano nella stringa dell'agente utente il motore di ricerca per cui lavorano. Ecco perché alcuni siti web scavano in questa stringa per vedere chi richiede la pagina. – Ranty

1

Alcuni server, per bloccare il traffico non necessario, consentono qualsiasi download solo da un browser. Quindi, per ingannare tali server, curl ha un'opzione aggiuntiva di --user-agent, che fa il trucco!

Uso curl dal mio PC Windows7, ho installato gow.

Esempio

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