IDGlobalGLOBAL INFRASTRUCTURE

php域名指向ip,如何在curl方式下url請求域名使用指定ip地址來訪問某個服務器

如果某個域名對應多個ip,即有多台服務器。如何通過curl來訪問指定一台服務器的url信息了。我們知道一般使用curl獲取url信息的代碼如下

$url="https://www.iid.hk/";
$ch=curl_init();
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_TIMEOUT,5);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); // https請求 不驗證證書和hosts
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
$content=curl_exec($ch);
echo $content;

如果想訪問39.99.204.74這個ip服務器的內容了,可以將請求url中域名部分改用ip方式,並加上Host請求頭信息。具體示例代碼如下

$url='https://39.99.204.74/index.php';
$ch=curl_init();
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_TIMEOUT,5);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_HTTPHEADER,array("Host: www.iid.hk"));
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); // https請求 不驗證證書和hosts
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
$content=curl_exec($ch);
echo $content;

在php5.5以上版本,支持使用 CURLOPT_RESOLVE 來設置主機對應的ip地址。

$url='https://www.iid.hk/index.php';
$ch=curl_init();
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_TIMEOUT,5);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_RESOLVE,["www.iid.hk:443:39.99.204.74"]);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); // https請求 不驗證證書和hosts
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
$content=curl_exec($ch);
echo $content;

其中,CURLOPT_RESOLVE選項,提供自定義地址,指定了主機和端口。包含主機、端口和 ip 地址的字符串,組成 array 的,每個元素以冒號分隔。格式:

 array("example.com:80:127.0.0.1") 

在線客服

實時客服