我试图仅使用用户的 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。”
由于我的程序应该从不一定专业的帐户中检索关注者计数,所以我似乎不知道该怎么做......
总结:
有人有解决办法吗?
谢谢!
有同样的问题。我最终检查了 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
获取关注者数量
您可以使用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
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...他们这样做是为了防止抓取。
使用 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;
?>