
-Image from ahrefs.com
Ahrefs Site Explorer 顯示 403 Forbidden 錯誤、Site Audit 顯示 “Robots.txt is not accessible”,該怎麼解決?本篇紀錄除錯過程,也希望可以幫助到面臨同樣問題的朋友。
從 4 月底左右發現 Ahrefs Site Audit 開始顯示錯誤、Health Scaore 越來越低,以及 SIte Explorer 一直有 403 error 的提示。當時並沒有太在意,但接下來每隔一週一直收到 Ahrefs Site Audit 寄信通知爬取失敗,以及0分的網站數據,就下定決心來研究怎麼處理。


先說答案:和主機伺服器有關。
Ahrefs 官方文件解釋
由於 SIte Audit 無法成功爬取網站是因為爬蟲受到阻擋,因此我先查找關於 Site Audit 的相關文件。
而在 Troubleshooting common issues with Site Audit access 這篇文章中的 Robots.txt rules disallow crawl 有寫到可以透過他們的 Robot Checker 來確認網站有沒有 block 到 Ahrefs 的爬蟲。

實測之後如下,我的網站並沒有阻擋 AhrefsBot 來爬:


後續我認真看,發現顯示的錯誤是 “Robots.txt is not accessible”。而在 Why and how to fix 中寫說:”Check that you do not have a firewall or plugin blocking bots; and if you do, to whitelist our AhrefsSiteAudit user-agent on that system. Please also add our IPs to the server’s whitelist.”
意思是說:檢查是否防火牆或是外掛有阻擋到 AhrefsBot,如果有的話請將 AhrefsSiteAudit user-agent 和 IPs 加入白名單。

但是我本身是使用 WordPress 架站,一直以來我並沒有設定什麼防火牆,或是裝什麼相關的外掛來阻擋 AhrefsBot,甚至從之前假站好後到現在基本上都沒有更改過設定及新增相關的插件,因此我並不考慮是因為這個部分的原因所導致。
不過因為它提到了「防火牆」,讓我想到了 ”Cloudflare”。
Ahrefs 403 錯誤和 Cloudflare 有關係嗎?
將關鍵字「Ahrefs 403 Cloudflare」查詢,出現了非常多相關的資訊,這就更讓我確認這個問題與 Cloudflare 有關。原來這個問題從 2020 就有人詢問過這個問題,但是到現在都沒有看到有人說已經獲得解決,最後論壇的討論都不了了之。
在經過參考網友的做法以及 ChatGPT 的建議,由於 Cloudflare 的防火牆 (WAF) 可能會把來自 AhrefsBot 當成可疑流量擋下來,因此需要調整「WAF」和「Bot Fight Mode 設定」。
由於我認為 “關閉 Bot Fight Mode” 不是一個好方法,畢竟我只是想要讓 AhrefsBot 可以爬取我的網站,而網站該有的防護還是要有,因此一開始我並沒有將其功能關閉,所以決定先調整 WAF – Custom Rules 的設定。
調整 WAF – Custom Rules
由於 Cloudflare 會把 AhrefsBot 阻擋下來,因此我們需要設定例外條件讓 Cloudflare 對 AhrefsBot 開放。而前面有提到,Ahrefs 建議 “AhrefsSiteAudit user-agent 和 IPs 加入白名單”,因此我們在建立特例的條件之前,會需要先將 Ahrefs IPs 提供給 Cloudflare。
操作步驟如下:
建立 Custom Lists
*因為在條件設定中一條一條 IP 設定條件太慢,所以需要先設定好 Custom Lists,到時候直接將這個 List 帶入條件即可。

*Description 寫不寫都可以

*從 Ahrefs 提供的 IPs 範圍做成 .csv 後上傳 (下方檔案可直接下載)
*此 .csv 為 2025年05月製作,正確的 List 請依照 Ahrefs 官方提供為主


*Cloudflare 免費版只能建立一個 List

完成 Ahrefs IP List 的設定後,就可以進行下一步!
建立 WAF – Custom Rules

*根據設定 User Agent 和 IP 的範圍設立白名單





