Недавно я просматривал отладчиком код instagramи обнаружил кое что очень привлекательное.
Оказывается в открытых аккаунтах instagramи (которые public ), в виде json лежит куча полезной информации.
К примеру instagram Дмитрия www.instagram.com/nagiev.universal
Притом данные ложатся в переменную _sharedData.
Вот снимок
Оказывается в этом коде много чего полезного.
К примеру можно получить последнее фото instagram, или же кол подписчиков или акаунт в ВК и тп.
Дело за малым выбрать эти данные из переменной и распарсить json.
Я решил создать программку которая может получать последнею фото с инстограма, хотя там намного больше полезной информации но все же.
Создам класс который будет получать данные
class Insta
{
static function GetRegPage($login)
{
$sOut=self::GETURL("https://www.instagram.com/".$login."/","");
return $sOut;
}
static function GETURL($url,$data)
{
$c = curl_init();
curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($c, CURLOPT_HEADER, false);
curl_setopt($c, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
curl_setopt($c, CURLOPT_URL, $url);
$contents = curl_exec($c);
curl_close($c);
return $contents;
}
}
<?php
ini_set('display_errors', 0);
include "simplehtmldom/simple_html_dom.php";
include "Insta.php";
$akk=$_GET['akk'];
if($akk!="")
{
$file="file/".md5($akk).".dat";
$out="";
//проверяем наличие фото в кеше
if(file_exists($file) && (filemtime()>(time()-60)))
{
$out=file_get_contents($file);
}
else
{
$sOut=Insta::GetRegPage($akk);
$html = new simple_html_dom();
$html=str_get_html($sOut);
$text=null;
$script=$html->find('script',7);//находим скрипт в документе
$text=$script->outertext;
//удоляем лишнее
$text=str_replace('<script type="text/javascript">window._sharedData = ',"",$text);
$text=str_replace("</script>","",$text);
$text=substr($text,0,strlen($text)-1);
//декодируем json
$text=json_decode($text);
//забираем фото из распакованого объекта
$img=$text->entry_data->ProfilePage[0]->user->media->nodes[0]->thumbnail_src;
$out=file_get_contents($img);
//кешируем
file_put_contents($file,$out);
}
if($out!="")
{
header( 'Content-Type: image/jpeg' );
echo $out;
}
else
{
echo "IMG No FIND";
}
}
else{
echo "No akk";
}
?>
К сожалению, не доступен сервер mySQL