浏览器保存下载不带后缀的图片文件名命名规则

2024-06-10 20:32

本文主要是介绍浏览器保存下载不带后缀的图片文件名命名规则,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

最近搞爬虫的时候对于下载图片的时候如何命名碰到的问题。对于一般地址规则的图片,

例如:

https://pic2.zhimg.com/80/v2-2e4868da9f91f3320f3fdad248c28ff8_720w.jpg?source=1940ef5c,
https://wx3.sinaimg.cn/mw690/005uuxWfly1gn6r1cxl15j30xc0ipjz0.jpg

之前都是这么:

filename = url.split('/')[-1].split('?')[0]

或者这么搞的。

from urllib.parse import urlparse
file_name = os.path.basename(urlparse(url).path)

不过最近碰到好多不地址规则的图片,就处理不了。如下:

https://y3p.org/download/file.php?id=235

https://www.sammyboy.com/attachments/1589520290213-png.78635/

但是浏览器保存的时候名字却正常,因为response headers 里面都带了content-disposition字段,包含了文件名信息

https://y3p.org/download/file.php?id=235 字段

content-disposition:inline; filename*=UTF-8''79C2EAD8-AE48-4E39-A65A-5820697B189A.jpeg

https://www.sammyboy.com/attachments/1589520290213-png.78635/ 字段

content-disposition: inline; filename="1589520290213.png"

所以浏览器保存的时候文件名就是79C2EAD8-AE48-4E39-A65A-5820697B189A.jpeg和1589520290213.png

至于不带content-disposition字段url,例如:https://bkimg.cdn.bcebos.com/pic/0eb30f2442a7d933c8956906b500c61373f08202ab39

浏览器应该根据content-type字段和url路径的最后部分组成名字的。


通过fiddler抓包修改response headers,

https://y3p.org/download/file.php?id=235 去掉content-disposition字段,文件名为:file.jpg

https://www.sammyboy.com/attachments/1589520290213-png.78635/ 去掉content-disposition字段,文件名为:下载.png,看样浏览器蒙了。。。

还有浏览器无法正确保存文件名的例子:

https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2021%2F0130%2F1901f6fcj00qnqthz0008d200dv0066g00g20075.jpg&thumbnail=650x2147483647&quality=80&type=jpg

https://www.91porn.com/captcha.php

至于浏览器到底怎么命名下载文件的,搜了一下也没找到太多有用的资料。

实测来看应该是:

1、看content-disposition字段,ps:content-disposition字段值得格式也不一样,上面我我举的例子就是不同的。

2、没有content-disposition字段的话在根据url和Content-Type拼接文件名,

3、最后实在无法处理的默认文件名为:下载,在由Content-Type决定后缀

 

 

这篇关于浏览器保存下载不带后缀的图片文件名命名规则的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1049192

相关文章

python运用requests模拟浏览器发送请求过程

《python运用requests模拟浏览器发送请求过程》模拟浏览器请求可选用requests处理静态内容,selenium应对动态页面,playwright支持高级自动化,设置代理和超时参数,根据需... 目录使用requests库模拟浏览器请求使用selenium自动化浏览器操作使用playwright

Python获取浏览器Cookies的四种方式小结

《Python获取浏览器Cookies的四种方式小结》在进行Web应用程序测试和开发时,获取浏览器Cookies是一项重要任务,本文我们介绍四种用Python获取浏览器Cookies的方式,具有一定的... 目录什么是 Cookie?1.使用Selenium库获取浏览器Cookies2.使用浏览器开发者工具

SQL server数据库如何下载和安装

《SQLserver数据库如何下载和安装》本文指导如何下载安装SQLServer2022评估版及SSMS工具,涵盖安装配置、连接字符串设置、C#连接数据库方法和安全注意事项,如混合验证、参数化查... 目录第一步:打开官网下载对应文件第二步:程序安装配置第三部:安装工具SQL Server Manageme

基于Python实现一个图片拆分工具

《基于Python实现一个图片拆分工具》这篇文章主要为大家详细介绍了如何基于Python实现一个图片拆分工具,可以根据需要的行数和列数进行拆分,感兴趣的小伙伴可以跟随小编一起学习一下... 简单介绍先自己选择输入的图片,默认是输出到项目文件夹中,可以自己选择其他的文件夹,选择需要拆分的行数和列数,可以通过

使用Python实现可恢复式多线程下载器

《使用Python实现可恢复式多线程下载器》在数字时代,大文件下载已成为日常操作,本文将手把手教你用Python打造专业级下载器,实现断点续传,多线程加速,速度限制等功能,感兴趣的小伙伴可以了解下... 目录一、智能续传:从崩溃边缘抢救进度二、多线程加速:榨干网络带宽三、速度控制:做网络的好邻居四、终端交互

浏览器插件cursor实现自动注册、续杯的详细过程

《浏览器插件cursor实现自动注册、续杯的详细过程》Cursor简易注册助手脚本通过自动化邮箱填写和验证码获取流程,大大简化了Cursor的注册过程,它不仅提高了注册效率,还通过友好的用户界面和详细... 目录前言功能概述使用方法安装脚本使用流程邮箱输入页面验证码页面实战演示技术实现核心功能实现1. 随机

利用Python脚本实现批量将图片转换为WebP格式

《利用Python脚本实现批量将图片转换为WebP格式》Python语言的简洁语法和库支持使其成为图像处理的理想选择,本文将介绍如何利用Python实现批量将图片转换为WebP格式的脚本,WebP作为... 目录简介1. python在图像处理中的应用2. WebP格式的原理和优势2.1 WebP格式与传统

Redis分片集群、数据读写规则问题小结

《Redis分片集群、数据读写规则问题小结》本文介绍了Redis分片集群的原理,通过数据分片和哈希槽机制解决单机内存限制与写瓶颈问题,实现分布式存储和高并发处理,但存在通信开销大、维护复杂及对事务支持... 目录一、分片集群解android决的问题二、分片集群图解 分片集群特征如何解决的上述问题?(与哨兵模

如何在Mac上彻底删除Edge账户? 手动卸载Edge浏览器并清理残留文件技巧

《如何在Mac上彻底删除Edge账户?手动卸载Edge浏览器并清理残留文件技巧》Mac上的Edge账户里存了不少网站密码和个人信息,结果同事一不小心打开了,简直尴尬到爆炸,想要卸载edge浏览器并清... 如果你遇到 Microsoft Edge 浏览器运行迟缓、频繁崩溃或网页加载异常等问题,可以尝试多种方

Python如何将OpenCV摄像头视频流通过浏览器播放

《Python如何将OpenCV摄像头视频流通过浏览器播放》:本文主要介绍Python如何将OpenCV摄像头视频流通过浏览器播放的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完... 目录方法1:使用Flask + MJPEG流实现代码使用方法优点缺点方法2:使用WebSocket传输视