WAF – Custom Rules 測試結果
結果是失敗的。在論壇上也有人分享透過設定 WAF 讓 Cloudflare Skip 掉特定的條件並沒有幫助,實測過後還真的是。所以接下來我想降低 Cloudflare 的防禦功能或許有幫助。
關閉 Block AI Scrapers and Crawlers rule
從 WAF – Custom Rules 的設定中,發現系統有建立一個 “Block AI Scrapers and Crawlers rule”,主要是根據系統內建的 List 去封鎖掉特定的 AI Crawler。
雖然我的 Ahrefs Whitelist Rule 順序在前,但不確定是否有受到影響,因此我將這條 Rule 直接關掉,測試這個功能是否會阻擋 AhrefsBot。

細看這個規則會發現它是指:如果這是 Cloudflare 認可的機器人,且它屬於「AI Crawler」類別,那就封鎖它。

延伸到 Cloudflare Verified Bots List,其中搜尋 Ahrefs,發現被歸類的類別是 “Search Engine Optimization” 並不是 “AI Crawler”,因此 AhrefBot 不會因為這條 rule 就被阻擋。

關閉 Block AI Scrapers and Crawlers rule 測試結果
沒有意外是失敗的,因為本身就不會阻擋。接下來繼續降低 Cloudflare 的防禦功能。
關閉 Bot Fight Mode
直接將所有有關 Bot 的限制都關掉做測試。

關閉 Bot Fight Mode 測試結果
依舊爬取失敗。
用到這個步驟其實已經不知道可以怎麼做了,因為基本上 Cloudflare 阻擋的設定我都關閉了。之後透過朋友提醒,可以去查看 Cloudflare 的 Log 來確認被阻擋的情況。
檢查 Events
由於在當天早上 10 點以及下午3點和4點的時候,Ahrefs 都有進行爬取,雖然爬取未成功,但應該要有被阻擋的紀錄才對,但一看紀錄發現,根本沒有被阻擋的紀錄,不僅時間不對,展開來的 Bot 也不是來自 Ahrefs。

所以 “Robots.txt is not accessible” 根本與 Cloudflare 完全無關嗎?
Ahrefs 403 錯誤和網站主機有關係嗎?
設想 AhrefsBot 的路徑,當它要爬取我網站資料時時,會先經過 Cloudflare 防火牆同意,通過 Cloudflare 後就會將要求傳送至網站主機,而主機的防火牆就會判斷是否要回傳資料。所以如果不是 Cloudflare 的問題,那原因很有可能出在「網站主機」了。
請網站主機商將 Ahrefs IPs 加入白名單
我直接詢問客服有關於 AhrefsBot 無法爬取網站,並請他們協助。主要告知是 403 錯誤以及提供 Ahrefs IPs 的資料給 Scalahosting。

大約收到 ticket 後的五分鐘,對方就回覆已經將白名單加好了!不得不稱讚 Scalahosting 的效率是 200%!每次詢問客服的結果都讓我很滿意!

加入白名單後測試結果
爬取成功!

因此這件事情的解決方法是請你的主機商將 Ahrefs 的 IPs 加入白名單就可以了。
後記 1-AhrefsBot 是否會先經過 Cloudflare?
為了確認 AhrefsBot 是否會先通過 Cloudflare,我在 WAF – Custom Rules 中設定阻擋 AhrefsBot 的規則,作法就是把原本的 Skip 改成 Block,其餘相同。
最後顯示是被擋下來的,可以在 Events 中看到被擋下。Rule 的部分就是我設定的 Custom Rule。

所以這次的情況來看,AhrefsBot 會先經過 Cloudflare,但基本的防火牆設定並不會阻擋 AhrefsBot 的爬取。
補充


6/3 補充:5/29 處理完 AhrefsBot 爬取失敗問題,6/1 Site Explorer 來爬取成功,403 的標示已消失

可以從 Best by Links 可以看到 Site Explorer 最近一次來爬取 (Last Crawled) 的時間。


心得
這次問題獲得解決後真的很有成就感!從一開始尋找資料到後續詢問主機商的過程都讓我越來越了解 Ahrefs 和 Cloudflare 與我網站的關聯,不在只是單單串接他們,而是更加理解它們的運作。
希望可以幫助到有相同問題的朋友!
歡迎透過文章下留言或是 Email 的方式告訴我你的想法喔!:)