Pergunta

Então, alguém tweeta um link para uma foto no Instagram: http://instagr.am/p/QSVkR8LS3H/

Isso redireciona de http://t.co/bOJ4EX2j para http://instagr.am/p/QSVkR8LS3H/ para a página real do Instagram http://instagram.com/p/QSVkR8LS3H/ onde reside a foto.

Legal.Tudo isso é bom e bom.Agora quero que um cURL siga o link tweetado e baixe aquela página final, que contém o <img> da foto.O script é basicamente assim:

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

Agora, este script tem muito mais componentes, mas isso é apenas a parte cURL.Agora, ele consegue cuspir que pousou na página final correta http://instagram.com/p/QSVkR8LS3H/) onde está a imagem - mas é isso que $return_array['FILE'] cospe:

 500 Server Error

 An internal server error occurred.

Mesmo quando você navega até a página no seu navegador, com os cookies desativados e sem entrar no Instagram (se estiver), a página carrega completamente!

O que diabos estou perdendo que não permite esse script enrolado para baixar a página do Instagram?!Funciona em quase todas as outras páginas que eu experimento!Só não Instagram.com?!

Por favor, alguém me ajude a resolver esse problema - eu apreciaria muito qualquer ajuda ou visão que alguém possa ter.

Foi útil?

Solução

Se você estiver executando este código em um servidor e não em sua máquina local, é possível que haja algum proxy mal configurado entre o servidor e o Instagram.com.Verifique o código da sua máquina local, certificando-se de que também funciona em um navegador na mesma máquina.

Se você fizer isso funcionar e descobrir, como Justin Wood disse, que você tem uma página HTML e não a imagem que queria, posso ajudá-lo com um pouco de PHP para obter o URL da imagem (para o qual você teria que executar outro solicitação cURL).

Outras dicas

Como dito por muitos de nós, esse código parece funcionar perfeitamente.Tudo o que posso sugerir é que você verifique se o relatório de erros está ativado e, em seguida, verifique os logs de erros do PHP em seu diretório base.

Você também pode verificar se o módulo cURL está habilitado no PHP.ini.

Não tenho certeza do que mais poderia estar errado.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top