粉丝怎么看

178 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第24天,[点击查看活动详情](juejin.cn/post/709970… "juejin.cn/post/709970…

背景

他在沸点说:「我这么好你还舍得取关我,那我什么时候能成为百万粉丝博主?」

image.png

如果有人取消关注了你,你一定想知道是谁吧!

掘金没告诉你是谁取关了你,今天我来告诉你,是谁取关了你。

思路如下:

  • 获取你当前的粉丝列表,保存到本地。
  • 第二天,再次获取列表,看看少了谁,同时更新本地粉丝列表。
  • 后续每一天,重复第二天的操作。

抓包看请求

看过我这专栏的人已经学会抓包了吧!学会Copy as fetch了吗?

没看过的,在这里学:《遇到表格,手动翻页太麻烦?我教你写脚本,一页展示所有数据》

点击这里,查看所有关注者:

image.png

就是这个请求,对它进行Copy as fetch操作:

image.png

循环,获取粉丝列表

以下代码,需要在掘金页面的Console里运行,否则不会带cookie的。

// 不能给掘金太大压力,我们定义个sleep函数,1秒请求一次就好
const sleep = async () => new Promise(resolve => setTimeout(resolve, 1000));
// 获取所有新增粉丝,保存到followers。
const getFollowers = async () => {
  const followers = {};
  console.log('开始读取你的粉丝啦');
  for (let i = 0; i < 100; i++) {
    const res = await fetch("https://api.juejin.cn/user_api/v1/follow/followers?aid=改成你的&uuid=改成你的&user_id=改成你的&cursor=" + i * 20 + "&limit=20", {
      "headers": {
        "content-type": "application/json",
      },
      "referrer": "https://juejin.cn/",
      "referrerPolicy": "strict-origin-when-cross-origin",
      "body": null,
      "method": "GET",
      "mode": "cors",
      "credentials": "include"
    });
    const data = await res.json();
    const result = data.data.data;
    result.forEach(fan => {
      followers[fan.user_id] = fan.user_name;
    });
    // 如果该页数量少于20,说明是最后一页,结束循环
    if (result.length < 20) break;
    // 不能给掘金太大压力,我们1秒请求一次就好
    await sleep();
  }
  console.log('读取完毕你的粉丝啦');
  return followers;
}

调用函数await getFollowers()即可发请求,并返回现在的粉丝列表。

保存到LocalStorage

相信大家对浏览器的localStorage一定不会陌生!我们定义一个key,叫做my_followers,专门用来存储我们的粉丝。

\