目标图片:https://img.alicdn.com/imgextra/O1CN01MW6Bpi1KJXbwTYrw5_!!2216508591143.jpg
发现这个图片可以直接在浏览器打开,在我的 mac 上也可以使用 wget 直接下载
╰─➤ wget https://img.alicdn.com/imgextra/O1CN01MW6Bpi1KJXbwTYrw5_\!\!2216508591143.jpg
--2024-08-08 10:23:38-- https://img.alicdn.com/imgextra/O1CN01MW6Bpi1KJXbwTYrw5_!!2216508591143.jpg
Resolving img.alicdn.com (img.alicdn.com)... 39.183.55.234, 39.183.55.233
Connecting to img.alicdn.com (img.alicdn.com)|39.183.55.234|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 64164 (63K) [image/webp]
Saving to: ‘O1CN01MW6Bpi1KJXbwTYrw5_!!2216508591143.jpg’
O1CN01MW6Bpi1KJXbwTYrw5_!!2216508591143 100%[===============================================================================>] 62.66K --.-KB/s in 0.01s
2024-08-08 10:23:38 (4.83 MB/s) - ‘O1CN01MW6Bpi1KJXbwTYrw5_!!2216508591143.jpg’ saved [64164/64164]
但是因为我的服务是部署在 aliyun 的 ack,但是我发现在 aliyun ack 访问这个图片居然就是 420 !
写了下面的测试代码
import os
import requests
from PIL import Image
def download_image(url, save_path):
response = requests.get(url)
if response.status_code == 200:
with open(save_path, 'wb') as f:
f.write(response.content)
if os.path.getsize(save_path) > 0: # 检查文件是否为空
try:
image = Image.open(save_path)
width, height = image.size
file_size = len(response.content)
print(f"图片分辨率为:{width}x{height}")
print(f"图片体积大小为:{file_size} 字节")
except Exception as e:
print(f"打开图片时出错: {e}")
else:
print("文件为空或未下载正确")
else:
print(f"请求失败,状态码: {response.status_code}")
url = 'https://img.alicdn.com/imgextra/O1CN01MW6Bpi1KJXbwTYrw5_!!2216508591143.jpg'
save_path = 'image.jpg' # 你可以修改保存的文件名和路径
download_image(url, save_path)
上面的代码,在我的 mac 上的执行效果
图片分辨率为:800x800
图片体积大小为:64164 字节
在 aliyun ack 内的 pod 的执行效果
请求失败,状态码: 420
大无语了!
加上响应体
import os
import requests
from PIL import Image
def download_image(url, save_path):
response = requests.get(url)
if response.status_code == 200:
with open(save_path, 'wb') as f:
f.write(response.content)
if os.path.getsize(save_path) > 0: # 检查文件是否为空
try:
image = Image.open(save_path)
width, height = image.size
file_size = len(response.content)
print(f"图片分辨率为:{width}x{height}")
print(f"图片体积大小为:{file_size} 字节")
except Exception as e:
print(f"打开图片时出错: {e}")
else:
print("文件为空或未下载正确")
else:
print(f"请求失败,状态码: {response.status_code}")
print(f"请求失败,响应体: {response.text}")
url = 'https://img.alicdn.com/imgextra/O1CN01MW6Bpi1KJXbwTYrw5_!!2216508591143.jpg'
save_path = 'image.jpg' # 你可以修改保存的文件名和路径
download_image(url, save_path)
在 aliyun 服务器的运行结果
请求失败,状态码: 420
请求失败,响应体: {"rgv587_flag":"sm","url":"https://g.alicdn.com/sd/punish/wait_h5.html?qrcode=H4iDIyXmTNtmslddCOzs9A|ZrWHmw|7jG4bg_0&uuid=1f88832325e64cdb66b2575d08ececf4&action=wait&origin=http%3A%2F%2Fimg.alicdn.com%2Fbao%2Fuploaded%2Fi4%2F515239285%2FO1CN01lwJoSs2ISa2iY0jBF_%21%21515239285.jpg_.webp"}
被反爬了吧,其实很正常。