node.js - 有没有办法从 Node fetch 请求公共网站的内部 API?
问题描述
在我意识到我可以直接获取网站的 API 而不必渲染我不需要的东西之前,我正在尝试抓取动态网站并使用 Puppeteer 和 Node.js。通过查看 Chrome 开发人员工具的“网络”选项卡,我可以找到返回所需数据的确切端点。它适用于我试图抓取的大多数网站,但对于某些网站,尤其是 POST 请求,API 返回“403:禁止”错误代码。
如果我直接从 Chrome 控制台执行 fetch-request,API 会返回成功。但是,当我使用 node-fetch 从不同的选项卡、邮递员或节点尝试时,我得到“403:禁止”。
我尝试复制从网站自然发送的确切标头,并且尝试将“来源”和“引用”标头明确设置为网站地址,但无济于事。
这仅仅是一种无法破坏的安全措施,还是有办法诱使 API 认为请求来自他们自己的网站?
解决方案
推荐阅读
- java - 如何在另一个标记之前查找 XML 标记的最后一次出现
- browser - 在浏览器中预览 html,就像它在 wkhtmltopdf 中显示一样
- es6-promise - Nestjs:如何用 pormise 依次调用 2 个 api?
- javascript - 获取索引列表,以防您在 javascript 中对列表进行排序
- php - 不使用翻译插件的翻译插件
- python - alpine docker:安装 pandas / numpy
- javascript - useState 挂钩不更新值
- blazor - 如果 http GetById 返回 404,则导航到 NotFound 页面
- postgresql - 具有数组值的 CTE 的 Postgres 递归构建
- node.js - 类型错误:next 不是 Node js 中的函数