本站在大約 2 月份偵測到有 DDoS 攻擊現象,查了一下發現是 WordPress Search 被惡意搜尋攻擊,導致癱瘓整個網站以及 Google 負面收錄影響,這攻擊行為屬於黑帽 SEO 常見的惡意活動,儘管 WordPress Search 本身嚴重缺陷問題,經過不斷修正重覆實驗,在數月觀察後,看到實測結果有成功,才決定分享我的處理方式。
首先我們先看一下 Google Search Console Tools 介面,在網頁索引狀態裡面看一下 遭到 robots.txt 封鎖,就會看到受影響的網頁數不斷累計上來,但它記錄是不會消失。
因為 Google 不支援在 robots.txt 檔案中指定 noindex 規則去做處理,所以不少人是用 robots.txt 規則去建立 noindex 中繼標頭,會給 Google 為網頁建立索引,讓整個網站已全完了…
如何處理呢?
需要調整 robots.txt 規則,先讓 Google 收到不是 robots.txt 封鎖要求,是要讓它收到是 404 狀態,有包含 noindex 回應標頭,就會停止後續動作,等一段時間後,就會直接移除記錄了。
我看了 Google Search Console 說明內《 已建立索引,但遭到 robots.txt 封鎖 》 ,才了解到它的意思是說,從 robots.txt 規則建立封鎖 ?s= 的話,外面只要能連得到 ?s= 的網頁(因為不是 404 標頭回應),Google 就不能阻止惡意搜尋攻擊。
以下為 Google 處理過程方式:
請移除 Disallow 封鎖規則,改成 Allow 僅允許 Google 抓取搜尋結果頁面資料的規則。
請禁用內建搜尋功能,Google 去抓取搜尋結果頁面資料時,會收到是 404 狀態回應。
404 狀態裡有包含 meta name=”robots” content=”noindex” 回應標頭,Google 就不會有任何動作,會從異常網頁移除。
【重要1】千萬不要設定 404 轉向至 301、302 回應,這樣會讓 Google 認為這網頁是存在的問題。
【重要2】但是不可以轉向 403 回應,避免 Google 仍警告為因其他 4xx 問題而遭到封鎖的記錄。
移除大量異常網址
需要移除大量異常網址,在移除網址 介面,提出新要求暫時移除網址,輸入網址後,點選移除含有此前置字元的所有網址,就可以提交。
有關 Google Search Console 說明內《 開頭為特定前置字元的網址 》 ,只要指定 example.com/?s= 時,它就會移除符合開頭為 example.com/?s= 整個網址,不會移除其它頁面的網址。
處理狀態需要一段時間,就會到看到已暫時移除的字眼,代表已經把大量異常網址已移除掉了,但是不代表永久移除,因為它是暫時性封鎖,效力大約會持續 6 個月,若您在 6 個月內時間沒有去處理的話,它還是會恢復,所以這段期間應足夠時間讓您去處理它的問題。
關閉自動爬蟲功能
這第三方功能常見自動爬蟲,用來加速索引速度,像說 Cloudflare 提供網路爬蟲提示的功能,不論是有變更、新增、刪除內容的話,它就會去爬蟲提交索引,建議最好關閉它比較好。
若可以的話,也一併把 Always Online 關閉,因為它會建立備份副本,所以被搜尋結果建立的副本歷史頁面,是無法清除。(可以請求刪除,但只能找 Wayback Machine 請求刪除)
禁用內建搜尋功能
如果網站沒有搜尋需求的話,那麼可以禁用它了,去找 Disable Search 安裝外掛並且啓用它,它是不須設定,直接可使用,只有禁用前台的搜尋功能,不會影響到後台功能。
回到網頁做測試一下,在搜尋隨意輸入,就看到內建搜尋功能已禁用了。
要確定得到 404 Not Found 回應,這樣才算不存在的網頁,但是不可以轉向 403 回應,避免 Google 仍警告為因其他 4xx 問題而遭到封鎖的記錄。
若網站有搜尋需求的話,先禁用內建搜尋功能之後,再用 Google Programmable Search Engine ID 去取代,或是可找 WP Google Search By WebshopLogic 外掛套件去取代也可以 。
加入 robots.txt 規則
由於主機商的設定不同,有兩種方法可以選擇:一是直接在主機內建立 robots.txt 文件並加入規則,二是安裝 Virtual Robots.txt 外掛加入規則。
然後加入規則調整組合對應,要注意的是,我們僅允許 Google 抓取搜尋結果頁面,但禁止其它搜尋引擎索引,這是最容易處理方法。
#僅允許Google抓取搜尋結果頁面
User-agent: Googlebot
Allow: /
Allow: /?s=*
Allow: /*/?s=*\
#禁止惡意攻擊Search
User-agent: PetalBot
User-agent: Baiduspider
User-agent: 360Spider
User-agent: MJ12Bot
User-agent: archive.org_bot
Disallow: /
Disallow: /?s=*
Disallow: /*/?s=*\
#禁止其它搜尋引擎索引
User-agent: *
Disallow: /?s=*
Disallow: /*/?s=*\
提交重新驗證
以上設定完成後,到 Google Search Console Tools 介面,在網頁索引狀態裡面提出重新驗證 要求,驗證作業通常會在兩週內 完成,若網頁數量太多的話,有時可能需要更久,請耐心等候。
驗證完成後,無論成功或失敗,系統都會發送通知,我大約等了快三個月 … 沒看錯!真的好久,看到 訊息,從受影響的網頁數看到異常數量有減少很多,代表是有成功清除異常記錄。 驗證通過
結論
我太晚發現有異常問題,未能及時處理,造成 Google 流量大幅減少,雖然有處理成功,但沒辦法回去原本優質流量了,好不容易把它處理完後,一定得告訴自己,總會碰到各式各樣不同大小的危機,一旦面臨要怎麼做?下一步一步來,找出方法處理的結果,重新再出發就好。