PHP/cURL如何使用用户IP?

How to use a user IP with PHP/cURL?

我有一个服务器,但 cURL 正在使用服务器的 IP 地址。我想让 cURL 使用进入服务器的人的 IP 地址。

我该怎么做?

您想发出一个 HTTP 请求,让远程服务器认为它来自您用户的 IP 地址。这是不可能的。 HTTP请求中不包含用户的IP地址;您在 $_SERVER['REMOTE_ADDR]` 中获得的值来自 IP 协议。

但是,您可以充当用户的代理。看来你已经知道了,但你想不出正确的方法。

确实,您必须在对远程服务器的请求中添加 header。但是,您传递给 CURLOPT_HTTPHEADER 的参数是一个 HTTP 请求列表,这些请求逐字写入 cUrl 发送的请求。

这意味着您的代码应为:

curl_setopt($ch, CURLOPT_HTTPHEADER, array("X-Forwarded-For: $ip"));

请注意,远程服务器可以忽略 header,因为程序员监督了客户端使用 HTTP 代理的可能性,或者因为 header 很容易伪造。如果它忽略它,那么它将使用您服务器的 IP 地址作为客户端 IP 地址(这是您首先要避免的)。

详细了解 X-Forwarded-For HTTP header。