You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过curl获取带认证站点下可直接访问的文件列表?

获取目标目录文件列表的curl实现方案

由于目标站点的目录(https://www.example.com/files/download)存在认证限制,但具体文件可直接访问,你可以从以下几个方向尝试获取文件列表:

1. 针对规律命名文件的批量检测

如果文件是按数字、字母序列命名(比如你用到的1.mp4、2.mp4),可以用curl仅请求响应头来快速验证文件是否存在,避免下载完整内容:

  • 单个文件存在性检测:
curl -k -I -s https://example.com/file/download/1.mp4 | head -n 1
  • 批量检测连续编号文件,过滤出存在的(HTTP状态码为200/206):
for i in {1..20}; do
  status=$(curl -k -I -s https://example.com/file/download/$i.mp4 | head -n 1 | awk '{print $2}')
  if [ "$status" -eq 200 ] || [ "$status" -eq 206 ]; then
    echo "存在文件: $i.mp4"
  fi
done

参数说明:-I仅请求响应头,-s启用静默模式减少冗余输出,通过状态码判断文件是否存在。

2. 检查目录索引是否可访问

部分站点可能存在配置疏漏,即使目录有认证限制,仍可能返回目录索引页面。直接请求目录URL并提取内容:

curl -k -s https://www.example.com/files/download/

如果返回带文件列表的HTML,可通过grep提取文件名:

curl -k -s https://www.example.com/files/download/ | grep -oP 'href="\K[^"]+\.mp4'

3. 枚举常见文件名

如果文件命名无明显规律,可针对常见媒体文件名批量检测:

for name in video sample test demo; do
  status=$(curl -k -I -s https://example.com/file/download/$name.mp4 | head -n 1 | awk '{print $2}')
  if [ "$status" -eq 200 ] || [ "$status" -eq 206 ]; then
    echo "存在文件: $name.mp4"
  fi
done

注意:以上方法的有效性依赖于站点配置和文件命名规则,若站点采用随机化文件名或反枚举措施,可能无法获取完整列表。

内容的提问来源于stack exchange,提问作者sajjad kargar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 06:02:38