欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

为什么 curl 取不到内容 AG chatgpt 有大用 有大大用

<?php
/**
* Created by PhpStorm.
* User: 16666739
* Date: 2025/10/29
* Time: 8:00
*/

$ch = curl_init();

// 设置URL和相应的选项     好像必须要用 www.baidu.com 不要用 baidu.com 否则会跳转
//是由于它本身 网站跳转的吧
curl_setopt($ch, CURLOPT_URL, "https://www.itsk.com/");
curl_setopt($ch, CURLOPT_HEADER, false);
//1是保存到字符串中  0是输出到屏幕上
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// 抓取URL并把它传递给浏览器
$tmpInfo = curl_exec($ch);
//curl_exec($ch);
// 关闭cURL资源,并且释放系统资源
curl_close($ch);

echo $tmpInfo;
//为什么 $tmpInfo 的结果为空呢
/**
* Created by PhpStorm.
* User: 16666739
* Date: 2025/10/29
* Time: 8:19
*/



你的代码中$tmpInfo为空可能有以下几个原因:

1. SSL/HTTPS 证书问题

当你尝试访问 HTTPS 网址 https://www.itsk.com/ 时,可能因为缺乏 SSL 验证或服务器证书问题导致连接失败。

解决方案

php
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 跳过SSL证书验证 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); // 跳过主机名验证

2. 目标服务器拒绝请求

有些网站可能会拒绝识别为非浏览器的客户端请求(如简单的 cURL),可能会返回空内容或 403 禁止访问。

解决方案: 设置用户代理(User-Agent),伪装成浏览器:

php
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36');

3. 需要处理重定向

如果目标网址有重定向,而你的代码没有跟随重定向,可能会导致获取不到内容。

解决方案

php
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); // 跟随重定向

4. 网络或连接问题

如果服务器暂时无法访问,或者你的网络环境阻止了连接(如代理问题),也会导致空结果。

解决方案: 检查错误信息:

php
$tmpInfo = curl_exec($ch); if ($tmpInfo === false) {    echo 'Curl error: ' . curl_error($ch); } curl_close($ch);

完善后的代码示例 

php
$ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "https://www.itsk.com/"); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 忽略SSL证书 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); // 忽略主机验证 curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'); // 设置UA curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); // 跟随重定向 $tmpInfo = curl_exec($ch); if ($tmpInfo === false) {    echo 'Error: ' . curl_error($ch); } else {    echo $tmpInfo; } curl_close($ch);

其他调试建议

  • 先用 http://example.com 或 http://httpbin.org/get 这类简单的HTTP网址测试,确认基础功能正常。

  • 使用 curl_getinfo($ch) 检查请求详情:

    php
    $info = curl_getinfo($ch); print_r($info);

通过以上调整,应该能解决空结果的问题。如果问题依旧,请检查目标网站是否可正常访问(如直接用浏览器打开测试)。


普通分类: