如何用CURL批量检测字母递增URL并仅保留有效链接?
过滤404仅输出有效URL的实现方法
直接在你的Bash循环里加入状态码判断逻辑就行,下面给你两种实用的写法:
方法1:基于现有curl命令的判断
如果不想大幅修改现有代码,就解析curl返回的头部状态码,排除404后输出有效URL:
# 替换成你实际的路径遍历逻辑 for path in {a..zzzzzzzzzzz}; do # 提取HTTP状态码 status=$(curl -Is "example.com/$path" | head -1 | awk '{print $2}') # 非404则输出完整URL if [ "$status" != "404" ]; then echo "https://example.com/$path" fi done
方法2:更高效的curl状态码直接获取
上面的方法需要解析字符串,容易出问题,推荐用curl自带参数直接返回状态码,速度更快也更可靠:
for path in {a..zzzzzzzzzzz}; do url="https://example.com/$path" # -s静默模式,-o丢弃响应内容,-w指定仅输出状态码 status=$(curl -s -o /dev/null -w "%{http_code}" "$url") # 可按需调整判断逻辑,比如只保留2xx/3xx类有效状态 if [ "$status" != "404" ]; then echo "$url" fi done
额外优化建议
- 循环末尾加
sleep 0.1,避免请求过于频繁被目标网站限制 - 如果要精准筛选成功状态,可把判断改成:
if [[ "$status" =~ ^[23][0-9]{2}$ ]]; then
内容的提问来源于stack exchange,提问作者user27248272
相关产品推荐
相关产品推荐

