如何使来自不同客户端的 HTTP 请求看起来像是来自同一个 IP 地址?
How to make HTTP requests from different clients appear that they came from the same IP address?
我正在使用第 3 方 API,如果请求来自不同的 IP 地址,它会使 OAuth 令牌无效。这会导致问题,因为该服务在多个主机上运行。
理想情况下,我希望只有对这个特定 API 的请求才会通过单个 IP 路由。
我考虑过设置代理服务器,但我担心无法将此代理扩展到超过 1 台机器。
有什么建议吗?
这里的理想选择当然是为每台机器获取一个 OAuth 令牌。 (或者,更好的是,获得允许您跨 IP 共享令牌的服务。)但我认为有一些原因您不能这样做。
在这种情况下,您可能确实需要一个代理服务器。
仅通过该代理路由到此特定 API 的请求的选项非常简单。设置显式代理而不是透明代理,并为这些特定方法指定显式代理。
由于您没有向我们展示,甚至没有描述您的代码,所以我无法向您展示如何使用您正在使用的任何库来做到这一点,但是 here's how to do it with requests
,而且并不难使用 stdlib urllib
或大多数其他第三方库。
但是,为了完整起见:让不同的机器看起来具有相同的 IP 地址并非完全不可能,只要你们所有的机器都在您可以控制的路由器后面。事实上,这正是您通过 NAT 使用典型家庭 DSL/cable 设置所获得的:每台机器都有自己的内部专用地址,但它们都共享一个 public 地址。但这可能不是你想要的。一方面,如果你的机器实际上是 GCP 主机,你就无法控制路由器,你甚至可能无法控制它们是否在同一网络上(如果你正在考虑 运行软件路由器将它们全部通过)。此外,NAT 会给服务器带来各种问题。而且,由于您担心的是扩展,一旦您必须扩展到单个子网之外,使用 NAT 就是一场噩梦。如果这些实例是服务器,则更是如此(如果您在 GCP 上 运行 它们,这似乎很可能)。最后,要使用 NAT 只与一项服务对话,您要么需要非常复杂的路由表,要么需要每台机器一个额外的网络接口(您可以将其放在不同的路由器后面)。所以,我怀疑这是你真正想要的。
我正在使用第 3 方 API,如果请求来自不同的 IP 地址,它会使 OAuth 令牌无效。这会导致问题,因为该服务在多个主机上运行。
理想情况下,我希望只有对这个特定 API 的请求才会通过单个 IP 路由。
我考虑过设置代理服务器,但我担心无法将此代理扩展到超过 1 台机器。
有什么建议吗?
这里的理想选择当然是为每台机器获取一个 OAuth 令牌。 (或者,更好的是,获得允许您跨 IP 共享令牌的服务。)但我认为有一些原因您不能这样做。
在这种情况下,您可能确实需要一个代理服务器。
仅通过该代理路由到此特定 API 的请求的选项非常简单。设置显式代理而不是透明代理,并为这些特定方法指定显式代理。
由于您没有向我们展示,甚至没有描述您的代码,所以我无法向您展示如何使用您正在使用的任何库来做到这一点,但是 here's how to do it with requests
,而且并不难使用 stdlib urllib
或大多数其他第三方库。
但是,为了完整起见:让不同的机器看起来具有相同的 IP 地址并非完全不可能,只要你们所有的机器都在您可以控制的路由器后面。事实上,这正是您通过 NAT 使用典型家庭 DSL/cable 设置所获得的:每台机器都有自己的内部专用地址,但它们都共享一个 public 地址。但这可能不是你想要的。一方面,如果你的机器实际上是 GCP 主机,你就无法控制路由器,你甚至可能无法控制它们是否在同一网络上(如果你正在考虑 运行软件路由器将它们全部通过)。此外,NAT 会给服务器带来各种问题。而且,由于您担心的是扩展,一旦您必须扩展到单个子网之外,使用 NAT 就是一场噩梦。如果这些实例是服务器,则更是如此(如果您在 GCP 上 运行 它们,这似乎很可能)。最后,要使用 NAT 只与一项服务对话,您要么需要非常复杂的路由表,要么需要每台机器一个额外的网络接口(您可以将其放在不同的路由器后面)。所以,我怀疑这是你真正想要的。