能否在Puppeteer中发起HEAD请求?
无需下载文件即可获取响应头判断文件更新时间
要获取文件链接的响应头而不下载文件主体,主要有以下几种实用方法:
命令行工具(curl)
直接用curl发送HEAD请求,仅获取响应头:
curl -I https://example.com/your-file.txt
返回结果里的Last-Modified字段就是文件的最后修改时间,对比这个字段就能判断哪个文件更新。
如果部分服务器不支持HEAD请求,可以用--head参数(效果和-I类似),或者用GET请求但强制只获取头信息:
curl -s --head https://example.com/your-file.txt
Python 脚本实现
用requests库发送HEAD请求,高效获取响应头:
import requests def get_last_modified(url): try: resp = requests.head(url, timeout=10) resp.raise_for_status() # 检查请求是否成功 return resp.headers.get('Last-Modified') except requests.exceptions.RequestException as e: print(f"请求出错: {e}") return None # 示例调用 file_urls = [ "https://example.com/file1.txt", "https://example.com/file2.txt" ] for url in file_urls: modified_time = get_last_modified(url) print(f"{url} 最后修改时间: {modified_time}")
HEAD请求只会返回响应头数据,不会下载文件内容,节省带宽和时间。如果遇到服务器拒绝HEAD请求的情况,可以改用GET请求并设置stream=True,然后立即关闭连接(不读取响应体):
resp = requests.get(url, stream=True, timeout=10) resp.close() modified_time = resp.headers.get('Last-Modified')
关键说明
- 核心依赖响应头里的
Last-Modified字段,大部分静态文件服务器都会返回这个字段; - 少数服务器可能返回
ETag字段,也可以作为文件版本标识,但判断新旧不如Last-Modified直观; - 确保请求时处理好异常(比如连接超时、404错误等),避免脚本中断。
内容的提问来源于stack exchange,提问作者Jeff Lowery
相关产品推荐
相关产品推荐

