我正在尝试构建一个Web抓取服务,该服务将获取一些可在我的应用程序中使用的数据。我在Axios上使用NodeJS。问题是,我在使用一种Web服务时遇到一些特别的困难,我想知道自己是否做错了什么。我遇到的问题是,Web服务似乎从未向我的应用程序返回任何数据,而请求只是挂起。我使用Axios-Curlirize通过获取cURL命令并在Terminal和Postman中使用相同的命令来调试问题,在两种情况下,请求都几乎立即返回。我的请求不是循环的,所以我认为我不会受到DDoS防护的打击,而我使用的完全相同的方法也可以与我尝试使用的其他API一起使用。有谁知道会发生什么?这是我的代码段,尽管这是相当标准的:
return await axios.get(url, { headers: headers})
.then(() => {
console.log("done")
})
.catch(err => failed(err));
console.log和函数failed
都没有被调用,我在其中放置了断点来检查;函数failed
的内容无关紧要,因为从不调用该函数。我已经在Node 14.7.0和Node 12.18.3LTS上进行过尝试,但在这两个版本上均不起作用。
这是来自Axios-Curlirize的cURL请求:
curl -X GET -H "accept-language:en-CA,en-GB;q=0.9,en-US;q=0.8,en;q=0.7" -H "dnt:1" -H "referer:https://www.google.com" -H "upgrade-insecure-requests:1" -H "user-agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36" -H "cookie-control:no-cache" -H "cache-control:max-age=0" -H "pragma:no-cache" "https://www.famousfootwear.com/stores/product/LocateCartAndNewVariantNearby?zipCode=98662&radius=25&variantToAdd=70094-110-07"
此cURL命令在终端机和邮递员中正常运行,但在我的应用程序中则无效。
感谢您的帮助!
答案 0 :(得分:0)
弄清楚了。远程网站仅支持HTTP / 2,而Axios仅支持HTTP1.1。猜猜我要找到Axios以外的其他解决方案。