PHP Curl e Instagram Foto
Domanda
Così qualcuno tweets un link a una foto su Instagram: http://instagr.am/p/qsvkr8ls3h/
Questo reindirizza da http://t.co/boj4ex2j a http://instagr.am/p/qsvkr8ls3h/ alla pagina di instagram effettiva http://instagram.com/p/qsvkr8ls3h/ dove risiede la foto.
Cool. Tutto ciò è buono e buono. Ora voglio un curl da seguire il collegamento tweettato e scaricare quella pagina finale, che contiene della foto. Script sembra fondamentalmente come questo:
$target = 'http://t.co/bOJ4EX2j';
$ch = curl_init();
curl_setopt ($ch, CURLOPT_HTTPGET, TRUE);
curl_setopt ($ch, CURLOPT_POST, FALSE);
curl_setopt ($ch, CURLOPT_COOKIEJAR, COOKIE_FILE); // Defined Constant
curl_setopt ($ch, CURLOPT_COOKIEFILE, COOKIE_FILE);
curl_setopt ($ch, CURLOPT_TIMEOUT, CURL_TIMEOUT); // Defined Constant
curl_setopt ($ch, CURLOPT_USERAGENT, WEBBOT_NAME); // Defined Constant
curl_setopt ($ch, CURLOPT_URL, $target); // Target site
curl_setopt ($ch, CURLOPT_REFERER, ''); // Referer value
curl_setopt ($ch, CURLOPT_VERBOSE, FALSE); // Minimize logs
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, FALSE); // No certificate
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, TRUE); // Follow redirects
curl_setopt ($ch, CURLOPT_MAXREDIRS, 4); // Limit redirections to four
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, TRUE); // Return in string
# Create return array
$return_array['FILE'] = curl_exec($ch);
$return_array['STATUS'] = curl_getinfo($ch);
$return_array['ERROR'] = curl_error($ch);
# Close PHP/CURL handle
curl_close($ch);
return $return_array;
.
Ora questo script ha molti altri componenti, ma è il giusto della parte ricciolo. Ora, riesce a sputare indietro che è atterrato sulla pagina finale corretta http://instagram.com/p/ Qsvkr8ls3h / ) dove è l'immagine - ma questo è ciò che il $ return_array ['file'] sputa:
500 Server Error
An internal server error occurred.
.
Anche quando se si passa alla pagina nel browser, con i cookie disattivati, e non firmato in Instagram (se lo sei), la pagina carica completamente!
Che diavolo mi sono perso che non consente di farlo ricrettare lo script per scaricare la pagina Instagram?! Funziona su quasi tutte le altre pagine che lo provo! Just non instagram.com ?!
Per favore qualcuno mi aiuti a crollare questo dado di un problema - apprezzerei molto qualsiasi aiuto o intuizione che qualcuno potrebbe avere.
Soluzione
Se stai eseguendo questo codice su un server e non la macchina locale, è possibile che ci sia un proxy erroneo tra il server e l'instagram.com.Controlla il codice dalla macchina locale, assicurandosi che funzioni anche in un browser sulla stessa macchina .
Se ottieni questo lavoro e scopri, come ha detto Justin Wood, che hai una pagina HTML e non l'immagine che volevi, posso aiutarti con alcuni PHP per ottenere l'URL dell'immagine (per il quale allora avrestiPer eseguire un'altra richiesta arricciata).
Altri suggerimenti
Come detto da molti di noi, quel codice sembra funzionare perfettamente bene.Tutto quello che posso suggerire è che si assicura che il report degli errori sia acceso e quindi controlla i registri di errore PHP nella directory di base.
È inoltre necessario verificare che il modulo CURL sia abilitato in Php.ini.
Non è sicuro di che altro potrebbe essere sbagliato.