前言
若你使用 PHP 的 cURL 時,在某些很極端的情況下,你可能會希望跳過 DNS 解析,強制指定網域解析到特定 IP 位址上,這時候你就可以參考這篇文章了!
操作方式
你可以使用這個參數來強迫 cURL 解析目標網域到特定的 IP 位址上:
<?php
# 禁止 cURL 使用 Global Cache
curl_setopt($ch, CURLOPT_DNS_USE_GLOBAL_CACHE, false);
# 強制 cURL 將網域解析到特定 IP 位址上
# 格式為:Domain:Port:IPAddr
curl_setopt($curl, CURLOPT_RESOLVE, array("www.cre0809.com:443:104.16.16.16"));
?>
放在一個 cURL 陣列可能是長這樣的:
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://www.cre0809.com/cdn-cgi/trace',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_NONE,
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_HTTPHEADER => array(),
CURLOPT_DNS_USE_GLOBAL_CACHE => false,
CURLOPT_RESOLVE => array("www.cre0809.com:443:104.16.16.16")
));
$response = curl_exec($curl);
curl_close($curl);
echo $response;
?>
這樣就可以強制 cURL 解析到特定 IP 位址上囉。