为 curl 请求选择传出 IP
Posted
技术标签:
【中文标题】为 curl 请求选择传出 IP【英文标题】:select outgoing ip for curl request 【发布时间】:2011-01-26 09:47:08 【问题描述】:我的服务器有两个不同的 IP。我需要从第一个 IP 甚至从第二个 IP 发送奇怪的 curl 请求。如何选择传出 IP 地址?
我的 php 脚本是这样的:
$curlh = curl_init($url);
curl_setopt($curlh, CURLOPT_USERAGENT, $uagent);
curl_setopt($curlh, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($curlh);
我该怎么做?
【问题讨论】:
【参考方案1】:您可能想尝试设置CURLOPT_INTERFACE
选项:
curl_setopt($curlh, CURLOPT_INTERFACE, "xxx.xxx.xxx.xxx");
CURLOPT_INTERFACE:要使用的传出网络接口的名称。这可以是接口名称、IP 地址或主机名。
发件人:php Manual: curl_setopt
编辑:修复示例,正如 @Michael Hart pointed out 在另一个答案中指出的那样。
【讨论】:
【参考方案2】:由于我还不能回复,只是想补充一下 Daniel Vassallo 的答案。虽然他是正确的,但他的榜样却不是。
CURLOPT_INTERFACE 是一个常量,不能放在引号内。这可能会导致一些人感到困惑,他们可能会复制和粘贴只是发现它不起作用。正确的代码是:
curl_setopt($curlh, CURLOPT_INTERFACE, "xxx.xxx.xxx.xxx");
另外,对于 Linux 系统(我确定是 Windows,但不会完全相同),我想指出您不必使用 IP 地址。如果您知道 ethN 接口,则可以简单地使用“eth0”、“eth1”或“eth0:0”,具体取决于您的网络配置方式。这可能更可取,因为代码不会特定于一台机器,并且可能适合更广泛的配置(例如,集群)。
【讨论】:
以上是关于为 curl 请求选择传出 IP的主要内容,如果未能解决你的问题,请参考以下文章