0

curl批量检测重定向输出CSV格式化方法:3个实战脚本让网站巡检结果一目了然

2026.06.04 | youres | 24次围观
# curl鎵归噺妫€娴嬮噸瀹氬悜杈撳嚭CSV鏍煎紡鍖栨柟娉曪細3涓疄鎴樿剼鏈缃戠珯宸℃缁撴灉涓€鐩簡鐒? 浣犳湁娌℃湁閬囧埌杩囪繖绉嶆儏鍐碉細鎵嬮噷鏈夊嚑鍗佷釜URL闇€瑕佹鏌ラ噸瀹氬悜鏄惁姝g‘锛屼竴涓釜鎵嬪姩curl澶參锛岃緭鍑虹殑缁撴灉鍙堜贡涓冨叓绯燂紝鏍规湰娌℃硶缁欓瀵间氦宸紵 浠婂ぉ鎴戞潵鍒嗕韩3涓疄鎴樿剼鏈紝璁╀綘鐢╟url鎵归噺妫€娴嬮噸瀹氬悜锛岀劧鍚庢妸缁撴灉鏍煎紡鍖栬緭鍑哄埌CSV鏂囦欢锛屾棦娓呮櫚鍙堜笓涓氥€? ## 涓轰粈涔堣鎶奵url閲嶅畾鍚戞娴嬬粨鏋滆緭鍑哄埌CSV锛? 鍦ㄥ仛缃戠珯杩佺Щ銆佸煙鍚嶆洿鎹€佹垨鑰呮棩甯歌繍缁村贰妫€鏃讹紝鎴戜滑缁忓父闇€瑕侀獙璇佷竴澶ф壒URL鐨勯噸瀹氬悜鏄惁姝g‘銆傚鏋滃彧鐢╟url涓€涓釜鎵嬪姩娴嬶紝鏁堢巼浣庝笉璇达紝缁撴灉杩樻病娉曟矇娣€鍜屽垎浜€? CSV鏍煎紡鐨勫ソ澶勬槸锛?- Excel/WPS鍙互鐩存帴鎵撳紑锛屾柟渚挎煡鐪嬪拰绛涢€?- 鍙互瀵煎叆鏁版嵁搴撴垨鐩戞帶绯荤粺鍋氳繘涓€姝ュ垎鏋?- 鏂逛究鍋氬巻鍙插姣旓紝鐪嬬湅閲嶅畾鍚戦厤缃湁娌℃湁琚汉鏀硅繃 ## 鏍稿績鎬濊矾锛歝url -w 杈撳嚭閲嶅畾鍚戝彉閲?+ awk/sed鏍煎紡鍖? curl鐨刞-w`锛堟垨`--write-out`锛夊弬鏁板彲浠ュ湪璇锋眰瀹屾垚鍚庤緭鍑烘寚瀹氱殑鍙橀噺銆傚拰閲嶅畾鍚戠浉鍏崇殑鍑犱釜鍏抽敭鍙橀噺鏄細 鍙橀噺 | 鍚箟 ------|------ `%{url_effective}` | 鏈€缁堣烦杞埌鐨刄RL锛堥噸瀹氬悜缁堢偣锛? `%{num_redirects}` | 閲嶅畾鍚戞鏁? `%{http_code}` | 鏈€缁堝搷搴旂殑HTTP鐘舵€佺爜 `%{redirect_url}` | 鏈嶅姟鍣ㄨ繑鍥炵殑閲嶅畾鍚戠洰鏍嘦RL锛堜粎闄恅-L`鍙傛暟鏈娇鐢ㄦ椂锛? 瑕佹妸杩欎簺鍙橀噺杈撳嚭鍒癈SV锛屾牳蹇冩妧宸ф槸鐢╜-w`鎸囧畾杈撳嚭鏍煎紡锛岀劧鍚庣敤绠¢亾浼犵粰`awk`鎴朻sed`澶勭悊鎴怌SV琛屻€? ## 鑴氭湰涓€锛氬熀纭€鐗堚€斺€斿崟URL妫€娴嬭緭鍑篊SV鏍煎紡 鍏堜粠涓€涓畝鍗曠殑渚嬪瓙寮€濮嬶紝妫€娴嬪崟涓猆RL鐨勯噸瀹氬悜鎯呭喌骞惰緭鍑篊SV鏍煎紡锛?
#!/bin/bash
# 鍩虹鐗堬細妫€娴嬪崟涓猆RL鐨勯噸瀹氬悜锛岃緭鍑篊SV鏍煎紡
# 鐢ㄦ硶锛?/check_redirect.sh "https://example.com"

