0

Shell脚本批量检测多域名重定向链路:3个实战脚本让跨站跳转调试不再头疼

2026.06.15 | youres | 6次围观

涓轰粈涔堥渶瑕佹壒閲忔娴嬪鍩熷悕閲嶅畾鍚戦摼璺?/h2>

缃戠珯杩佺Щ銆佸煙鍚嶅悎骞躲€丠TTPS鍗囩骇绛夊満鏅兘浼氭秹鍙婂ぇ閲忕殑鍩熷悕閲嶅畾鍚戦厤缃€傚鏋滀竴涓烦杞摼璺嚭閿欙紝鐩存帴褰卞搷鐢ㄦ埛浣撻獙鍜孲EO銆傛墜鍔ㄧ敤curl妫€娴嬩竴涓や釜鍩熷悕杩樿锛屼絾瑕佹鏌ュ嚑鍗佷笂鐧句釜鍩熷悕锛屽氨寰楅潬Shell鑴氭湰鑷姩鍖栦簡銆?/p>

杩欑瘒鏂囩珷鍑嗗浜?涓疄鎴樿剼鏈紝浠庡熀纭€鍒板苟琛屽姞閫燂紝瑕嗙洊鏃ュ父宸℃鐨勭粷澶ч儴鍒嗗満鏅€?/p>

鍑嗗宸ヤ綔锛氭牳蹇冨弬鏁伴€熻

  • -L锛氳窡闅忛噸瀹氬悜
  • -s锛氶潤榛樻ā寮?/li>
  • -o /dev/null锛氫涪寮冨搷搴斾綋
  • -w "%{鍙橀噺}"锛氭彁鍙杣rl_effective銆乶um_redirects銆乼ime_total绛変俊鎭?/li>
  • --connect-timeout锛氳繛鎺ヨ秴鏃讹紝閬垮厤鍗℃

缁勫悎璧锋潵锛歝url -s -L -o /dev/null -w "鏈€缁堝湴鍧€: %{url_effective}\t璺宠浆娆℃暟: %{num_redirects}\t鑰楁椂: %{time_total}s" https://example.com

鑴氭湰涓€锛氬熀纭€寰幆妫€娴?/h2>

鍩熷悕鍐欏湪鏂囦欢閲岋紝閫愯璇诲彇妫€娴嬶紝缁撴灉杈撳嚭鍒拌〃鏍笺€?/p>

#!/bin/bash
INPUT_FILE="$1"
OUTPUT_FILE="redirect_result_$(date +%Y%m%d).tsv"
echo -e "鍩熷悕\t鏈€缁堝湴鍧€\t璺宠浆娆℃暟\t鑰楁椂\t鐘舵€佺爜" > "$OUTPUT_FILE"

while IFS= read -r domain || [ -n "$domain" ]; do
    [[ -z "$domain" || "$domain" =~ ^# ]] && continue
    result=$(curl -s -L -o /dev/null \
        -w "%{url_effective}\t%{num_redirects}\t%{time_total}\t%{http_code}" \
        --connect-timeout 10 --max-time 30 "https://$domain" 2>/dev/null)
    echo -e "$domain\t$result" >> "$OUTPUT_FILE"
    echo "宸叉娴? $domain"
done < "$INPUT_FILE"
echo "缁撴灉宸蹭繚瀛樺埌 $OUTPUT_FILE"

鍩熷悕鍒楄〃鏍煎紡锛堟瘡琛屼竴涓紝鏀寔#娉ㄩ噴锛夛細

example.com
old-site.cn
# 涓嬮潰杩欎釜闇€瑕侀獙璇?test.legacy-site.org

鑴氭湰浜岋細閾捐矾璇婃柇+寮傚父鍛婅

澧炲姞閫愯烦Location澶磋緭鍑猴紝瀵瑰紓甯搁摼璺嚜鍔ㄦ爣璁板憡璀︺€?/p>

#!/bin/bash
INPUT_FILE="$1"
REPORT_FILE="redirect_report_$(date +%Y%m%d).txt"
check_chain() {
    local domain="$1"
    local info=$(curl -s -L -o /dev/null \
        -w "鏈€缁堝湴鍧€: %{url_effective}\n璺宠浆娆℃暟: %{num_redirects}\n鑰楁椂: %{time_total}s\n鐘舵€佺爜: %{http_code}" \
        --connect-timeout 10 --max-time 30 "https://$domain")
    local chain=$(curl -s -I -L "https://$domain" 2>/dev/null | grep -i "^location:")
    echo "$domain"
    echo "$info"
    echo "璺宠浆閾捐矾:"
    echo "$chain"
}
while IFS= read -r domain || [ -n "$domain" ]; do
    [[ -z "$domain" || "$domain" =~ ^# ]] && continue
    check_chain "$domain" >> "$REPORT_FILE"
done < "$INPUT_FILE"
echo "鎶ュ憡: $REPORT_FILE"

鑴氭湰涓夛細xargs骞惰鍔犻€?/h2>

鍩熷悕澶氫簡涓茶澶參锛岀敤xargs -P骞惰锛岄粯璁?0璺苟鍙戙€?/p>

#!/bin/bash
INPUT_FILE="$1"
PARALLEL="${2:-10}"
OUTPUT_JSON="redirect_result_$(date +%Y%m%d).json"
check_domain() {
    local domain="$1"
    curl -s -L -o /dev/null \
        -w '{"domain":"%{url_effective}","redirects":%{num_redirects},"time":%{time_total},"status":%{http_code}}' \
        --connect-timeout 10 --max-time 30 "https://$domain" 2>/dev/null
}
export -f check_domain
grep -v '^\s*$\|^\s*#' "$INPUT_FILE" | \
    xargs -I {} -P "$PARALLEL" bash -c 'check_domain "$@"' _ {} | \
    jq -s '.' > "$OUTPUT_JSON"
echo "缁撴灉宸蹭繚瀛樺埌 $OUTPUT_JSON"

鏈€浣冲疄璺靛缓璁?/h2>

鍩熷悕鍒楄〃鍑嗗锛氫粠Nginx閰嶇疆 grep server_name 鎻愬彇锛屾垨浠庢棫鏂囨。鏁寸悊銆?/p>

鎵ц鏃舵満锛氫笂绾垮墠鍏ㄩ噺楠岃瘉銆佹瘡鏈堥厤鍚坈rontab宸℃銆佺涓夋柟鍙樻洿鍚庢壒閲忔鏌ャ€?/p>

缁撴灉鍒ゆ柇锛?-2娆¤烦杞甯革紝3-5娆″缓璁紭鍖栵紝5娆′互涓婂繀椤绘暣鏀癸紝缁堢偣闈?00璇存槑閰嶇疆鏈夎銆?/p>

鎬荤粨

鎵归噺妫€娴嬪鍩熷悕閲嶅畾鍚戦摼璺槸缃戠珯杩愮淮鐨勫父瑙勯渶姹傦紝Shell鑴氭湰閰嶅悎curl鐨?w鍙傛暟锛屼竴濂楄剼鏈悶瀹氫粠妫€娴嬪埌鎶ュ憡鐨勫叏娴佺▼銆傚缓璁厛浠庡熀纭€鐗堝叆鎵嬶紝鍐嶆牴鎹満鏅崌绾с€傛妸鑴氭湰鏀惧埌crontab閲屽畾鏃惰窇锛岃閲嶅畾鍚戦摼璺缁堝浜庡仴搴风姸鎬併€?/p>

鐩稿叧鏂囩珷鎺ㄨ崘

版权声明

本文仅代表个人观点。
本文系AI辅助作者原创,未经许可,转载请保留原文链接。

发表评论