有没有办法获取instagram帐户的关注者列表?

时间:2019-08-06 05:07:05

标签: instagram instagram-api

我注意到instagram更改了他们的API,但我想清理我的关注者(我发现其中一些是机器人,而且看起来很糟糕)。

我想获取用户名列表,以便确定是否要阻止用户名(通常是因为API更改)。

我可以通过任何方式下载该信息吗?

我尝试了不同的网站,但是它们要么不再工作,要么要钱(可能无法工作),要么就消失了。

我还使用instaloader尝试了一些python脚本,但它们都无法恢复,因为它们可以很好地登录,但是无法向我显示任何信息。

2 个答案:

答案 0 :(得分:0)

有一种方法可以使用javascript和Instagram的非官方API。

这是我编写的两个函数:

第一个是 random_wait_time 在请求之间等待, 第二个 get_followers 发出实际请求。

const random_wait_time = (waitTime = 300) => new Promise((resolve, reject) => {
  setTimeout(() => {
    return resolve();
  }, Math.random() * waitTime);
});


const get_followers = async(userId, userFollowerCount) => {
  let userFollowers = [],
    batchCount = 20,
    actuallyFetched = 20,
    url = `https://www.instagram.com/graphql/query/?query_hash=c76146de99bb02f6415203be841dd25a&variables={"id":"${userId}","include_reel":true,"fetch_mutual":true,"first":"${batchCount}"}`;
  while (userFollowerCount > 0) {
    const followersResponse = await fetch(url)
      .then(res => res.json())
      .then(res => {
        const nodeIds = [];
        for (const node of res.data.user.edge_followed_by.edges) {
          nodeIds.push(node.node.id);
        }
        actuallyFetched = nodeIds.length;
        return {
          edges: nodeIds,
          endCursor: res.data.user.edge_followed_by.page_info.end_cursor
        };
      }).catch(err => {
        userFollowerCount = -1;
        return {
          edges: []
        };
      });
    await random_wait_time();
    userFollowers = [...userFollowers, ...followersResponse.edges];
    userFollowerCount -= actuallyFetched;
    url = `https://www.instagram.com/graphql/query/?query_hash=c76146de99bb02f6415203be841dd25a&variables={"id":"${userId}","include_reel":true,"fetch_mutual":true,"first":${batchCount},"after":"${followersResponse.endCursor}"}`;
  }
  console.log(userFollowers);
  return userFollowers;
};

现在使用 Windows 上的F12 Mac 上的Cmd + Alt + j打开浏览器的开发者控制台,然后从上方粘贴代码。

然后使用您的 user_id followers_count 或上限来呼叫 get_followers

get_followers(493525227, 10)

并复制您的关注者的结果 user_id

如果您想获取关注者的所有数据,请更改返回的对象:

return { edges: res.data.user.edge_followed_by.edges, endCursor: res.data.user.edge_followed_by.page_info.end_cursor };

P.S 要获取您的 user_id ,您可以使用that servicedeveloper console中cookie的 ds_user_id 值。

将代码粘贴到控制台中的原因是,每个请求都会自动传递域中所有可用的cookie。并非从 instagram.com 进行此操作,需要您手动提供所有cookie。

希望有帮助!

答案 1 :(得分:0)

最好使用Keygram〜https://www.thekeygram.com

之类的工具

它将自动处理您要与instagram关注者一起做什么