【发布时间】:2016-12-29 13:13:39
【问题描述】:
我有一个非常基本的工具(用于教育目的),有人可以在其中输入字符串,该工具使用 cURL(使用 AJAX 发送的数据)从 3rd 方 API 带来响应数据。
所以,我的问题是,有什么方法可以使用用户的 IP(我已经使用 https://api.ipify.org 获取用户 IP,用于工具中的其他个性化目的)作为 cURL 中的代理 IP。
如果是,我必须使用哪个端口(端口80)?
编辑:这正是我想要做的:
- 通过使用
curl_setopt中的CURLOPT_PROXY字段在PHP cURL 查询中使用客户端的IP。这可能吗?
(我已经将客户端的 IP 发送到我的 PHP 页面(使用 AJAX)以获取服务器代码的其他部分)
【问题讨论】:
-
答案是“不,你不能”,除非您在自己的页面上打开一英里宽的安全漏洞以允许跨站点 ajax 请求。你不想那样做。
-
您的服务器端 显然不能以某种方式使用客户端 的IP 地址。这就是为什么我在上面声称答案是“不”。原因很简单,就是网络拓扑。
-
不,客户端 IP 的知识(您在 php 中总是知道,无论有没有该服务)都没有帮助。客户端不是代理,而是客户端。您不能将客户端用作代理。这就像试图用锤子粘纸一样。仅仅因为您指定某个选项并不意味着该词会相应更改。如果该 IP 没有运行代理并且授予您访问权限,那么您无能为力。
-
实际上可以通过使用 Web 套接字在客户端(基于 JavaScript)设置一些原始代理......但您不能通过
cURL使用它,但必须实现自己的http 客户端库。而且我看不到与首先发出跨站点ajax请求相比有任何优势。这只会增加一个巨大的复杂性如果这是可能的。 -
这些是不同的东西。 如果您成功地让客户端站点就您的代理请求联系该第 3 部分服务,那么这 将显然是一个跨站点请求,因为您不是那个第 3 方...