全球主机交流论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

IP归属甄别会员请立即修改密码
查看: 805|回复: 9
打印 上一主题 下一主题

一张奇怪的图片

[复制链接]
跳转到指定楼层
1#
发表于 2024-5-17 16:55:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用php怎么都无法获取完整的图片,但是浏览器是可以正常打开的。

  1. <?php
  2. function displayImage($url) {
  3.     // 重试次数
  4.     $maxRetries = 3;
  5.     $retryCount = 0;

  6.     do {
  7.         // 初始化cURL
  8.         $ch = curl_init($url);
  9.         curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  10.         curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
  11.         curl_setopt($ch, CURLOPT_TIMEOUT, 300); // 设置超时时间
  12.         curl_setopt($ch, CURLOPT_FAILONERROR, true);

  13.         // 获取图片内容
  14.         $imageContent = curl_exec($ch);

  15.         // 获取HTTP状态码
  16.         $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
  17.         $curlError = curl_error($ch);
  18.         curl_close($ch);

  19.         if ($httpCode === 200) {
  20.             break; // 成功下载,退出循环
  21.         }

  22.         $retryCount++;
  23.     } while ($retryCount < $maxRetries);

  24.     if ($httpCode !== 200) {
  25.         echo "无法获取图片内容。HTTP状态码: " . $httpCode . " 错误: " . $curlError;
  26.         return;
  27.     }

  28.     // 获取图片的MIME类型
  29.     $imageInfo = getimagesizefromstring($imageContent);
  30.     if ($imageInfo === FALSE) {
  31.         echo "无法识别图片格式。";
  32.         return;
  33.     }
  34.    
  35.     $mimeType = $imageInfo['mime'];

  36.     // 设置适当的Content-Type头
  37.     header("Content-Type: $mimeType");

  38.     // 显示图片
  39.     echo $imageContent;
  40. }

  41. // 调用函数显示图片
  42. displayImage("http://thumb.zgjiemeng.com/d/file/contents/2019/10/5da985cd42edd.jpg");
  43. ?>
复制代码
推荐
发表于 2024-5-17 18:33:57 | 只看该作者
指定字符集
curl_setopt($ch, CURLOPT_ENCODING, 'UTF-8');
// 获取图片内容 上面添加

话说 又在爬站了吗
推荐
 楼主| 发表于 2024-5-17 17:47:56 | 只看该作者
箫璃蔫 发表于 2024-5-17 17:43
图都没有,你在说什么,而且你不会试试国内的图片?

1、代码中包含了图片url,看不懂php就闭嘴。
2、图片服务器在HK,如果你认为不是国内的那算哪的?
2#
发表于 2024-5-17 17:43:32 | 只看该作者
图都没有,你在说什么,而且你不会试试国内的图片?
4#
发表于 2024-5-17 17:51:54 | 只看该作者
本帖最后由 icon 于 2024-5-17 17:53 编辑

有啥额外检测吧,比如ua

  1. root@iZuf610otwtqjmygenx33wZ:/tmp# wget http://thumb.zgjiemeng.com/d/file/contents/2019/10/5da985cd42edd.jpg
  2. --2024-05-17 17:51:05--  http://thumb.zgjiemeng.com/d/file/contents/2019/10/5da985cd42edd.jpg
  3. Resolving thumb.zgjiemeng.com (thumb.zgjiemeng.com)... 8.217.155.9
  4. Connecting to thumb.zgjiemeng.com (thumb.zgjiemeng.com)|8.217.155.9|:80... connected.
  5. HTTP request sent, awaiting response... 403 Forbidden
  6. 2024-05-17 17:51:05 ERROR 403: Forbidden.
复制代码

5#
发表于 2024-5-17 18:01:39 | 只看该作者
查request header呗这有啥好奇怪的
6#
发表于 2024-5-17 18:03:55 | 只看该作者
查request header呗这有啥好奇怪的
7#
发表于 2024-5-17 18:16:40 | 只看该作者
8#
发表于 2024-5-17 18:28:52 | 只看该作者
浏览器可以正常打开是什么意思,是访问这个图片地址可以正常显示吗?
用代码去获取的时候,需要带上请求头,等等一些信息。有些图片会有防盗设置的。
10#
 楼主| 发表于 2024-5-17 18:40:52 | 只看该作者
瞄人缝 发表于 2024-5-17 18:33
指定字符集
curl_setopt($ch, CURLOPT_ENCODING, 'UTF-8');
// 获取图片内容 上面添加

可以了,牛逼啊! 高铁上爬了个站
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|全球主机交流论坛

GMT+8, 2025-11-14 22:53 , Processed in 0.117773 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表