file_get_contents for Instagram 返回空响应。

问题描述 投票:0回答:1

当我使用 https:/www.instagram.cominstagram?__a=1 在我的浏览器中,我得到了一个漂亮的json返回;)

当在PHP脚本中使用它时

$response = file_get_contents('https://www.instagram.com/instagram/?__a=1');
$user = json_decode($response);

返回总是空的 !!!

我做错了什么?我也有同样的问题,如果我使用Curl的

谢谢你的帮助...

php browser instagram file-get-contents
1个回答
0
投票

我也试过从那里的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
© www.soinside.com 2019 - 2024. All rights reserved.