連結擷取器會在本地端剖析貼上的 HTML 原始碼,並回傳一個去重複、每行一個 URL 的連結目標清單,過程中絕不會聯絡所列出的目的地。當你需要一份可供稽核的清單,列出某個已經可以查看的網頁上所有 href,但又不想依賴即時擷取或執行瀏覽器時,靜態原始碼剖析就是正確的做法。這個工具會讀取你所貼上 HTML 中的起始標籤,識別 anchor、area 與 link 元素上的 href 值,將網頁、郵件與電話連結正規化,移除重複項目,並將結果連同透明的計數一起顯示。因為所有處理都在瀏覽器中進行,所以原始 HTML 與產生的目標都會保留在你的裝置上,而且絕不會對任何已發現的目的地發出請求。選用的基底 URL 可以將根相對、路徑相對、父層相對與協定相對的 href 值轉換成絕對網址,因此即使是部分的原始碼片段,行為也會與完整文件相同。在進行法律、安全或遷移稽核時,應將擷取出的清單視為其中一項輸入,搭配瀏覽器的 DOM 匯出與受控的擷取,而不是判定頁面連結的最終依據。

擷取器會讀取哪些內容,又會略過哪些內容
網頁原始碼可能包含幾種不同的承載連結標籤。一般錨點會將使用者導向文件,area 元素為影像地圖新增目標,而 link 元素則參照樣式表、圖示、標準網頁或替代資源。連結擷取器涵蓋這三種,因為它的任務是原始碼盤點;它不會推斷目標屬於導覽、標準、預先載入、樣式表或其他關係,也不會標註內部與外部目的地。
| 元素 | 出現位置 | 常見用途 |
|---|---|---|
| a | 內嵌於 body 與導覽區 | 可點擊連結至文件、片段、mailto 或 tel |
| area | 位於 map 元素內 | 影像地圖上的熱點目標 |
| link | 位於 head 內 | 樣式表、圖示、標準、替代、預先載入 |
在開始掃描之前,工具會先移除註解與常見的原始文字容器,例如 script、style、textarea、title、iframe、noembed 與 noframes。這樣可以避免 JavaScript 或字面文字中那些「看起來像」錨點標記的字串被誤判為連結。範本內容在設計上也會被排除。
過濾步驟是讓計數保持透明的關鍵。空值、同文件片段,以及可執行或內嵌資料的 scheme 都會被略過。具體來說,javascript:、data: 與 vbscript: 目標絕不會被回傳,無效的絕對 URL 也會被捨棄。郵件與電話目標則會保留,因為它們雖然不是網頁,卻是合法的連結目的地。
| 原始碼中看到的值 | 結果中的處理 |
|---|---|
| 空白的 href | 略過 |
| 同文件片段 (#section) | 略過 |
| javascript:、data:、vbscript: | 略過 |
| 無效的絕對 URL | 略過 |
| mailto: 連結 | 保留 |
| tel: 連結 | 保留 |
| 絕對的 http 或 https | 保留並正規化 |
| 具有有效基底的相對 href | 解析為絕對網址 |
| 沒有基底的相對 href | 依原樣保留 |
剖析器也會解碼 href 值中一組有限屬性字元參考:十進位與十六進位數值形式,加上少量的具名參考 amp、quot、apos、lt 與 gt。這涵蓋了常見的 URL 查詢字串跳脫,例如連結目標中的 & 符號。罕見的具名參考則可能保持編碼狀態,這比起靜默套用一個猜測或不完整的全域實體對照表來得更好。
如何從 HTML 原始碼擷取連結
- 複製你有權檢查之網頁的 HTML 原始碼,或透過你自己的擷取程式取得。
- 開啟 連結擷取器,並將原始碼貼到輸入區域。
- 如果原始碼包含相對路徑,請在基底 URL 欄位填入絕對的網頁 URL,讓根相對、路徑相對、父層相對與協定相對的值能正確解析。
- 執行擷取。輸出會顯示每行一個目標,加上唯一、重複與略過的計數。
- 複製清單以供擷取、稽核或審查使用。
- 另外驗證狀態、重新導向、rel 語意,以及在指令碼執行後新增的連結,因為這些事實並不存在於靜態原始碼中。
解讀唯一、重複與略過的計數
這三個計數會告訴你剖析器做了什麼,以及為什麼最終的行數可能低於原始碼中 href 屬性的數量。唯一計數是最終輸出中相異 URL 的數量。重複計數則記錄在正規化後,有多少額外的出現次數被合併到先前的項目中。兩個相同的相對連結若解析為同一個絕對 URL,就會合併為一筆;而追蹤參數或片段的差異仍會被視為兩個相異的 URL,因為去重複是在正規化之後以完全比對的方式進行。
略過計數會反映過濾的決策。一份看似簡短的清單並不會掩蓋空值、片段、可執行 scheme 或無效 URL 被移除的事實。將略過計數與唯一計數並列檢視,是確認擷取結果符合你預期最快的方式。當略過計數很大而唯一計數很小時,通常代表原始碼的某個區段含有 data URI 或 script 區塊,而其內部以引號包住的 href 字串是刻意被忽略的。
使用基底 URL 解析相對 URL
在沒有基底的情況下,工具不會猜測主機:相對值會保持相對,因此輸出永遠不會憑空捏造一個情境。當你提供一個有效的 HTTP 或 HTTPS 基底 URL 時,瀏覽器的 URL 模型會替你解析相對 href。基底 URL 必須使用 HTTP 或 HTTPS,且不得含有認證資訊,這能避免產生誤導的解析情境,並防止使用者資訊被複製到每一筆解析結果中。
| 相對形式 | 意義 | 搭配有效 http(s) 基底時的行為 |
|---|---|---|
| /pricing | 根相對路徑 | 依據基底 URL 的主機解析 |
| guide.html | 路徑相對,與基底位於同一目錄 | 依據基底目錄解析 |
| ../guide | 父層相對 | 依據基底目錄的上一層解析 |
| //cdn.example.com/file.js | 協定相對 | scheme 繼承自基底,主機則取自該值 |
| 任何相對形式,未提供基底 | 相對於原始碼本身 | 原樣保留;工具不會捏造主機 |
產品契約說明了典型案例:在 https://example.com/products/page 下的 /pricing 會變成 https://example.com/pricing。其他形式遵循同一套瀏覽器 URL 模型,這也是為什麼提供絕對的網頁 URL 作為基底,是讓部分片段與完整文件保持一致最簡潔的方式。
輸出清單的適用位置
一份去重複的連結清單是許多 SEO 與內容工作流程的有用起點。你可以將它送入擷取程式以檢查狀態碼與重新導向,與你的 XML 網站地圖比對以找出未預期的目的地,或在審查多區域頁面的標準與 hreflang 宣告時,將它當作參考清單使用。對於一次聚焦的 SEO 稽核,標準流程是先擷取、再去重複、檢查相對路徑解析,最後將 URL 丟給真正的擷取程式以驗證狀態、重新導向與 rel 值;該流程的實作示範請見 從網頁原始碼擷取所有 URL 以進行 SEO 稽核。
同一份清單也兼具快速內容盤點的用途。指向站外資源的錨點、聯絡頁面的 mailto 與 tel 連結,以及樣式表和標準網頁的 link 元素,都能一起檢視,因為剖析器保留了所有合法的目標。將唯一計數與略過計數並列檢視,能告訴你哪些目的地是有意存在的,哪些是工具刻意排除的。
在信賴輸出之前值得了解的限制
連結擷取器是一個原始碼剖析器,而非完整的瀏覽器 HTML 樹建構器。嚴重格式錯誤的標記、不常見的未加引號屬性、缺少的原始文字結束標籤,或瀏覽器的錯誤復原,都可能讓產生的 DOM 與這個有限範圍的掃描結果不同,介面上也已說明此限制。對於任何涉及索引、遷移或合規的決策,請比較原始來源、瀏覽器 DOM 匯出以及真正的擷取結果,而不是只信任單一擷取管道。
三項運作上的限制決定了單次貼上能處理的內容。輸入上限為 200,000 字元,以維持互動式掃描在合理範圍內,因此非常巨大的文件應予以分割,或交由受控的擷取程式處理。由於跨來源請求經常會被封鎖,而且靜默地聯絡被貼上的連結會衍生隱私與安全性問題,因此工具無法擷取遠端 URL;請從你有權檢查的網頁複製原始碼,或透過你自己的擷取程式取得 HTML。在指令碼執行後才動態插入的連結不會存在於靜態原始碼中,因此也不會在這裡被找到。
最後,輸出是一份盤點清單,而非健檢報告。清單上的目標可能會重新導向、回傳錯誤、需要驗證、受到 robots 規則封鎖,或是刻意指向站外。擷取器不會標註內部與外部連結、不會測試 HTTP 狀態、不會評估 rel 屬性,也不會判定 SEO 品質。如果這些事實對你的稽核很重要,請使用經授權的工具來審查並擷取這些 URL。
想進一步了解,請參閱 大型文字的 SERP 摘要預覽:計數與截斷。