如何用curl/wget获取文件服务器上50个文件的绝对URL列表?
解决方案
方法1:使用wget蜘蛛模式(推荐)
利用wget的蜘蛛模式仅爬取链接不下载文件,结合日志提取目标URL:
# 爬取目录链接并输出日志到文件(不下载文件) wget --spider -r -np -nd -o wget_log.txt http://fileserver1.com/sec-test/compressed/mango/exe/small/
参数说明:
--spider:启用蜘蛛模式,仅遍历链接不下载资源-r:递归爬取目录下的所有文件链接-np:禁止爬取父目录,避免超出目标路径-nd:不创建本地目录结构,简化日志内容-o wget_log.txt:将爬取日志输出到指定文件
从日志中提取.exe文件的绝对URL,并截取前50条保存到测试列表:
grep -E '^--.*http.*\.exe$' wget_log.txt | awk '{print $3}' | head -50 > test_urls.txt
方法2:使用curl解析目录页面
如果服务器以HTML列表形式展示文件,可直接获取页面源码并提取链接:
curl -s http://fileserver1.com/sec-test/compressed/mango/exe/small/ | grep -E 'href=".*\.exe"' | sed 's/href="//;s/"//' | awk '{print "http://fileserver1.com/sec-test/compressed/mango/exe/small/"$0}' | head -50 > test_urls.txt
参数说明:
-s:静默模式,不显示curl的进度信息- grep筛选出包含
.exe的链接标签 - sed移除链接标签的
href="和闭合引号,提取相对路径 - awk拼接相对路径与服务器根路径,生成绝对URL
- head截取前50条结果保存到文件
验证结果
查看生成的测试列表:
cat test_urls.txt
输出示例:
http://fileserver1.com/sec-test/compressed/mango/exe/small/1.exe
http://fileserver1.com/sec-test/compressed/mango/exe/small/2.exe
...(共50条符合要求的URL)
内容的提问来源于stack exchange,提问作者deep
相关产品推荐
相关产品推荐

