意见箱
恒创运营部门将仔细参阅您的意见和建议,必要时将通过预留邮箱与您保持联络。感谢您的支持!
意见/建议
提交建议

php域名指向ip,如何在curl方式下url请求域名使用指定ip地址来访问某个服务器

来源:恒创科技 编辑:恒创科技编辑部
2024-01-07 14:31:59

如果某个域名对应多个ip,即有多台服务器。如何通过curl来访问指定一台服务器的url信息了。我们知道一般使用curl获取url信息的代码如下

$url="https://www.phper163.com/";
$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='/news/upload/ueditor/image/202208/yvfzxv1yx5u.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.phper163.com"));
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地址。


php域名指向ip,如何在curl方式下url请求域名使用指定ip地址来访问某个服务器

$url='https://www.phper163.com/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.phper163.com: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") 

上一篇: 带大家学习PHP中的文件系统函数(一) 下一篇: 如何通过php判断一个文件哪个平台编辑的