2020年instagram api更改后如何从instagram公众帐户获取instagram关注者数量?

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

我试图仅使用用户的 Instagram 句柄(又名@myusername)来检索关注者计数。我在几个答案中读到,您可以访问“https://www.instagram.com/{username}/?__a=1”来检索包含所有详细信息的 json 块。然而,当我在 2020 年 API 更改后尝试这样做时,URL 只是将我重定向到登录页面。

我还查看了 instagram 基本显示/图形 api,但我似乎找不到一种方法来获取其他用户的关注者数量。

来自ig官方基本显示api文档:https://developers.facebook.com/docs/instagram-basic-display-api/reference/user
该API仅允许您获取account_type、id、ig_id(即将弃用)、媒体计数和用户名。 (没有关注者数量的迹象)

来自ig graph api官方文档: https://developers.facebook.com/docs/instagram-api
“API 无法访问 Intagram 消费者帐户(即非企业或非 Creator Instagram 帐户)。如果您正在为消费者用户构建应用程序,请改用 Instagram 基本显示 API。”

由于我的程序应该从不一定专业的帐户中检索关注者计数,所以我似乎不知道该怎么做......

总结:

  • 我尝试过网页抓取 -> 重定向到登录页面
  • 基本显示 api -> 无法获取关注者数量
  • Graph api -> 无法访问消费者账户

有人有解决办法吗?

谢谢!

instagram instagram-api
4个回答
19
投票

有同样的问题。我最终检查了 Instagram 网络并发现了这个:

https://i.instagram.com/api/v1/users/web_profile_info/?username=<USERNAME>.

确保您在请求中添加了

user-agent
标头并具有以下值:

Instagram 76.0.0.15.395 Android (24/7.0; 640dpi; 1440x2560; samsung; SM-G930F; herolte; samsungexynos8890; en_US; 138226743)

您可以通过

data.user.edge_followed_by.count

获取关注者数量

5
投票

您可以使用Instaloader Python 模块。 这是一个简单的例子:

import instaloader
L = instaloader.Instaloader()
user = "IG_USERNAME"
password = "IG_PASSWORD"
L.login(user, password)
profile = instaloader.Profile.from_username(L.context, user)

print(profile.followees) #number of following
print(profile.followers) #number of followers
print(profile.full_name) #full name
print(profile.biography) #bio
print(profile.profile_pic_url)  #profile picture url 
print(profile.get_posts()) #list of posts
print(profile.get_followers()) #list of followers
print(profile.get_followees()) #list of followees

4
投票

Instagram 屏蔽了您的 IP...您需要使用未检测到的代理从 Instagram 上抓取该 IP,通常是住宅 IP。

向 IG API 端发送 HTTP 请求 > 如果收到 JSON 响应,则表示良好且未检测到,否则检测到代理,对 Instagram 不利。

代码(在 c# 中,但在 python 中可以遵循相同的逻辑):

var httpClientHandler = new HttpClientHandler()
            {
                Proxy = new WebProxy("127.0.0.1:8080", false),
                UseProxy = true
            };

            var client = new HttpClient(handler: httpClientHandler, disposeHandler: true);
            var response = await client.GetAsync("https://www.instagram.com/instagram/?__a=1");

        
            if ( response.Content.Headers.ContentType.MediaType == "application/json")
            {
                // Not detected proxy and good for Instagram

            }
            else
            {
               // Detected proxy and not good for Instagram
            }

如果你问为什么 Instagram 会屏蔽某些 IP?只是 Instagram 有一个巨大的数据库,其中包含过去发送超过允许限制请求的 IP...他们这样做是为了防止抓取。


0
投票

使用 PHP curl 的 PHP 代码:

<?php
$username = 'USERNAME'; // Replace 'USERNAME' with the Instagram username you want to query

// Set up request URL
$request_url = 'https://i.instagram.com/api/v1/users/web_profile_info/?username=' . $username;

// Set up headers
$headers = array(
    'User-Agent: Instagram 76.0.0.15.395 Android (24/7.0; 640dpi; 1440x2560; samsung; SM-G930F; herolte; samsungexynos8890; en_US; 138226743)',
    'Origin: https://www.instagram.com',
    'Referer: https://www.instagram.com/'
);

// Initialize cURL session
$ch = curl_init();

// Set cURL options
curl_setopt($ch, CURLOPT_URL, $request_url);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

// Execute the request
$response = curl_exec($ch);

// Check for errors
if(curl_errno($ch)){
    echo 'Curl error: ' . curl_error($ch);
}

// Close cURL session
curl_close($ch);

// Decode JSON response
$data = json_decode($response, true);

// Extract the follower count
$follower_count = $data['data']['user']['edge_followed_by']['count'];

// Output the follower count
echo "Follower count: " . $follower_count;
?>
© www.soinside.com 2019 - 2024. All rights reserved.