如何使用客户的 IP 地址向另一个网站发出请求?
Posted
技术标签:
【中文标题】如何使用客户的 IP 地址向另一个网站发出请求?【英文标题】:How can I use a client's IP Address for a request to another website? 【发布时间】:2018-06-07 12:00:25 【问题描述】:我正在尝试构建一个 Web 应用程序,其中一个客户端登录并希望将一些数据发送到另一个网站(例如,他想上传一个应用程序将读取的 csv 文件并将读取的数据发送到另一个网站)。
该网站没有我可以使用的官方 API,如果它发出太多请求,他们会阻止 IP 地址。
所以,我的想法是使用用户的 IP 地址以他的名义发送请求,这样网站就不会阻止我的应用发出请求。
可以从 asp .net core mvc / asp.net mvc 做到这一点吗?
如果没有,我该怎么做才能使这成为可能?
提前致谢
【问题讨论】:
在客户端使用js? 您是什么意思“使用用户的 IP 地址”...您希望远程服务器认为请求来自他们的 IP 地址而不是您的?除了听起来有可能构成某种非法冒充,取决于当地的执法机构,我认为这是在 TCP/IP 级别发生的事情,您无法通过代码进行控制。所以你的服务器不能真正做到这一点。如果远程服务器接受 CORS 请求,也许您可以从浏览器发出 AJAX 请求。但如果它不是官方 API,它很可能不会 听起来你的客户给你一些数据来处理,然后你以不同的格式发送到远程网站?我不知道足够的细节来知道这是否可行,但是您的应用程序如何简单地处理数据,并以所需的格式将其发送回客户端,然后客户端将上传它自己到这个第 3 方网站上?它不那么流畅和自动化,但它解决了 IP 阻塞问题。听起来这个第 3 方网站无论如何都不想接受自动上传,所以您可以轻松地向您的客户解释这一点。 【参考方案1】:不,这是不可能的。我鼓励您实际阅读 TCP/IP 协议(HTTP 也是,当您使用它时,虽然它与这个问题没有直接关系)。就像您需要先了解 ios 之类的东西是如何工作才能为其编写应用程序一样,如果您打算编写 Web 应用程序,您不应该了解 Internet 的底层协议是如何工作的。
特别是在这里,所有通过 TCP/IP 进行的通信都是通过 IP 地址进行的。它必须是唯一的,因为客户端/服务器需要能够在那里“寻址”其数据包。基于此,即使您可以冒充用户的 IP 地址,结果也会是服务器将其响应直接发送给用户,而不是您的服务器。
FWIW,有一个“共享”IP 地址的概念。例如,除非您有来自您的 ISP 的专用 IP,否则您和它的许多其他客户将看起来好像您都拥有该 IP 地址。 IP 地址传统上是有限的。 IPv6 几乎是无限的,但大多数东西仍然使用 IPv4,它只公开了大约 4 万亿个地址。这听起来可能很多,直到您意识到每个客户都需要一个唯一的地址。可能只有一个人拥有一台家用电脑、一台工作电脑、一台笔记本电脑、一部智能手机,甚至可能还有第二部商用智能手机。此外,他们可能拥有一系列其他设备,如平板电脑、智能电视、连接的恒温器等。因此,您的 ISP 基本上将您的请求代理到目的地,然后接收响应并将其转发给您。它使用其内部 IP 表将响应路由回请求它的内部 IP。因此,虽然从技术上讲,多个客户端/服务器共享同一个外部 IP 是可行的,但它与您在此处所说的不同。
【讨论】:
2^32 在短尺度上是 40 亿,或者在长尺度上是 4 毫 ^^以上是关于如何使用客户的 IP 地址向另一个网站发出请求?的主要内容,如果未能解决你的问题,请参考以下文章
我们可以使用客户端 IP 地址在 node.js 上发出 http 请求吗?
Docker/Symfony/Reactjs/Keycloak:如何使用分离的 docker-compose 文件从一个容器向另一个容器发出 HTTP 请求?