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.

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top