node调用第三方接口返回403?

头像
辛辣的阿司匹林
    123
    美国加利福尼亚州硅谷

    第三方网站接口,https://core-api.prod.blur.io/v1/prices 浏览器直接打开可以正常访问(隐私模式无cookie),在node环境调用这个接口就返回403

    let response = await fetch('https://core-api.prod.blur.io/v1/prices');
    const data = await response.text();
    console.log(data); //403

    对第三方网站无法控制,如何能在node环境也正常调用该接口?

    阅读 2.1k
    1 个回答

    第一种添加请求头,伪装一下
    具体的你自己看一下浏览器成功访问的时候,有哪些请求头

    let response = await fetch('https://core-api.prod.blur.io/v1/prices', {
      headers: {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3',
        'Accept': 'application/json',
        'Content-Type': 'application/json',
        'Authorization': 'Bearer YOUR_ACCESS_TOKEN'
      }
    });
    

    第二种使用jsonp请求试试

    const jsonp = require('jsonp');
    
    jsonp('https://core-api.prod.blur.io/v1/prices', null, (err, data) => {
      if (err) {
        console.error(err.message);
      } else {
        console.log(data);
      }
    });
    
    本文参与了SegmentFault 思否面试闯关挑战赛,欢迎正在阅读的你也加入。
    撰写回答
    你尚未登录,登录后可以
    • 和开发者交流问题的细节
    • 关注并接收问题和回答的更新提醒
    • 参与内容的编辑和改进,让解决方法与时俱进
    推荐问题