You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js如何循环发送GET请求,检测到响应变化后更新Instagram简介

代码修改方案

核心调整逻辑如下:

  • 封装GET请求为异步可复用函数,解决原代码回调嵌套导致的变量时序问题
  • 登录操作仅在程序启动时执行1次,避免频繁登录触发Instagram账号风控
  • 新增变量存储上一次的有效响应值作为比对基准
  • 新增5秒定时轮询逻辑,仅当新获取的响应值和基准值不一致时才触发简介更新,同时刷新基准值
完整修改后代码
const { IgApiClient } = require("instagram-private-api")
const ig = new IgApiClient()
const https = require('https')

const USERNAME = "MYUSERNAME"
const PASSWORD = "MYPASSWORD"
const CHECK_INTERVAL = 5000 // 轮询间隔单位为毫秒,5000即5秒

ig.state.generateDevice(USERNAME)
// 存储上一次的有效值作为比对基准
let lastSearchValue = null

// 封装GET请求为Promise格式,适配async/await语法
const getSearchValue = () => {
  return new Promise((resolve, reject) => {
    const url = "https://11z.co/_w/14011/selection";
    https.get(url, (res) => {
      let body = "";
      res.on("data", (chunk) => {
        body += chunk;
      });
      res.on("end", () => {
        try {
          const value = JSON.parse(body).value;
          resolve(value);
        } catch (error) {
          reject(error);
        }
      });
    }).on("error", (error) => {
      reject(error);
    })
  })
}

const main = async () => {
  // 程序启动时先执行一次登录,仅执行一次
  await ig.simulate.preLoginFlow()
  await ig.account.login(USERNAME, PASSWORD)
  process.nextTick(async () => await ig.simulate.postLoginFlow())
  console.log("Instagram登录成功,开始轮询检测...")

  // 首次运行先拉取初始值,直接更新简介并存为基准
  try {
    lastSearchValue = await getSearchValue()
    await ig.account.setBiography(lastSearchValue)
    console.log(`初始简介已更新为:${lastSearchValue}`)
  } catch (e) {
    console.error("初始值获取或更新失败:", e.message)
  }

  // 启动5秒定时轮询
  setInterval(async () => {
    try {
      const newValue = await getSearchValue()
      // 比对新旧值,有变化才更新
      if (newValue !== lastSearchValue) {
        await ig.account.setBiography(newValue)
        lastSearchValue = newValue
        console.log(`检测到值变更,简介已更新为:${newValue}`)
      }
      // 没有变化则不做操作,减少接口调用
    } catch (e) {
      console.error("轮询过程出错:", e.message)
    }
  }, CHECK_INTERVAL)
}

main()
关键改动说明
  • 修复了原代码中异步请求时序问题:原代码中https.get是异步回调逻辑,setBiography执行时大概率还没拿到search值,修改后用Promise+async/await保证执行顺序
  • 所有错误都做了捕获处理,单次请求失败不会导致整个程序崩溃
  • 仅在值发生变更时才调用Instagram的简介更新接口,大幅降低接口调用频率,减少账号被限制的风险

内容的提问来源于stack exchange,提问作者magificul

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 17:39:05