許多網站長期被垃圾留言、假帳號註冊與大量垃圾郵件困擾,背後的元兇通常就是「垃圾訊息機器人(Spam Bot)」。這些自動化程式會 24 小時不斷掃描網際網路,尋找可被利用的表單、留言板、會員登入頁面與聯絡欄位,反覆送出垃圾內容、竊取 Email 地址、甚至劫持帳戶散播惡意連結。在 AI 搜尋時代,當 ChatGPT、Perplexity、Google AI Overviews 都會抓取網站內容作為回答來源時,一個被垃圾留言塞滿的網站,不只影響使用體驗,更會讓 AI 搜尋引擎判定為低品質來源。本文適合網站管理員、行銷人員、台灣中小企業主閱讀,完整說明垃圾訊息機器人的運作方式、6 大常見攻擊行為、以及 7 招實務防護策略(驗證碼、會員登入、CMS 更新、Email 隱藏、日誌監控、robots.txt 設定、常見錯誤排雷)。
一、什麼是垃圾訊息機器人(Spam Bot)?
垃圾訊息機器人(Spam Bot)是一種自動化的惡意程式,主要功能是在網際網路上大規模抓取可利用的網站漏洞,然後透過這些漏洞發送垃圾內容、竊取資料或散布惡意連結。它們不需要真人操作,可以同時對數千個網站執行相同的攻擊行為,而且會定期回訪測試新的弱點。維基百科繁中條目正式名稱即為「垃圾訊息機器人」,涵蓋範圍不只 Email,還包括留言板、社群平台、表單、評論區等所有可被自動化濫用的訊息通道。
垃圾訊息機器人並不是針對單一網站,而是用「廣撒網」的方式掃描整個網路,只要您的網站存在弱點,就有可能成為它的攻擊對象。
機器人的運作方式
一隻典型的垃圾訊息機器人運作流程通常是:掃描網站 → 找到可利用的表單或登入頁 → 自動填入垃圾內容 → 重複提交。整個過程不需要任何人介入,且可以 24 小時不間斷執行。根據國際資安研究機構 Imperva 的 Bad Bot Report,近年全球網路流量中超過 30% 是惡意機器人流量,垃圾訊息機器人是其中最大宗的類別之一。
為什麼台灣中小企業特別容易被鎖定?
台灣中小企業的網站常使用 WordPress、Joomla 等開源 CMS,但更新頻率較低、外掛版本舊、又沒有專人維護,因此成為垃圾訊息機器人最愛攻擊的對象。許多企業主直到信箱被假諮詢塞爆,或網站被 Google 標示為「可能含有惡意內容」時才驚覺問題的嚴重性。
二、垃圾訊息機器人的常見行為
了解垃圾訊息機器人的行為模式,是制定防護策略的第一步。以下是目前最常見的六種垃圾訊息機器人攻擊行為:
-
偽造會員帳戶
自動填寫註冊表單建立大量假帳號,用來在站內發垃圾文、按讚刷量、或測試其他系統漏洞。這類假帳號的 Email 通常是隨機字串或一次性信箱。
某論壇一夜之間多了 500 個新註冊會員,但都沒有發文或互動,Email 帳號全是 abc123xyz@mail.ru 之類的隨機字串。
-
部落格與文章留言灌水
在開放留言的文章下方自動貼上含有外部連結的訊息,目的可能是衝外部反向連結(黑帽 SEO)、引導使用者點進釣魚網站、或散布惡意軟體下載點。
部落格文章下方出現「Great article! Check my site: http://...」的英文留言,連結指向不相關的賭博、藥品或仿冒品網站。
-
大量提交聯絡表單
濫用網站的「聯絡我們」表單,送出無意義或推銷訊息到企業信箱。許多 B2B 公司的業務信箱每天會收到 50-200 封來自表單的垃圾「詢價」。
企業聯絡信箱每小時收到 3-5 封來自網站表單的訊息,內容是「我們提供低價 SEO 服務」「便宜的 SSL 憑證」等推銷信。
-
從網站發送垃圾郵件
利用網站的 SMTP 設定或 PHP mail() 函式漏洞,把您的伺服器當成發信跳板,大量寄送垃圾信給其他人。這會導致您的網域被列入黑名單(Blacklist),正常的商務信也被擋掉。
企業發現寄給客戶的報價單一直被退回,查詢後發現網域已被 Spamhaus、SORBS 等黑名單收錄。
-
利用 PHP 漏洞植入後門
針對舊版 PHP、WordPress 外掛或佈景主題的已知漏洞(CVE),自動上傳惡意 PHP 檔到網站,做為日後控制網站的後門程式。
網站根目錄出現 wp-admin/setup.php、shell.php 等不明檔案,訪問後跳轉到博弈、色情或詐騙頁面。
-
劫持 Email 帳戶
透過暴力破解或字典攻擊,反覆嘗試登入您的 Email 帳戶。一旦成功,就會用這個信箱發送詐騙信,假冒您的身分騙取客戶款項。
客戶反映收到從您公司 Email 寄出的「更改匯款帳號」通知,但您完全沒有寄過,事後發現信箱密碼已被破解。
三、被垃圾訊息機器人攻擊會造成什麼損失?
許多企業主低估了垃圾訊息機器人的危害,以為只是多刪幾封信、多刪幾筆留言而已。但實際上,長期不處理會造成連鎖性的損失。在 AI 搜尋時代,這些損失更會直接影響到品牌在 ChatGPT、Perplexity 等 AI 平台的曝光機會。
四、保護表單與留言版:驗證碼是第一道防線
當垃圾訊息機器人試圖從您的網站提交表單時,表單必須能驗證使用者的真實性。最常見也最有效的方式,是在表單中嵌入「驗證碼(CAPTCHA)」機制,要求訪客完成只有真人能做到的小任務,藉此擋下自動化機器人。
常見驗證碼類型比較
| 驗證類型 | 使用體驗 | 防護強度 | 建議使用情境 |
|---|---|---|---|
| Google reCAPTCHA v2 | 勾選「我不是機器人」核取框 | 中 | 一般聯絡表單、會員註冊 |
| Google reCAPTCHA v3 | 無感驗證(背景分析行為) | 高 | 追求順暢體驗的電商、訂購頁 |
| hCaptcha | 選圖驗證,注重隱私 | 中高 | 有 GDPR 顧慮的歐洲市場 |
| Cloudflare Turnstile | 無感、無認知挑戰 | 高 | 已使用 Cloudflare 的網站 |
| 蜜罐(Honeypot) | 使用者完全無感 | 低中 | 搭配其他驗證使用 |
| 圖形扭曲驗證碼 | 需手動輸入扭曲文字 | 低(AI 已能破解) | 不建議單獨使用 |
蜜罐(Honeypot)技術:讓機器人自投羅網
蜜罐是一種對使用者完全透明,卻能精準辨識機器人的技術。原理是在表單中加入一個用 CSS 隱藏的欄位,真人看不到也不會填寫,但機器人會把所有欄位都填滿。當伺服器收到一筆「蜜罐欄位有填值」的表單,就能判定是機器人並直接拒絕。
<form action="/contact" method="post">
<input type="text" name="name" placeholder="您的姓名">
<input type="email" name="email" placeholder="您的 Email">
<textarea name="message" placeholder="留言內容"></textarea>
<!-- 蜜罐欄位:用 CSS 隱藏,真人不會填,機器人會填 -->
<div style="position:absolute; left:-9999px;" aria-hidden="true">
<label>請勿填寫此欄位</label>
<input type="text" name="website" tabindex="-1" autocomplete="off">
</div>
<button type="submit">送出</button>
</form>
五、強化會員登入機制
會員登入是垃圾訊息機器人最常攻擊的目標之一,主要手段有兩種:反覆建立假帳號(用來發垃圾文)與暴力破解現有帳號(竊取會員資料)。要防範這類攻擊,必須在登入與註冊兩端都加上防護。
登入機制必備防護
-
登入次數限制(Rate Limiting)
同一個 IP 在 5 分鐘內若登入失敗超過 5 次,自動鎖定 30 分鐘。這是防止暴力破解最基本也最有效的設定。
WordPress 可用 Limit Login Attempts Reloaded 外掛;自建系統可在資料庫紀錄 IP + 失敗次數 + 時間戳,在登入 API 加判斷。
-
註冊驗證 Email
新帳號註冊後,必須點擊驗證信中的連結才能啟用。可以擋掉大部分用一次性信箱的機器人註冊。
使用者註冊後系統寄出驗證信,連結帶有 24 小時有效的 token,點擊後才正式啟用帳號。
-
封鎖一次性信箱網域
建立一份常見一次性信箱清單(如 mailinator.com、10minutemail.com),註冊時直接拒絕這些網域。
使用 disposable-email-domains 開源清單,定期更新,在註冊 API 中比對使用者輸入的 Email 網域。
-
雙因素驗證(2FA)
重要帳戶(如管理員、會員後台)強制開啟 2FA。即使密碼被破解,沒有第二因素也無法登入。
使用 Google Authenticator、Authy 等 TOTP App 產生 6 位數一次性驗證碼,或透過簡訊發送驗證碼。
-
強制密碼複雜度
註冊時要求密碼至少 8 碼,包含大小寫、數字與特殊符號。可以大幅提升暴力破解的難度。
前端用 JavaScript 即時檢查密碼強度條,後端用正規表達式驗證:必須含 [A-Z]、[a-z]、[0-9]、[!@#$%] 各至少 1 個。
六、更新 CMS 與外掛版本
垃圾訊息機器人會跟著網際網路的漏洞情報而不斷進化。每當 WordPress、Joomla、Drupal 等 CMS 或熱門外掛被揭露新漏洞(CVE),機器人就會在 24-48 小時內開始大規模掃描。不更新版本等於把家裡的大門開著。
網站維護的黃金法則:CMS 核心、外掛、佈景主題、伺服器作業系統,所有元件都必須保持最新版。
更新策略建議
| 元件類型 | 更新頻率 | 更新方式 | 注意事項 |
|---|---|---|---|
| CMS 核心(WordPress 等) | 有更新就裝 | 後台一鍵更新或自動更新 | 大版本更新前先備份 |
| 安全外掛 | 有更新就裝 | 後台一鍵更新 | 優先處理,通常修補新漏洞 |
| 一般功能外掛 | 每月檢查一次 | 測試環境驗證後再上線 | 避免破壞既有功能 |
| 佈景主題 | 每月檢查 | 使用子佈景主題避免覆蓋客製化 | 客製化過的主題要謹慎 |
| PHP 版本 | 每年至少評估一次 | 由主機商或工程師升級 | 低於 PHP 8.1 應考慮升級 |
| 伺服器作業系統 | 每季套用安全修補 | SSH 執行套件管理工具 | 需 sudo 權限,建議專人處理 |
停用不再使用的外掛
許多企業網站累積了 30-50 個外掛,其中超過一半早已不再使用,但仍然安裝在系統中。這些舊外掛是駭客最愛的攻擊面。建議定期審視外掛清單,未啟用的外掛要直接刪除而不只是停用,因為停用的外掛檔案仍存在於伺服器上,漏洞依然可以被利用。
七、隱藏 Email 地址
垃圾訊息機器人有一種專門的子類別叫「Email 爬蟲(Email Harvester)」,它的任務就是在網際網路上掃描所有公開的 Email 地址,然後賣給垃圾信業者或進行字典攻擊。如果您把 Email 以純文字形式放在網站上,可能在幾小時內就會出現在垃圾信清單裡。
隱藏 Email 的五種方法
-
改用聯絡表單
最推薦的做法。使用者透過表單送訊息,Email 完全不公開在前端。表單必須搭配第四章的驗證碼防護。
「聯絡我們」頁面只放表單,不直接顯示 service@yourcompany.com,使用者填表後訊息透過後台轉寄到信箱。
-
將 Email 製作成圖片
把 Email 地址做成 PNG 或 SVG 圖片放在頁面上。機器人無法 OCR(雖然進階的可以,但成本高,大部分機器人會跳過)。
用 Canva 或 Photoshop 製作含 Email 的圖片,放在「聯絡我們」區塊,真人看得到、可手動輸入到自己的信箱寄信。
-
JavaScript 動態組合
把 Email 拆成多段字串,用 JavaScript 在頁面載入後組合並顯示。機器人通常只解析 HTML 原始碼,看不到 JS 執行後的結果。
用
document.write('service' + '@' + 'newscan.com.tw')動態組合 Email,原始 HTML 中沒有完整 Email 字串。 -
使用 HTML 實體編碼
把 Email 中的 @ 改成
@、. 改成.。瀏覽器會正常顯示,但簡單的機器人可能無法解析。原本 service@newscan.com.tw 改寫成 service@newscan.com.tw,在 HTML 原始碼中不會被識別為標準 Email 格式。 -
Cloudflare Email Obfuscation
使用 Cloudflare 的網站可以開啟自動 Email 加密功能,Cloudflare 會在頁面送出時自動將所有 mailto: 連結加密,點擊時才解密。
Cloudflare 控制台 → Scrape Shield → Email Address Obfuscation 打開,網站上所有 mailto 連結會自動加密,不需修改任何程式碼。
八、定期查看伺服器日誌
日誌(Log)是網站的健康紀錄。所有來訪請求、錯誤訊息、登入嘗試都會留下紀錄,定期檢查日誌可以及早發現異常,例如某個 IP 在短時間內提交了 500 次表單、或有人不斷嘗試登入後台。
常用的日誌檢查管道
-
cPanel AwStats / Webalizer
大部分主機商提供的網站流量統計工具,可以看到訪客 IP、來源、頁面點擊、流量趨勢,適合非工程背景的網站主初步檢查。
登入 cPanel → Metrics → AwStats,可以看到當月最常訪問的 IP、機器人比例、最受歡迎的頁面。
-
伺服器原始 Access Log
Apache 或 Nginx 的 access.log 紀錄所有 HTTP 請求。透過 SSH 連線到 VPS 後,用 grep、awk 等指令分析特定行為。
用
grep "POST /contact" access.log | awk '{print $1}' | sort | uniq -c | sort -rn | head找出最常打聯絡表單的 IP。 -
CMS 內建日誌外掛
WordPress 可用 WP Activity Log、Wordfence;Joomla 可用 Admin Tools。這些外掛會記錄登入嘗試、檔案修改、外掛安裝等事件。
Wordfence 後台「Live Traffic」可以即時看到哪些 IP 在嘗試登入、提交表單、訪問可疑頁面。
-
Cloudflare Analytics
如果網站接 Cloudflare,後台可以看到所有被擋下的攻擊請求、機器人類型、來源國家,並可即時封鎖可疑 IP。
Cloudflare → Security → Events,可以看到 WAF 規則擋下的攻擊紀錄,並一鍵將可疑 IP 加入黑名單。
-
Google Search Console
雖然不是傳統的 log 工具,但可以發現網站是否被 Google 標記為含有駭客內容,或是否有異常的 404 錯誤。
Search Console → 安全性問題,若顯示「駭客入侵內容」或「惡意軟體」警告,代表網站可能已被入侵。
需要警覺的可疑訊號
- 同一個 IP 在短時間內訪問超過 100 次頁面?
- 某些 IP 反覆嘗試訪問 /wp-admin、/administrator、/phpmyadmin 等後台路徑?
- 聯絡表單提交頻率突然暴增?
- 網站根目錄出現不認識的 .php 檔案?
- 每月流量明顯增加但實際業績沒變?
以上任一情況出現,建議立即進一步調查或請工程師檢查。越早發現,處理成本越低。
九、設定 robots.txt 管理機器人爬取
robots.txt 是放在網站根目錄的純文字檔,用來告訴合法的爬蟲(Googlebot、Bingbot 等)哪些頁面可以抓、哪些不可以。雖然 robots.txt 對惡意機器人沒有強制力(它們會直接無視),但仍是 SEO 與機器人管理的基本工具。
robots.txt 範例
# 允許所有合法爬蟲訪問 User-agent: * Allow: / # 但禁止抓取後台、登入頁、購物車等敏感區域 Disallow: /wp-admin/ Disallow: /wp-login.php Disallow: /administrator/ Disallow: /cart/ Disallow: /checkout/ Disallow: /my-account/ Disallow: /?s= Disallow: /search/ # 提供 sitemap 位置 Sitemap: https://www.newscan.com.tw/sitemap.xml # 封鎖已知的不良爬蟲(僅對守規矩的有用) User-agent: AhrefsBot Crawl-delay: 10 User-agent: SemrushBot Crawl-delay: 10 User-agent: MJ12bot Disallow: /
進階做法:用 .htaccess 真正封鎖惡意 User-Agent
如果想真正擋下不守規矩的機器人,應該用 .htaccess(Apache)或 nginx.conf(Nginx)做強制封鎖。這比 robots.txt 有效得多,因為是伺服器層級的攔截,機器人想無視也無視不了。
# 封鎖已知的惡意 User-Agent
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} (AhrefsBot|MJ12bot|SemrushBot|DotBot) [NC]
RewriteRule .* - [F,L]
# 封鎖空白 User-Agent(通常是惡意機器人)
RewriteCond %{HTTP_USER_AGENT} ^$ [OR]
RewriteCond %{HTTP_USER_AGENT} ^-$
RewriteRule .* - [F,L]
如果您想進一步了解如何阻擋搜尋引擎與機器人爬取網站,可以參考新視野的如何使用 robots.txt 阻止搜尋引擎爬取網站專文。
十、防護常見錯誤
在處理垃圾訊息機器人問題時,許多企業主或工程師會犯下一些常見錯誤,反而讓網站更容易受到攻擊。以下是六個最常見的誤區:
- 以為「網站沒人知道就不會被攻擊」 事實上,只要網站上線並有公開 IP,垃圾訊息機器人就會在 24 小時內掃描到。改善方式:把防護視為網站上線的必要工程,不要等出事才補洞。
- 只裝防火牆但不更新 CMS 防火牆擋不住已知漏洞的攻擊。如果 CMS 是舊版,駭客直接走漏洞進來,防火牆完全沒用。改善方式:更新 + 防火牆 + 驗證碼,缺一不可。
- 把 Email 公開放在網頁上 純文字 Email 在幾小時內就會被爬蟲抓走,加入全球垃圾信清單。改善方式:用聯絡表單取代,或用 Cloudflare Email Obfuscation 加密。
- 用簡單的圖形驗證碼擋一切 傳統扭曲文字驗證碼近年已能被 AI 輕鬆破解。改善方式:改用 reCAPTCHA v3、Cloudflare Turnstile 等行為分析型驗證,搭配蜜罐欄位。
- 停用外掛但沒刪除 停用的外掛檔案仍在伺服器上,漏洞依然可以被利用。改善方式:不再使用的外掛要直接刪除,不要只停用。
- 從不看日誌或備份 等到網站被掛馬、信箱被黑名單才發現,通常已經損失慘重且難以還原。改善方式:每月至少看一次日誌,每週備份一次資料庫與檔案,備份要存到異地。
十一、結論:防護是持續工程,不是一次性的安裝
垃圾訊息機器人的攻擊手法每天都在演進。近年的機器人已經能用 AI 模擬真人行為、繞過傳統驗證碼、甚至能填寫看起來合理的聯絡表單訊息。因此,網站防護不能只做一次就忘記,而要當成日常維運的一部分。
第一層「基礎防護」是表單驗證碼、登入限制、Email 隱藏、CMS 更新,這些是任何網站都必須做的。第二層「主動偵測」是定期查看日誌、監控異常流量、設定 WAF 規則,目的是早期發現攻擊。第三層「持續優化」是根據攻擊紀錄調整防護策略、更換更強的驗證機制、淘汰過時外掛。
如果您正準備檢查自家網站的防護程度,可以從以下五個檢查項目開始:
- 所有對外表單(聯絡、註冊、留言)都有驗證碼或蜜罐?
- 登入頁面有失敗次數限制?
- CMS、外掛、佈景主題都是最新版?
- Email 地址沒有以純文字形式公開在網頁上?
- 每月至少看一次伺服器日誌或 Google Search Console 安全性報告?
常見問答 FAQ
垃圾訊息機器人(Spam Bot)和一般爬蟲有什麼不同?
我的網站每天都收到大量垃圾表單,該怎麼快速處理?
裝了 reCAPTCHA v3 還是會收到垃圾表單,是怎麼回事?
網域被列入黑名單(Blacklist)該怎麼解除?
robots.txt 真的能擋掉垃圾訊息機器人嗎?
WordPress 網站要裝哪些安全外掛比較好?
怎麼判斷網站是否已經被駭客或機器人入侵?
site:您的網域.com,如果出現博弈、藥品、色情等不相關的頁面,代表網站已被掛馬植入垃圾頁。4. Google Search Console 出現安全性警告——「網站含有惡意軟體」「駭客入侵內容」等通知,要立即處理。5. 後台或 FTP 出現不認識的檔案——常見的後門檔名包括 wp-config-bak.php、shell.php、c99.php、setup.php 等。6. 客戶或同事反映收到從您網域寄出的奇怪信件——通常代表 Email 帳號或網站被當成發信工具。發現以上任何一項,建議立即:停用所有外掛、修改所有管理員密碼、用 Wordfence 全站掃描、必要時將網站恢復到入侵前的備份版本。如果不確定如何處理,務必尋求專業的網站安全工程師協助,以免愈處理愈糟。