【问题标题】:How to tell curl to use clients ip not the servers?如何告诉 curl 使用客户端 IP 而不是服务器?
【发布时间】:2023-03-29 01:25:02
【问题描述】:

我正在使用 curl 从网站获取一些信息,但是它使用服务器 IP 地址,但我希望它使用客户端 IP 地址,所以每个用户都使用自己的 IP 而不是服务器发送请求,这怎么可能?

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "URL");
curl_setopt($ch, CURLOPT_FAILONERROR, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
curl_setopt($ch, CURLOPT_TIMEOUT, 50);
$buffer = curl_exec($ch);
curl_close($ch);

【问题讨论】:

  • PHP 代码不在客户端机器上运行,期间。也许这样的事情可以在 javascript 中完成。
  • 由于同源政策,Javascript 可能也不可行。 en.wikipedia.org/wiki/Same_origin_policy
  • 我在考虑 IFRAME,但我认为这对 OP 也没有帮助。
  • 我该怎么做?最好的方法是什么..我不是代码或程序员,只是在这里学习。动态更改 iframe 的 URL,然后使用 javascript 解析 iframe 的内容。 ??怎么做>你能帮忙吗?

标签: php curl ip


【解决方案1】:

不是。发送服务器 IP 是因为您正在查看的网站需要知道将数据再次发回的位置。

如果你最终伪造了 IP,这是 CURL 无法做到的(你需要一些可以操纵原始数据包/套接字的东西),那么你的代码将永远看不到回复。

【讨论】:

    【解决方案2】:

    嘿,那是不可能的。您不能将其他人的 IP 地址用作呼叫的发起地址(当然,除非您将他们误用作代理或欺骗地址)。

    如果你详细说明你想要达到的目标,也许有人会想出一个解决方法。

    【讨论】:

    • 我的情况是用户提交了一个 url 并从该网站收集了一些信息,我想要做的就是我希望 curl 使用用户 ip 而不是服务器。您提到的方法(代理或欺骗)是否可行。 curl可以使用用户ip作为代理吗?
    • 不,这是不可能的。欺骗是吹箭在他的回答的第二段中描述的,你不能将用户用作代理(幸运的是)。如果您希望您的用户获取数据,您需要在他们的计算机上安装一个应用程序。为什么你仍然需要用户的IP?这听起来很可疑。
    • 如果同时连接的人太多,网站会暂时暂停ip,但如果curl可以使用用户的ip,则不会发生这种情况
    • 我明白了。抱歉,您无法解决这个问题 - 它太接近非法用途,例如出于恶意目的劫持用户的计算机。您必须在用户的计算机上安装应用程序,使用一些 Flash 或 Java - 但即使是 thouse 也可能由于跨域策略而失败。
    • 如果有每个 IP 的速率限制,您始终可以为您的服务器分配一系列 IP,并明确绑定到它们。但是你必须由服务的维护者来运行它——如果他们不批准,他们无论如何都会禁止你。
    【解决方案3】:

    PHP 确实在客户端机器上运行。通过 PHP 完成的任何网络连接都将使用您的 Web 服务器作为连接客户端来完成。如果您将其概念化为这样可能会有所帮助:当客户端访问您的 PHP 页面时,PHP 会在您的服务器上执行并生成一个 HTML 页面。它是通过网络发送到客户端的生成的 HTML 页面,而不是您的任何 PHP 代码。 PHP 只是一个动态生成 HTML 页面的工具。

    我看到的唯一解决方案是动态更改 iframe 的 URL,然后使用 javascript 解析 iframe 的内容。如果您希望将信息返回给您,您可以使用 AJAX 例程连接并返回您的 javascript 从 iframe 收集的任何信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-30
      • 2015-06-20
      • 1970-01-01
      • 1970-01-01
      • 2014-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多