Javascript 使用请求承诺获取403错误以获取价格

Javascript 使用请求承诺获取403错误以获取价格,javascript,node.js,http,request-promise,Javascript,Node.js,Http,Request Promise,我正试图使用请求承诺从Asos.com上获取一个项目的价格。当我尝试运行下面的代码时,我得到一个403错误。尽管我试图刮取的URL是公开的,不需要密钥,但是否可能出现此错误 我知道一些网站反对在他们的ToS中删除内容,但我只是想确定我不是在做错事,或者我是否真的被网站阻止了 const rp=require('request-promise'); var url='1〕http://www.asos.com/api/product/catalogue/v2/stockprice?produc

我正试图使用请求承诺从Asos.com上获取一个项目的价格。当我尝试运行下面的代码时,我得到一个403错误。尽管我试图刮取的URL是公开的,不需要密钥,但是否可能出现此错误

我知道一些网站反对在他们的ToS中删除内容,但我只是想确定我不是在做错事,或者我是否真的被网站阻止了

const rp=require('request-promise');
var url='1〕http://www.asos.com/api/product/catalogue/v2/stockprice?productIds=10000496¤cy=SEK&keyStoreDataversion=7jhdf34h-6&store=ROE';
rp({url:url,json:true})
.then(功能(数据){
log(data.productPrice.current.value);
})
.catch(函数(原因){
console.error(“%s;%s”,reason.error.message,reason.options.url);
console.log(“%j”,reason.response.statusCode);
});您应该添加“headers”参数,即:

rp({ 
  url:url, 
  headers: {
    'User-Agent': 'Request-Promise'
  },
  json:true 
})

简言之,是的,你被封锁了。403是API在超过IP/用户速率限制时发布的通用状态代码。基本上,如果你对他们不好,并且你用请求敲打他们,他们会给你发回403。我怀疑这可能是正在发生的事情。这就是我的想法,我只是一次发送一个请求,但我想如果这有意义的话,他们会完全阻止任何请求。我可以在我的浏览器中点击该URL,并得到一个200无问题的答案。但是,如果您在过去60秒、5分钟、24小时等时间内发送了X个请求,尽管一次只发送一个请求,那么您可能已经突破了它们的限制。如果您为将来的任何人找到了一个解决方案,添加如下标题将模拟浏览器请求—`headers:{'User Agent':'Mozilla/5.0(Windows NT 6.3;WOW64)AppleWebKit/537.36(KHTML,比如Gecko)Chrome/38.0.2125.111 Safari/537.36'}`