使用fetch返回与使用curl或在浏览器中打开页面不同的结果

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用fetch返回与使用curl或在浏览器中打开页面不同的结果相关的知识,希望对你有一定的参考价值。

我正在使用以下代码来获取页面的URL,基本上我正在尝试做的是允许我的用户通过链接添加产品,他们粘贴链接,应用程序被要求获取链接,获取图像并创建使用数据的新产品。

            fetch(url, headers)
            .then(response => response.text())
            .then(text => {
                resolve(this._parseResponse(text, url));
            })
            .catch(error => reject({ error }));

然后我通过cheerio解析它。

但是我注意到一些网站如Nike和Newegg在使用浏览器或普通curl命令时没有返回相同的结果。

Nike返回“拒绝访问”,Newegg返回“404”。

任何针对该建议的修正或任何其他建议我如何实现我的目标?

谢谢。

答案

我通过在服务器端使用fetch解决了这个问题,但有时在服务器端使用它也有一些问题。

事实证明,除非您使用适当的API访问,否则无法预测返回的内容。

另一答案

我只是用卷曲做了一个测试

curl https://newegg.com 

不工作

然而使用

curl https://www.newegg.com

那是成功的

使用Nike网站的结果相同

您可以通过添加-L参数来设置curl以遵循重定向

curl -L newegg.com

以上是关于使用fetch返回与使用curl或在浏览器中打开页面不同的结果的主要内容,如果未能解决你的问题,请参考以下文章

从 cURL 到 JavaScript fetch()

ios自带浏览器safari js返回上一页,页面按钮置灰不能点击

返回上一页时,保存恢复浏览记录(模拟返回不刷新)

Mailchimp API 在使用 node-fetch 而不是 json 时返回一个大的 gzip 对象

如何使用 curl fetch 从 Cloudinary 获取视频时长?

在 JavaScript Fetch API 中实现 curl 发布请求