为卷曲请求选择传出 IP

2022-08-30 13:04:22

我有一个具有两个不同IP的服务器。我需要从第一个IP发送奇怪的curl请求,甚至从第二个IP发送。如何选择传出 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 手册: curl_setopt


编辑:修复示例,正如@Michael Hart在另一个答案中指出的那样。


答案 2

由于我还不能回答,只是想补充丹尼尔·瓦萨洛的答案。虽然他是对的,但他的例子却不是。

CURLOPT_INTERFACE是一个常量,不能放在引号内。这可能会给一些可能复制和粘贴的人带来一些混乱,只是发现它不起作用。正确的代码是:

curl_setopt($curlh, CURLOPT_INTERFACE, "xxx.xxx.xxx.xxx");

另外,对于Linux系统(我确信Windows,但它不会完全相同),我想指出你不必使用IP地址。如果您知道ethN接口,则可以简单地使用“eth0”,“eth1”或“eth0:0”取决于您的网络配置方式。这可能更可取,因为代码不会特定于 1 台计算机,并且可能适合更广泛的配置(例如,群集)。


推荐