首页 > 解决方案 > 使用代理调用外部 API 的最佳方式

问题描述

我正在构建一个运行在 EC2 服务器上的 node.js 应用程序,它允许人们将他们的 API 密钥输入到特定服务,我代表他们调用这个 API 并将数据显示在仪表板中。

我使用的 API 提供商相对较新,他们设置了 IP 地址速率限制器。我联系他们解释我需要同时为多人调用 API,因此限制我的 IP 是不可持续的,因为我需要在两次调用之间等待 1 到 2 秒,并且有很多调用要打,但他们说他们无法将我的 IP 列入白名单或根据 API 密钥而不是 IP 进行速率限制,并建议我尝试使用代理向他们请求数据。

我尝试了多个代理提供商,但它们都非常慢(请求需要 1 秒而不是 <100 毫秒才能到达我的服务器),这使得整个事情再次变得不可持续。

有没有更聪明的方法/更简单的方法?我确实有一些其他 EC2 服务器正在运行,因此我正在考虑将它们用作代理,但我不确定这会对这些服务器的性能/已经在它们上运行的应用程序产生什么影响,如果我这样做可能会产生问题将终止这些服务器(我的应用程序依赖于它们)。

有没有其他最佳实践/简单的方法来做到这一点?

作为参考,我的代码如下所示:

const fetch = require('isomorphic-fetch');
const proxyAgent = require('https-proxy-agent');

const headers = {
   ...headers
   agent: new proxyAgent("<proxy details>")
}

const data = fetch("<url>", {headers: headers}) 
... 

谢谢

标签: node.jshttp-proxy

解决方案


推荐阅读