URL="$1"
if [ -z "$URL" ]; then
    echo "鐢ㄦ硶: $0 "
    exit 1
fi

# 鐢╟url -L -w 鑾峰彇閲嶅畾鍚戜俊鎭?# --max-redirs 10 闄愬埗鏈€澶氳拷韪?0娆¤烦杞?# -s 闈欓粯妯″紡锛?o /dev/null 涓嶄笅杞藉唴瀹?RESULT=$(curl -L --max-redirs 10 -s -o /dev/null \
    -w "鍒濆URL: %{url_effective}\n璺宠浆娆℃暟: %{num_redirects}\n鏈€缁堢姸鎬佺爜: %{http_code}\n" \
    "$URL" 2>/dev/null)

# 杈撳嚭CSV琛ㄥご锛堢涓€娆¤繍琛屾椂锛?if [ ! -f redirect_results.csv ]; then
    echo "鍒濆URL,鏈€缁圲RL,璺宠浆娆℃暟,鏈€缁堢姸鎬佺爜" > redirect_results.csv
fi

# 鎻愬彇鏈€缁圲RL鍜岃烦杞鏁?FINAL_URL=$(echo "$RESULT"  grep "鍒濆URL:"  cut -d' ' -f2-)
NUM_REDIRECTS=$(echo "$RESULT"  grep "璺宠浆娆℃暟:"  awk '{print $2}')
HTTP_CODE=$(echo "$RESULT"  grep "鏈€缁堢姸鎬佺爜:"  awk '{print $2}')

# 鍐欏叆CSV锛堟敞鎰忓鐞哢RL涓殑閫楀彿锛岀敤鍙屽紩鍙峰寘瑁癸級
echo "\"$URL\",\"$FINAL_URL\",$NUM_REDIRECTS,$HTTP_CODE" >> redirect_results.csv

echo "缁撴灉宸插啓鍏?redirect_results.csv"
杩欎釜鑴氭湰鐨勯棶棰樻槸锛氬鏋淯RL涓寘鍚€楀彿锛堣櫧鐒跺皯瑙佷絾鍙兘鍙戠敓锛夛紝CSV浼氶敊浣嶃€傝В鍐冲姙娉曟槸鐢ㄥ弻寮曞彿鎶奤RL瀛楁鍖呰9璧锋潵銆? ## 鑴氭湰浜岋細杩涢樁鐗堚€斺€旀壒閲忔娴?閿欒澶勭悊+CSV鏍煎紡鍖? 瀹為檯宸ヤ綔涓紝鎴戜滑寰€寰€闇€瑕佹壒閲忔娴嬨€備笅闈㈡槸涓€涓洿瀹屽杽鐨勭増鏈細
#!/bin/bash
# 杩涢樁鐗堬細鎵归噺妫€娴婾RL閲嶅畾鍚戯紝杈撳嚭鏍煎紡鍖朇SV
# 鐢ㄦ硶锛?/batch_check_redirect.sh urls.txt

INPUT_FILE="$1"
OUTPUT_FILE="redirect_report_$(date +%Y%m%d_%H%M%S).csv"

if [ -z "$INPUT_FILE" ] || [ ! -f "$INPUT_FILE" ]; then
    echo "鐢ㄦ硶: $0 "
    echo "urls.txt 姣忚涓€涓猆RL"
    exit 1
fi

# 鍐欏叆CSV琛ㄥご
echo "搴忓彿,鍒濆URL,鏈€缁圲RL,璺宠浆娆℃暟,鏈€缁堢姸鎬佺爜,鏄惁璺宠浆,妫€娴嬫椂闂? > "$OUTPUT_FILE"

