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