如何将用户 IP 与 PHP/cURL 一起使用


How to use a user IP with PHP/cURL?

我有一台服务器,但cURL正在使用服务器的IP地址。我希望 cURL 使用进入服务器的人的 IP 地址。

我该怎么做?

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

但是,您可以充当用户的代理。似乎您已经知道这一点,但您无法找出正确的方法。

实际上,您必须在对远程服务器的请求中添加标头。但是,传递给CURLOPT_HTTPHEADER的参数是逐字写入cUrl发送的请求中的 HTTP 请求列表。

这意味着您的代码应为:

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

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

阅读有关 X-Forwarded-For HTTP 标头的更多信息。