要從頁面原始碼中擷取所有 URL,意味著掃描您從瀏覽器的「檢視原始碼」動作複製而來的 HTML 標記,並從 a、area 和 link 起始標籤中抽出每個 href 值,整合成一份單一的扁平清單。其結果是該原始檔案中所有連結目標的去重複清單,並非即時的網路報告,也非完成的 SEO 評分。連結擷取器可在瀏覽器中本機執行此作業:貼上 HTML,選擇性地提供頁面 URL 以便將相對路徑解析為絕對位址,然後複製去重複後的輸出。此工具絕不會對任何已發現的目標發出請求,這使得該作業對您有權檢查的頁面保持安全。在此階段不會評估 JavaScript 注入的連結、HTTP 狀態碼、重新導向鏈、canonical 意圖,以及 rel 屬性的意義。去重複作業在標準化後為精確比對,解析器會解碼數值型及一組小型的具名字元參照,輸出格式為每行一個 URL 並附上透明的計數。請將這份清單視為一份起始清單,在信任其作為導覽訊號之前,需要另行驗證。

頁面原始碼是伺服器所傳送的原始 HTML,在腳本執行之前、在瀏覽器將其改寫為即時 DOM 之前。當您搜尋「從頁面原始碼擷取所有 URL」時,這個區別至關重要,因為答案取決於您實際擁有的是哪個版本的頁面。若您的原始碼來自一個 JavaScript 驅動的單頁應用程式,您將只能看到伺服器所傳送的 a、area 和 link 標籤。任何在框架轉譯後才插入的連結都不存在於靜態原始碼中,因而也不會出現在清單中。

extract all urls from page source
從頁面原始碼擷取所有 URL 以進行 SEO 稽核

原始碼解析與瀏覽器爬取有何不同

連結清單與爬蟲報告在本質上有所不同,即使兩者都回答「頁面連結到哪些 URL」這個類似的問題。連結擷取器作為一個有界限的原始碼解析器運作。它會先移除註解以及 script、style、textarea、title、iframe、noembed 和 noframes 等原始文字容器,接著掃描起始標籤,然後比對 a、area 和 link 元素上的 href 屬性。它不會執行腳本、不會轉譯框架,也不會開啟網路連線。

相較之下,真正的瀏覽器爬蟲會透過 HTTP 或 HTTPS 擷取文件、建立 DOM、執行 JavaScript、等待延遲請求,然後在所有作業完成後列舉已解析的連結。兩種方法皆可能有效,但它們回答的是不同的問題。原始碼解析器告訴您 HTML 實際上包含哪些內容;爬蟲則告訴您使用者實際上會看到並點擊哪些內容。就 SEO 稽核而言,您通常兩種檢視結果都會需要,而且在得出結論之前,您應該先確認自己看的是哪一種。

原始碼解析器清單瀏覽器爬蟲報告
僅讀取您貼上的 HTML透過 HTTP 或 HTTPS 擷取 URL
掃描 a、area 和 link 起始標籤走訪已轉譯的 DOM,包含腳本
依據選用的基底解析相對 href使用即時頁面 URL 作為解析內容
略過可執行的協定與空值追蹤每個可導覽的目標
回報唯一、重複與略過的計數回報狀態碼、重新導向與時間
不對已發現的目標發出網路請求對每個已發現的目標發出請求

如何從頁面原始碼擷取所有 URL

  1. 開啟您有權檢查的頁面,然後使用瀏覽器的「檢視原始碼」或「另存頁面」動作複製原始 HTML。請避免使用「Elements」面板中的即時 DOM,因為該檢視反映了腳本驅動的編輯,而這些是解析器不會看到的。
  2. 前往連結擷取器,將 HTML 貼入來源欄位。解析器每次掃描最多可處理 200,000 個字元,因此對於非常大的文件請加以分割,或使用您自己可控管的爬蟲來處理完整封存。
  3. 若頁面包含如 /pricing 或 ../guide 等相對路徑,請將該頁面的絕對 HTTP 或 HTTPS URL 輸入基底欄位。基底必須使用 http 或 https,且不得包含認證資訊。
  4. 執行擷取。輸出面板會顯示一份去重複、每行一個 URL 的清單,並附上唯一、重複與略過的計數。
  5. 將結果複製到試算表、可控管的爬蟲或網站地圖產生器中。請將每一行視為一份清單項目,在信任其作為導覽訊號之前,需要另行驗證。

重複計數本身即具有參考價值。兩個解析為同一絕對 URL 的相同相對連結會合併為單一項目,因此重複數字會告訴您解析器看到了多少個錨點但已將其移除。略過計數則會告訴您解析器丟棄了多少個空值、僅含片段的參照、javascript: 與 data: 目標,以及無效的絕對 URL。一份看似偏短的清單很少代表擷取功能損壞;它通常代表的是保守的篩選機制,而解析器會將該決策攤開來,而不是將其隱藏。

解析器保留與略過哪些目標

此工具刻意僅讀取三種起始標籤。一般的 a 錨點指向文件,area 元素在影像地圖中加入目標,而 link 元素則參照樣式表、圖示、canonical 頁面與替代資源。對於原始碼清單而言,同時納入這三者是正確的選擇,因為目標在於了解標記包含哪些內容,而不是猜測哪些關聯性才重要。解析器不會將任何目標標記為導覽、canonical、preload 或 stylesheet。您需依據元素類型及其周邊內容自行判斷。

