ORON
回科技觀點
網站製作10 分鐘閱讀

官網表單垃圾訊息:擋掉機器人又不趕走真客戶

詢問單信箱每天二十幾封廣告,真客戶的單子被埋在裡面兩星期沒人回。從蜜罐欄位、驗證碼取捨到伺服器端過濾與收件分流,四層防護三週走完。

官網表單垃圾訊息:擋掉機器人又不趕走真客戶

「每天早上打開詢問單信箱,二十幾封裡面有十八封是英文廣告、虛擬貨幣投資、SEO 代操報價,剩下兩封才是真的客戶。看久了乾脆不看,結果某天才發現,一張三十萬的詢問單躺在裡面兩個星期沒人回。」

這是不少中小企業官網上線半年後會遇到的情況。表單本身沒有壞掉,壞掉的是它變成一個誰都能往裡面丟東西的投信口。而真正的損失不是信箱變亂,是你開始不相信那個信箱,於是真客戶的詢問也跟著被忽略。

紅磚牆上一個標著 LETTERS 的舊式金屬投信口,象徵官網表單是一個對外完全開放的收件口,誰都能往裡面塞東西

Photo by Genevieve Ridgway on Unsplash

一、先分清楚是誰在灌

三種來源的處理方式完全不同,先看一個月的紀錄判斷自己以哪一種為主,再決定要補哪一層:

自動腳本。程式在網路上掃 <form>,看到輸入欄就填、看到送出鈕就送。特徵很好認:內容和你的業務毫無關係、需求欄塞滿連結、同一分鐘內連送好幾筆。這類通常佔最大比例,也最容易處理。

人工代發。真的有人坐在電腦前填,內容針對你的行業寫得還算像樣,但目的是推銷 SEO、網站代工或海外採購。數量不多,技術上也幾乎擋不掉,只能靠收件端分流。

被當成寄信跳板。表單欄位沒做過濾,被人塞進換行符號與額外的收件者,拿你的伺服器寄廣告信。這種最嚴重,後果是你的網域被列入黑名單,連報價單都寄不出去。

二、第一層:訪客感覺不到的隱形門檻

這一層最該先做,因為成本幾乎是零,而且對真客戶沒有任何干擾。

蜜罐欄位(honeypot)。在表單裡放一個用 CSS 藏起來的欄位,例如命名成 website_url,用 position:absolute;left:-9999px 移出畫面——不要用 display:none,有些腳本看得出來。真人看不到也填不到,腳本會照填。後端收到這個欄位有值就靜靜丟掉,不要回報錯誤訊息,否則對方知道被擋了就會調整。

填表秒數門檻。表單載入時在隱藏欄位寫入時間戳,送出時比對差值。真人要填完姓名、電話、需求,很少在三秒內完成;低於三秒就當可疑。要注意這個時間戳得在伺服器端簽章或加密,否則對方改一下就過了。

不要在頁面上放純文字 email。把 [email protected] 直接寫在 HTML 裡,等於公開給爬信件位址的程式收走。改成表單、用 JavaScript 組合、或做成圖片,都能減少信箱本身的垃圾量。

欄位名稱不要太標準。有些腳本靠 name="email"、name="message" 判斷該填什麼。改成 contact_mail、inquiry_detail 這類命名,會讓一部分腳本填錯位置。這招效果有限,但不花時間。

三、第二層:驗證碼要不要上,上哪一種

金屬格網的特寫,孔洞層層排列大小一致,象徵表單防護應該是一層一層篩掉不該進來的東西,而不是只靠單一道關卡

Photo by Bernd Dittrich on Unsplash

驗證碼能擋掉的量最多,但也是最容易傷到轉換率的一層。建議先把第一層做完、觀察一兩週,再決定要不要加。

reCAPTCHA v3(免費)。訪客不需要點任何東西,背後給出一個 0 到 1 的分數,由你決定低於多少要擋或送人工審。優點是無感,缺點是會載入 Google 的腳本並分析訪客行為,歐盟客戶多的網站要考慮隱私合規,頁面也多一點載入負擔。門檻設太嚴會誤擋真人,可以從 0.3 起跳,而且別直接丟掉,先標記起來。

Cloudflare Turnstile(免費)。定位類似,但不做廣告追蹤,隱私爭議較小,多數情況下訪客只要勾一下甚至完全無感。如果官網本來就掛在 Cloudflare 後面,整合成本很低。

傳統圖形驗證碼。要訪客辨識扭曲文字那種。擋得住,但對中高齡與用手機的訪客特別不友善,也有無障礙問題。如果你的客群年紀偏長,這招的代價通常大於收益。

