微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

节点 JS 请求为 nse 印度网站返回响应代码 401

如何解决节点 JS 请求为 nse 印度网站返回响应代码 401

我使用这个程序从 https://www.nseindia.com/api/option-chain-indices?symbol=NIFTY 获取 json 数据,但从今天早上开始它没有工作,因为它返回 。不过,该链接在 chrome 上加载良好。有没有办法不使用 axios 来解决这个问题?

解决方法

我用 node js 尝试了同样的事情 请使用 node js ide link here for online ide 请检查我的代码

const axios = require('axios');


let cookie;
let url_oc = "https://www.nseindia.com/option-chain"
let url = "https://www.nseindia.com/api/option-chain-indices?symbol=NIFTY"
let headers = {
  'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)','accept-language': 'en,gu;q=0.9,hi;q=0.8','accept-encoding': 'gzip,deflate,br'
}

const instance = axios.create({
  baseURL: url_oc,headers: headers,cookie: cookie ? cookie : ""
});



const getCookies = async () => {
  try {
    const response = await instance.get(url_oc);
    cookie = response.headers['set-cookie'].join();
  } catch (error) {
    if (error.response.status === 403) {
      console.log("getCookies =========> error.status === 403");
      await getCookies()
    } else {
      console.log("getCookies =========> error");
    }
  }
}


const getAPIData = async () => {
  try {
    if (cookie) {
      const response = await instance.get(url);
      console.log(response.data.records.timestamp);
    }

  } catch (error) {
    if (error.response && error.response.status === 401) {
      console.log("getAPIData =========> error.status === 401");
      if (!cookie) {
        console.log("getAPIData =========> cookie not found");
        await getCookies()
      }
      await getAPIData()
    } else {
      console.log("getAPIData =========> error");
    }
  }
}



(async () => {
  setInterval(async () => {
    await getCookies()
  },5000);

  setInterval(async () => {
    await getAPIData()
  },3000);
})()

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。