当我使用 https:/www.instagram.cominstagram?__a=1 在我的浏览器中,我得到了一个漂亮的json返回;)
当在PHP脚本中使用它时
$response = file_get_contents('https://www.instagram.com/instagram/?__a=1');
$user = json_decode($response);
返回总是空的 !!!
我做错了什么?我也有同样的问题,如果我使用Curl的
谢谢你的帮助...
我也试过从那里的json响应中刮取数据,像这样(或用curl im不确定了),但一段时间后,Instagram封锁了你的IP地址,并返回一个空的响应。
编辑:下面是我使用的curl函数
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.101 Safari/537.36');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
$server_output = curl_exec($ch);
$response_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close ($ch);
if ($response_code == 200) {
$insta_json = json_decode($server_output, true);
if (is_array($insta_json) && isset( $insta_json['graphql']['user'] ) ) {
$user = $insta_json['graphql']['user'];
$data_array['user'] = [
'name' => isset($user['full_name']) ? $user['full_name'] : '',
'description' => isset($user['biography']) ? $user['biography'] : '',
'follow' => isset($user['edge_follow']['count']) ? $user['edge_follow']['count'] : '',
'followed_by' => isset($user['edge_followed_by']['count']) ? $user['edge_followed_by']['count'] : '',
'profile_pic' => isset($user['profile_pic_url']) ? $user['profile_pic_url'] : '',
];
$data_array['images'] = [];
if (isset($user['edge_owner_to_timeline_media']['edges'])) {
$images = $user['edge_owner_to_timeline_media']['edges'];
foreach ($images as $image) {
$imageData = isset($image['node']) ? $image['node'] : false;
if ($imageData) {
$data_array['images'][] = [
'liked' => isset($imageData['edge_liked_by']['count']) ? $imageData['edge_liked_by']['count'] : 0,
'comment' => isset($imageData['edge_media_to_comment']['count']) ? $imageData['edge_media_to_comment']['count'] : 0,
'image' => isset($imageData['display_url']) ? $imageData['display_url'] : '',
'thumb' => isset($imageData['thumbnail_resources'][2]) ? $imageData['thumbnail_resources'][2]['src'] : '',
'shortcode' => isset($imageData['shortcode']) ? $imageData['shortcode'] : '',
];
}
}
} // End if isset edge_owner_to_timeline_media
}// End check if user exist in array
}// End check status code 200