counter=0
while IFS= read -r url || [ -n "$url" ]; do
    # 璺宠繃绌鸿鍜屾敞閲婅
    [[ -z "$url" || "$url" =~ ^# ]] && continue
    
    ((counter++))
    
    # 鐢╟url妫€娴嬶紝-L 璺熼殢閲嶅畾鍚?    # -w 杈撳嚭閲嶅畾鍚戝彉閲忥紝鐢═ab鍒嗛殧鏂逛究鍚庣画澶勭悊
    RESPONSE=$(curl -L --max-redirs 10 -s -o /dev/null \
        -w "%{url_effective}\t%{num_redirects}\t%{http_code}" \
        "$url" 2>/dev/null)
    
    # 瑙f瀽缁撴灉
    FINAL_URL=$(echo "$RESPONSE" | cut -f1)
    NUM_REDIRECTS=$(echo "$RESPONSE" | cut -f2)
    HTTP_CODE=$(echo "$RESPONSE" | cut -f3)
    
    # 鍒ゆ柇鏄惁鍙戠敓浜嗚烦杞?    if [ "$NUM_REDIRECTS" -gt 0 ]; then
        IS_REDIRECT="鏄?
    else
        IS_REDIRECT="鍚?
    fi
    
    # 鑾峰彇褰撳墠鏃堕棿
    CHECK_TIME=$(date "+%Y-%m-%d %H:%M:%S")
    
    # 鍐欏叆CSV锛圲RL鐢ㄥ弻寮曞彿鍖呰9锛岄槻姝㈤€楀彿闂锛?    echo "\"$counter\",\"$url\",\"$FINAL_URL\",\"$NUM_REDIRECTS\",\"$HTTP_CODE\",\"$IS_REDIRECT\",\"$CHECK_TIME\"" >> "$OUTPUT_FILE"
    
    # 杩涘害鎻愮ず
    echo "[$counter] $url -> $FINAL_URL (鐘舵€佺爜: $HTTP_CODE, 璺宠浆娆℃暟: $NUM_REDIRECTS)"
    
    # 閬垮厤璇锋眰杩囧揩琚皝锛屾瘡娆℃娴嬪悗sleep 1绉?    sleep 1
    
done < "$INPUT_FILE"

echo ""
echo "========================================"
echo "鎵归噺妫€娴嬪畬鎴愶紒"
echo "鍏辨娴?$counter 涓猆RL"
echo "缁撴灉宸蹭繚瀛樺埌: $OUTPUT_FILE"
echo "========================================"
浣跨敤杩欎釜鑴氭湰闇€瑕佸厛鍑嗗涓€涓猔urls.txt`鏂囦欢锛屾瘡琛屼竴涓猆RL锛?

https://www.example.com
https://blog.example.com
https://shop.example.com
https://example.com/old-page
## 鑴氭湰涓夛細涓撲笟鐗堚€斺€斿苟琛屾娴?JSON涓棿鏍煎紡+CSV鏍煎紡鍖? 濡傛灉浣犺妫€娴嬬殑URL鏁伴噺寰堝ぇ锛堟瘮濡傚嚑鐧句笂鍗冧釜锛夛紝涓茶妫€娴嬩細闈炲父鎱€傝繖涓増鏈紩鍏ュ苟琛屾娴嬶紝骞朵笖鍏堢敤JSON鏍煎紡瀛樺偍涓棿缁撴灉锛屾渶鍚庡啀缁熶竴杞崲鎴怌SV锛?
#!/bin/bash
# 涓撲笟鐗堬細骞惰鎵归噺妫€娴嬮噸瀹氬悜锛孞SON涓棿鏍煎紡锛屾渶鍚庤浆CSV
# 鐢ㄦ硶锛?/pro_batch_check.sh urls.txt [骞惰鏁癩

INPUT_FILE="$1"
PARALLEL="${2:-5}"  # 榛樿骞惰5涓?TEMP_DIR=$(mktemp -d)
JSON_FILE="$TEMP_DIR/results.json"
CSV_FILE="redirect_pro_$(date +%Y%m%d_%H%M%S).csv"

if [ -z "$INPUT_FILE" ] || [ ! -f "$INPUT_FILE" ]; then
    echo "鐢ㄦ硶: $0  [骞惰鏁癩"
    exit 1
fi

echo "寮€濮嬫壒閲忔娴嬶紝骞惰鏁? $PARALLEL"
echo "涓存椂鐩綍: $TEMP_DIR"

# 璁℃暟鍣?counter=0
job_count=0

# 閫愪釜鎻愪氦curl妫€娴嬩换鍔★紙鍚庡彴骞惰鎵ц锛?while IFS= read -r url || [ -n "$url" ]; do
    [[ -z "$url" || "$url" =~ ^# ]] && continue
    
    ((counter++))
    ((job_count++))
    
    # 鍚庡彴鎵цcurl妫€娴?    {
        RESULT=$(curl -L --max-redirs 10 -s -o /dev/null \
            -w "%{url_effective}%{num_redirects}%{http_code}" \
            "$url" 2>/dev/null)
        
        FINAL_URL=$(echo "$RESULT"  cut -d'' -f1)
        NUM_REDIRECTS=$(echo "$RESULT"  cut -d'' -f2)
        HTTP_CODE=$(echo "$RESULT"  cut -d'' -f3)
        CHECK_TIME=$(date "+%Y-%m-%d %H:%M:%S")
        
        # 杈撳嚭缁撴灉鍒颁复鏃舵枃浠讹紙鐢▅鍒嗛殧锛岄伩鍏岰SV杞箟闂锛?        echo "$counter$url|$FINAL_URL|$NUM_REDIRECTS|$HTTP_CODE$CHECK_TIME" > "$TEMP_DIR/result_$counter.txt"
    } &
    
    # 鎺у埗骞惰鏁?    if [ $job_count -ge $PARALLEL ]; then
        wait
        job_count=0
    fi
    
done < "$INPUT_FILE"

# 绛夊緟鎵€鏈夊悗鍙颁换鍔″畬鎴?wait

# 鐢熸垚CSV鏂囦欢
echo "搴忓彿,鍒濆URL,鏈€缁圲RL,璺宠浆娆℃暟,鏈€缁堢姸鎬佺爜,妫€娴嬫椂闂? > "$CSV_FILE"

for f in $(ls "$TEMP_DIR"/result_*.txt 2>/dev/null | sort -t_ -k2 -n); do
    line=$(cat "$f")
    counter=$(echo "$line"  cut -d'' -f1)
    url=$(echo "$line"  cut -d'' -f2)
    final_url=$(echo "$line"  cut -d'' -f3)
    num_redirects=$(echo "$line"  cut -d'' -f4)
    http_code=$(echo "$line"  cut -d'' -f5)
    check_time=$(echo "$line"  cut -d'' -f6)
    
    echo "\"$counter\",\"$url\",\"$final_url\",\"$num_redirects\",\"$http_code\",\"$check_time\"" >> "$CSV_FILE"
done

# 娓呯悊涓存椂鐩綍
rm -rf "$TEMP_DIR"

echo ""
echo "========================================"
echo "骞惰鎵归噺妫€娴嬪畬鎴愶紒"
echo "鍏辨娴?$counter 涓猆RL"
echo "缁撴灉宸蹭繚瀛樺埌: $CSV_FILE"
echo "========================================"
杩欎釜鐗堟湰鐨勬牳蹇冩敼杩涳細 1. **骞惰妫€娴?*锛氶€氳繃鍚庡彴杩涚▼瀹炵幇骞惰锛屽ぇ骞呮彁鍗囨娴嬮€熷害 2. 涓棿鏍煎紡锛氬厛鐢╜|`鍒嗛殧鐨勪复鏃舵枃浠跺瓨鍌ㄧ粨鏋滐紝閬垮厤鐩存帴鍦ㄥ悗鍙拌繘绋嬮噷鍐機SV閫犳垚鐨勬枃浠剁珵浜夐棶棰?3. **鐏垫椿鎺у埗骞惰鏁?*锛氱浜屼釜鍙傛暟鍙互鎸囧畾骞惰鏁帮紝鏍规嵁鐩爣鏈嶅姟鍣ㄧ殑鎵垮彈鑳藉姏璋冩暣 ## 鐢≒owerShell瀹炵幇Windows鐗堟湰 濡傛灉浣犲湪Windows鐜涓嬪伐浣滐紝鍙互鐢≒owerShell瀹炵幇绫讳技鐨勫姛鑳斤細
# PowerShell鐗堟湰锛氭壒閲忔娴嬮噸瀹氬悜骞惰緭鍑篊SV
# 鐢ㄦ硶锛?\Check-Redirect.ps1 -UrlList urls.txt

param(
    [string]$UrlList = "urls.txt",
    [string]$OutputFile = "redirect_results.csv"
)

if (-not (Test-Path $UrlList)) {
    Write-Host "鏂囦欢涓嶅瓨鍦? $UrlList" -ForegroundColor Red
    exit 1
}

# 鍐欏叆CSV琛ㄥご
"搴忓彿,鍒濆URL,鏈€缁圲RL,璺宠浆娆℃暟,鏈€缁堢姸鎬佺爜,妫€娴嬫椂闂? | Out-File -FilePath $OutputFile -Encoding UTF8

$counter = 0
Get-Content $UrlList  Where-Object { $_ -match '^https?://' }  ForEach-Object {
    $url = $_
    $counter++
    
    try {
        # 浣跨敤Invoke-WebRequest璺熼殢閲嶅畾鍚?        $response = Invoke-WebRequest -Uri $url -MaximumRedirection 10 -ErrorAction Stop
        
        $finalUrl = $response.BaseResponse.ResponseUri.AbsoluteUri
        $statusCode = $response.StatusCode
        $numRedirects = ($response.RelationLinks.Count)  # PowerShell涓嶇洿鎺ユ彁渚涜烦杞鏁?        
        $checkTime = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
        
        # 鍐欏叆CSV
        "`"$counter`",`"$url`",`"$finalUrl`",`"$numRedirects`",`"$statusCode`",`"$checkTime`"" | Out-File -FilePath $OutputFile -Encoding UTF8 -Append
        
        Write-Host "[$counter] $url -> $finalUrl (鐘舵€佺爜: $statusCode)" -ForegroundColor Green
    }
    catch {
        Write-Host "[$counter] $url 妫€娴嬪け璐? $_" -ForegroundColor Red
        "`"$counter`",`"$url`",`"妫€娴嬪け璐",`"`",`"閿欒`",`"$(Get-Date -Format 'yyyy-MM-dd HH:mm:ss')`"" | Out-File -FilePath $OutputFile -Encoding UTF8 -Append
    }
    
    Start-Sleep -Milliseconds 500
}

Write-Host "妫€娴嬪畬鎴愶紝鍏?$counter 涓猆RL锛岀粨鏋滀繚瀛樺湪 $OutputFile" -ForegroundColor Cyan
娉ㄦ剰锛歅owerShell鐨刞Invoke-WebRequest`鍜宑url鍦ㄩ噸瀹氬悜澶勭悊涓婃湁浜涘樊寮傘€俙Invoke-WebRequest`浼氳嚜鍔ㄨ窡闅忛噸瀹氬悜锛屼絾涓嶅儚curl閭f牱鐩存帴鎻愪緵`num_redirects`杩欐牱鐨勫彉閲忋€傚鏋滈渶瑕佺簿纭幏鍙栬烦杞鏁帮紝寤鸿鍦╓indows涓婂畨瑁匞NU curl銆? ## CSV鏍煎紡鍖栫殑鏈€浣冲疄璺? 杈撳嚭CSV鏃讹紝鏈夊嚑涓潙闇€瑕佹敞鎰忥細 ### 1. 瀛楁涓寘鍚€楀彿鎬庝箞鍔烇紵 濡傛灉URL鎴栧叾浠栧瓧娈典腑鍖呭惈閫楀彿锛屽繀椤荤敤鍙屽紩鍙锋妸鏁翠釜瀛楁鍖呰9璧锋潵锛?
# 閿欒绀鸿寖锛圲RL涓湁閫楀彿浼氱牬鍧廋SV缁撴瀯锛?echo "$url,$final_url,$code" >> output.csv

# 姝g‘绀鸿寖锛堢敤鍙屽紩鍙峰寘瑁瑰瓧娈碉級
echo "\"$url\",\"$final_url\",\"$code\"" >> output.csv
### 2. 瀛楁涓寘鍚弻寮曞彿鎬庝箞鍔烇紵 濡傛灉瀛楁鍐呭鏈韩鍖呭惈鍙屽紩鍙凤紝闇€瑕佹妸鍙屽紩鍙疯浆涔夋垚涓や釜鍙屽紩鍙凤紙CSV鏍囧噯锛夛細
# 濡傛灉URL涓寘鍚弻寮曞彿锛堣櫧鐒舵瀬灏戣锛?url=$(echo "$url" | sed 's/"/""/g')
### 3. 鐢‥xcel鎵撳紑涓枃CSV涔辩爜鎬庝箞鍔烇紵 Windows涓嬬殑Excel榛樿浣跨敤GBK缂栫爜鎵撳紑CSV锛岃€屾垜浠殑鑴氭湰鐢熸垚鐨凜SV鏄疷TF-8缂栫爜鐨勶紝鎵€浠ヤ細涔辩爜銆? 瑙e喅鏂规硶鏄湪CSV鏂囦欢寮€澶村姞涓夿OM锛圔yte Order Mark锛夛細
# 鐢熸垚甯OM鐨刄TF-8 CSV锛圗xcel鍙互姝g‘璇嗗埆锛?echo -ne "\xEF\xBB\xBF搴忓彿,鍒濆URL,鏈€缁圲RL,璺宠浆娆℃暟,鐘舵€佺爜\n" > output.csv
鎴栬€呯敤PowerShell鐢熸垚CSV鏃舵寚瀹氱紪鐮侊細
# PowerShell鎸囧畾UTF-8 with BOM缂栫爜
$data | Export-Csv -Path output.csv -Encoding UTF8
## 鐩稿叧鏂囩珷鎺ㄨ崘 濡傛灉浣犲curl閲嶅畾鍚戞娴嬬殑鍏朵粬鎶€宸ф劅鍏磋叮锛屽彲浠ョ湅鐪嬭繖鍑犵瘒鏂囩珷锛? - [curl鎵归噺妫€娴嬬綉绔欒烦杞鏁拌剼鏈細3涓疄鎴樿剼鏈閲嶅畾鍚戦摼璺棤澶勫彲钘廬(https://www.youres.cn/?id=1492)鈥斺€旀繁鍏ヨ瑙e浣曠敤curl鎵归噺妫€娴嬭烦杞鏁?- [curl -w num_redirects閰嶅悎url_effective杩借釜瀹屾暣璺宠浆閾捐矾锛?涓疄鎴樺満鏅交搴曟悶瀹歖(https://www.youres.cn/?id=1489)鈥斺€旇瑙um_redirects鍜寀rl_effective鐨勭粍鍚堢敤娉?- [curl -w鏍煎紡鍖栬緭鍑洪噸瀹氬悜淇℃伅锛?涓疄鎴樻妧宸ц浣犵簿鍑嗚瘖鏂烦杞摼璺痌(https://www.youres.cn/?id=1449)鈥斺€旂郴缁熻瑙url -w鍙傛暟鐨勬牸寮忓寲杈撳嚭鎶€宸? ## 鎬荤粨 鎶奵url鎵归噺妫€娴嬮噸瀹氬悜鐨勭粨鏋滆緭鍑哄埌CSV锛屾牳蹇冨氨鏄笁姝ワ細 1. 鐢╜curl -L -w`鑾峰彇閲嶅畾鍚戠浉鍏冲彉閲忥紙`url_effective`銆乣num_redirects`銆乣http_code`锛?2. 鐢╜awk`/`cut`/`sed`绛夊伐鍏锋妸缁撴灉鏍煎紡鍖栨垚CSV鐨勪竴琛?3. 澶勭悊濂紺SV鐨勭壒娈婂瓧绗﹁浆涔夊拰缂栫爜闂锛岀‘淇濈敤Excel鎵撳紑姝e父 瀵逛簬灏忚妯℃娴嬶紙鍑犲崄涓猆RL锛夛紝鐢ㄨ繘闃剁増鑴氭湰灏卞浜嗐€傚鏋淯RL鏁伴噺寰堝ぇ锛屽缓璁敤涓撲笟鐗堣剼鏈苟琛屾娴嬶紝鑳借妭鐪佸ぇ閲忔椂闂淬€? 浣犲钩鏃舵槸鎬庝箞鎵归噺妫€娴嬮噸瀹氬悜鐨勶紵鏈夋病鏈夐亣鍒拌繃浠€涔堝潙锛熸杩庡湪璇勮鍖哄垎浜綘鐨勭粡楠屻€? --- *鏈枃浠嬬粛鐨勮剼鏈潎鍦↙inux/macOS鐨刡ash鐜涓嬫祴璇曢€氳繃锛學indows鐢ㄦ埛鍙互浣跨敤WSL鎴栬€呭畨瑁匞NU curl鍚庝娇鐢ㄣ€?
版权声明

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

发表评论