自問自答題。例如「本公司主要生產什麼材質的產品?」對通用腳本很有效,對人工代發沒用,而且會卡住還不熟悉你產品的新客戶。比較適合放在內部或經銷商表單,不適合放在主要詢問單。

有個原則值得記住:擋下來的東西不要直接消失。先改成「標記為可疑並另存一份」,跑一個月再看有沒有真客戶被誤殺。

四、第三層:送出之後的伺服器端過濾

前兩層是在門口,這一層是在收件之後。先釐清一個常見誤解:前端的 JavaScript 檢查只是體驗,不是防護。腳本可以完全不經過你的頁面,直接對後端端點送資料,所以所有判斷都要在伺服器端再做一次。

幾個實際有用的規則:

  • 連結數。需求說明裡出現三個以上網址,多半是廣告。
  • 欄位格式。電話欄位要求台灣號碼格式(09 開頭十碼或市話區碼),能擋掉大量亂填。但如果你做外銷,就要放寬並另外分流,不然擋到的是真客戶。
  • 換行與郵件標頭字元。凡是會進到郵件標頭的欄位(收件者、主旨、寄件者名稱),一律過濾掉換行字元與 Bcc:、Content-Type: 這類字串。這是防止表單被拿去寄廣告信的關鍵一步,不要省。
  • 同來源頻率。同一個 IP 在十分鐘內送出三筆以上就暫時拒收。但要留意同一家公司多人詢問、或電信業者共用 IP 的情況,門檻別設太低。
  • 關鍵字名單。累積自己的名單,例如 SEO services、crypto、guest post、backlink。這份名單要靠自己長出來,直接抄別人的效果有限。

還有一件事常被忽略:表單一定要把每一筆都寫進資料庫,不要只靠通知信。信會漏、會被歸進垃圾桶,資料庫不會。

五、第四層:收件端的分流與回頭檢查

桌面上一只放大鏡,鏡片放大了底下的紋理,象徵每個月回頭檢查被標記為可疑的詢問單,確認有沒有真客戶被誤擋

Photo by wtrsnvc on Unsplash

就算前三層都做了,還是會有漏網的。這一層的目的不是再擋一次,而是讓漏網的不要淹掉真客戶。

分流。讓「通過全部檢查」與「標記為可疑」寄到不同信箱或不同標籤。真客戶那一箱保持乾淨,可疑那一箱一天看一次就夠。

自動回覆。對通過檢查的詢問自動回一封「已收到,兩個工作日內回覆」。這不只是禮貌,也是你後台有沒有在運作的日常檢查——哪天自動回覆停了,你會馬上發現。

每月十分鐘的回頭檢查。翻一遍可疑那箱,看有沒有真客戶。有的話就是門檻設太嚴,把規則放寬一格。這一步最常被跳過,也是為什麼誤擋常常存在半年卻沒人知道。

指派與時效。詢問單進來後要有人認領、有回覆期限。有些公司垃圾訊息擋掉了,真客戶還是沒回,因為沒有人負責看那個信箱。

六、幾個常見但效果不好的做法

  • 把必填欄位加到八、九個。腳本照填,真客戶跑掉。欄位越多轉換率越低,這等於用轉換率換清潔度,多數情況不划算。
  • 只靠前端驗證。如前面所說,後端端點是公開的,繞過前端幾乎不需要技術門檻。
  • 乾脆關掉表單只留電話。等於把願意打字但不想打電話的客戶整批放掉,尤其是下班後才有空看網站的那群人。
  • 一次把所有防護開到最大。然後分不出是哪一層在誤擋。一層一層上,每層觀察一兩週,才知道哪一條規則該調。

結語:三個星期可以走完的順序

第一週。裝上蜜罐欄位與時間戳門檻、把頁面上的純文字 email 拿掉、確認每一筆詢問都有寫進資料庫。這一週幾乎不會動到真客戶的體驗。

第二週。看第一週擋掉多少。如果量還是大,加上 Turnstile 或 reCAPTCHA v3,但先只標記、不丟棄;同時把換行與郵件標頭字元的過濾補上。

第三週。做收件分流與自動回覆,並把「每月檢查誤擋」排進行事曆。

這件事的價值不在信箱變乾淨,而在於你會重新開始認真看每一封詢問單。一個月漏掉一張真單子的成本,通常比做完這些事的成本高得多。

想把這些做到你的網站上?

不論是快速上線的模板建站、客製官網或後台系統,留個訊息,我們會回你「能做+報價+時程」。

加 LINE 詢問