部分目標會被刻意略過。空的 href 值、同文件片段 (例如 #section) 以及可執行或內嵌資料的協定 (javascript、data、vbscript) 永遠不會被回傳。無效的絕對 URL 也會被一併丟棄。郵件 (mailto) 與電話 (tel) 目標則會被保留,因為它們雖非網頁,但仍是合法的連結目標。若某個連結看似未出現在輸出中,請先檢查略過計數。

目標形式結果
絕對的 http 或 https URL標準化並列出
根目錄相對路徑 (例如 /pricing)有提供基底時,據以解析
路徑相對路徑 (例如 ./guide)有提供基底時,據以解析
上層相對路徑 (例如 ../guide)有提供基底時,據以解析
協定相對路徑 (例如 //cdn.example.com/x)有提供基底時,據以解析
mailto: 或 tel: 目標作為合法目標予以保留
同文件片段 #x略過
空白的 href 值略過
javascript:、data:、vbscript:基於安全性而略過
無效的絕對 URL略過

舉例而言,在基底 URL https://example.com/products/page 之下,相對 href /pricing 會在輸出中解析為 https://example.com/pricing。若未提供基底,則同一個 href 會保持為 /pricing,因此解析器絕不會自行捏造主機名稱。

字元參照如何解碼

真實的 HTML 中的 href 值不一定會直接包含 & 符號或帶有腔調的字元。連結擷取器會解碼十進位字元參照 (例如 &) 與十六進位字元參照 (例如 &),接著套用一組涵蓋 amp、quot、apos、lt 與 gt 的小型具名集合。整體而言,這涵蓋了大多數頁面使用的 URL 查詢字串跳脫,包括追蹤參數中極為常見的 & 序列。

任何超出該集合的內容都會維持編碼狀態。解析器刻意不作為一份完整的 HTML 具名字元資料表,因為一個猜測或不完整的全域實體表可能會在無聲中將看似標記的文字改寫為非預期的內容。若輸出中殘留了罕見的具名參照,請將其編碼形式視為真實的來源值,而不是瑕疵;若您的爬蟲需要已解析的形式,請於後續流程中加以驗證。

將 URL 清單作為 SEO 稽核的起點

一旦取得清單,工作焦點便從擷取轉為審查。這份清單刻意保持原始樣貌:它不會標示內部與外部目標、不會評估 rel 屬性,也不會測試 HTTP 狀態。對於遷移、內容稽核或反向連結掃描而言,這份未經修飾的清單往往正是您所需要的。您可以將其排序、篩選,並餵入負責下一個步驟的另一個工具。

舉例而言,在剔除明顯的重複項目與站外目標之後,經過清理的清單很適合作為一份符合標準的 XML 網站地圖的候選內容。該轉換步驟會將清單轉化為搜尋引擎可接受的格式。連結擷取器負責來源探索階段,網站地圖產生器負責發布階段,而真正的爬蟲則負責驗證階段。這些工具彼此並無法互相取代。

讀取頁面原始碼的限制與陷阱

原始碼解析器在設計上傾向保守,這會產生若干可預見的盲點。首先,去重複作業在標準化後採精確比對:因追蹤參數、片段、區分大小寫的路徑或重新導向行為而有所差異的 URL,會被視為不同的資源,因為解析器無法從原始碼本身判斷它們是否指向同一個目的地。兩個解析為同一絕對 URL 的相同相對連結會合併為單一項目,但僅僅是「看起來相似」的 URL 並不會被合併。

其次,嚴重畸形化的標記、不尋常的未加引號屬性、遺失的原始文字結束標籤,或瀏覽器的錯誤復原機制,都可能產生與有界限掃描不同的 DOM。解析器並非完整的 HTML 樹狀建構器,且介面本身即載明此一限制。對於任何必須經得起檢驗的稽核工作,請交叉比對原始來源、瀏覽器 DOM 匯出與真正的爬蟲結果,而不是只依賴單一的擷取管道。

最後,解析器無法擷取遠端 URL。任意的跨來源請求通常會遭到封鎖,而在無聲中聯絡被貼上的連結將會衍生隱私與安全性問題。請從您有權檢查的頁面複製頁面原始碼,或透過您自己可控管的爬蟲取得 HTML。腳本執行後才插入的動態連結並不存在於靜態原始碼中,因而在此無法被找到。

取得清單後的下一步

這份清單是稽核的起點,而非終點。請使用具備權限、可檢查 HTTP 狀態、重新導向鏈、認證需求、robots 規則,以及 rel 屬性 (例如 nofollow、sponsored、ugc) 含義的工具,逐一驗證每個目標。請以這份清單驅動您的提問,再交由爬蟲來回答。

對於大型或重複性的作業,請將這份清單與一台遵守 robots.txt 與您自身認證邊界的可控管爬蟲搭配使用。請將連結擷取器視為來源探索階段,將網站地圖產生器視為發布階段,將爬蟲視為驗證階段。三個各司其職的小工具,通常會勝過一個試圖包辦一切、最終卻一事無成的大型工具。