我有一台服务器,但 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 标头的更多信息。