SlideMe Out of Spam – Privacy-Friendly CAPTCHA for WordPress

發行說明

所有 SOS Captcha 版本,按最新版本優先排列。您可透過 WordPress 管理後台的「外掛程式」畫面取得新版本。

1.0.85 — 2026-10-12

  • 修正(付費版):「統計」頁面現已實際記錄驗證次數。先前其資料庫資料表從未建立,且計數器僅在管理後台載入,因此該頁面始終顯示「尚無資料」。
  • 新增(付費版):統計數據中的滑桿相關指標——每個表單的平均檢查點數量與解題時間,以及按原因細分的被攔截嘗試紀錄,其中會顯示滑桿移動的距離(從未觸碰滑桿的機器人不會觸發檢查點)。統計數據保留一年,且仍不包含任何個人資料。
  • 新增功能:soscaptcha_validation_success 和 soscaptcha_validation_failed 動作現可接收滑桿相關數據(檢查點、收集數、解題時間)作為額外參數。

1.0.84 — 2026-10-12

  • 安全性(登入表單、Premium 版本):WordPress 登入頁面及 WooCommerce「我的帳戶」登入頁面的滑桿驗證機制已強化。現在,此驗證會在驗證使用者名稱和密碼之前執行,且每次未能通過滑桿驗證的登入嘗試,系統都會返回相同的回應。若滑桿驗證成功,登入流程則與以往相同。

1.0.83 — 2026-10-12

  • 修正(Contact Form 7):經滑桿篩選而遭拒的訊息,現會於 Contact Form 7 自身的反垃圾郵件階段即被攔截,避免其他外掛程式處理該表單提交。 此前,拒絕處理僅會取消電子郵件發送,因此將表單提交資料儲存至資料庫的外掛程式(例如 Contact Form CFDB7)仍可能保留遭拒絕的訊息。訪客所看到的錯誤訊息與先前相同。
  • 新增功能(Contact Form 7):soscaptcha_cf7_result動作及SOSCAPTCHA_CF7::get_instance()->get_last_result(),用於記錄或儲存每次提交的驗證結果(狀態、檢查點、錯誤)。

1.0.82 — 2026-10-06

  • 修正:在自動更新成功後,WordPress 可能會稍後再次嘗試更新完全相同的版本,並顯示「無法更新(從 X 到 X),已還原至先前版本」。這是因為更新程式將伺服器的版本與仍載入在記憶體中的版本進行比較,而非與磁碟上的版本比較,導致留下過期的「有更新可用」記錄。 現在,系統會與 WordPress 從外掛檔案讀取的版本進行比對。sos-captcha.com 發出的下載連結有效期也從 1 小時延長至 3 天,因此排程更新將不再遇到已過期的連結。

1.0.81 — 2026-10-06

  • 修正(付費版,Ninja Forms):針對 Ninja Forms 表單提交時滑桿的伺服器端驗證機制已重新設計,現已能可靠地執行。滑桿的數值會包含在 Ninja Forms 自身的提交資料中,若提交內容未能通過驗證,系統將拒絕該提交並在表單上方顯示錯誤訊息:任何資料均不會被儲存或傳送。
  • 改進:挑戰現在會與其所發出的表單綁定,且每次查詢挑戰時都會檢查表單類型。
  • 開發說明:測試套件已重新建置——修復了伺服器端測試套件(自 1.0.54 版本更名後便一直失效),新增嚴格的負面斷言,針對與電子郵件擷取功能的整合新增伺服器端提交測試,並提供非互動式的bin/test-all.sh 腳本。 請參閱 CLAUDE.md 中的「測試規則」。

1.0.80 — 2026-10-06

  • 修正(付費版,WPForms):針對 WPForms 表單提交時滑桿的伺服器端驗證機制已重新設計,現已能可靠地執行。若提交內容未能通過驗證,系統將明確顯示「反垃圾訊息檢查失敗」的訊息並拒絕該提交。
  • 新增功能(付費版、WPForms):用於通知電子郵件的{soscaptcha_status}和{soscaptcha_checkpoints}智慧標籤,這是針對 WPForms 的對應功能,與 1.0.78 版本中新增的 Contact Form 7 標籤功能相當。 請在表單建構器中的「設定」→「通知」→「電子郵件訊息」下,將其新增至{all_fields}之後({all_fields}本身從不包含這些標籤)。這些標籤在伺服器端計算產生;訪客無法修改它們。

1.0.79 — 2026-10-06

  • 修正:在某些情況下,「首次成功後跳過」選項可能會接受本不應接受的提交。驗證流程已加強:伺服器端現在會更嚴格地檢查「已驗證」狀態,且該狀態會在可設定的時限後失效。先前版本記錄的狀態已重置,因此回訪的訪客需再次完成滑桿挑戰。
  • 新增:「跳過時長」設定(設定 → 挑戰減輕)—— 完成挑戰後,該挑戰仍保持有效直至滑桿再次顯示的時長,範圍為 1 分鐘至 24 小時(預設:60 分鐘)。先前此設定的有效期為整個瀏覽器會話期間。
  • 開發:新增soscaptcha_solved_cookie_ttl和soscaptcha_solved_cookie_context過濾器(後者可讓您將驗證狀態綁定至訪客的 IP 位址等)。

1.0.78 — 2026-10-06

  • 新增:兩項專為 Contact Form 7 通知郵件設計的特殊郵件標籤,分別為[_soscaptcha_status]和[_soscaptcha_checkpoints]。 針對每則收到的訊息,這些標籤會告知您:滑桿是否已實際通過驗證(以及通過了多少檢查點)、是否因使用者已登入或會話已通過驗證而跳過驗證,或是根本未執行驗證。 這些資訊是在伺服器端計算得出的,因此訪客無法偽造。請將它們新增至「Contact Form 7」→ 您的表單 → 「郵件」中的郵件正文中。

1.0.77 — 2026-10-05

  • 修正:在多語言網站上,所有訪客看到的滑桿文字皆固定顯示為管理員的語言。現在,預設文字將根據每位訪客的語言顯示;您自訂的文字將予以保留,並可透過 WPML 或 Polylang 進行翻譯。
  • 新增功能:若在當前瀏覽器會話中已通過驗證,受保護的表單將顯示「✓ 已於本會話中驗證」,而非完全不顯示滑桿。
  • 修正:滑桿的確認文字先前始終顯示為法文;現已完成翻譯。
  • 修正:更正了多數語言中「Slide」的翻譯(先前誤譯為簡報投影片),以及德語、阿拉伯語、義大利語和中文中「Slide to check」的翻譯。

1.0.76 — 2026-10-02

  • 修正:在已翻譯的網站上,新字串仍維持英文顯示。此外掛現已改為始終載入其內建的翻譯檔(始終為最新版本),而非過時的 WordPress.org 語言套件或舊版付費翻譯檔。
  • 修正:滑桿 JavaScript 翻譯檔案的路徑錯誤。

1.0.75 — 2026-10-02

  • 新增:「更新」設定分頁,內含自動更新開關(此設定與「外掛程式」畫面中的「啟用自動更新」連結設定相同)。
  • 新增功能:當自動更新功能關閉時,系統會顯示管理員通知,每當有新版本發布時,通知中將包含「立即更新」、「啟用自動更新」及「忽略此版本」等操作選項。
  • 修正:「由 SOS Captcha 保護」標章現已顯示於每個受保護表單(Contact Form 7、WPForms、登入頁面等)的滑桿下方,而不僅限於留言表單。
  • 修正:滑桿的彩色填充區域現在會立即跟隨滑桿手柄移動,而非滯後於其後。

1.0.74 — 2026-06-19

  • 新增功能:內建自動更新。此外掛現可直接從 sos-captcha.com 檢查並安裝其更新,因此您無需透過 WordPress.org 目錄即可保持外掛最新狀態。
  • 內部更新:將外掛整合為單一程式碼庫(付費功能現由受授權限制的內部模組載入,而非透過獨立附加元件)。功能方面並無變更——免費版本維持不變,而已授權的安裝版本則可獲得相同的付費功能。
  • 新安裝的網站現在預設會使用更友善的調整後設定(4–6 個檢查點、每個檢查點至少 0.5 秒、30 秒的速率限制,已登入使用者可跳過驗證)。現有網站則會保留其已儲存的設定。

1.0.73 — 2026-06-15

  • 功能完整的免費外掛 — 無任何鎖定設定。 免費外掛中顯示的所有控制項現已皆可正常運作;沒有任何被停用、受限或需升級才能使用的選項,亦無任何形式的授權檢查。屬於獨立 SOS Captcha Pro 附加元件的功能(額外整合、進階機器人偵測、自訂顏色、統計資料、移除標章)僅以純資訊性通知的形式呈現,絕不會以停用控制項的形式出現。
  • 檢查點範圍現已統一為 2–12,且不再顯示升級提示。
  • 自訂滑桿顏色功能已完全移至 Pro 擴充套件:免費版外掛僅提供固定的預設顏色。現有的免費版網站不受影響(免費版從未儲存過自訂顏色)。

1.0.72 — 2026-05-26

  • 更友善的預設值:每個檢查點的最低停留時間從 1 秒降低至 0.5 秒,速率限制時窗從 60 秒縮短至 30 秒,檢查點數量現隨機設定在 4 至 6 之間(原先為固定 6 個), 預設挑戰有效期統一為 10 分鐘(原先為 1 分鐘,而使用者看到的「10 分鐘後過期」通知文字原本已預設為 10 分鐘)。現有網站將保留其儲存的設定值;僅新安裝的網站會採用新的預設值。

1.0.71 — 2026-05-06

  • 新增輔助函式SOSCAPTCHA_Generator::pro_extra_fields()/pro_extra_fields_html()— 作為 Pro 版蜜罐及瀏覽器指紋隱藏輸入欄位的單一資料來源,供整合套件渲染使用。 9 個整合適配器(CF7、留言、WPForms、Gravity Forms、Ninja Forms、WooCommerce 評論/結帳/註冊、WP 登入/註冊/忘記密碼)現在當其開關開啟時,都會輸出這些欄位
  • Slider JS 現於滑桿初始化時,會計算一個 Base64 編碼的 JSON 指紋({ ua, lang, tz, screen }),並將其寫入隱藏輸入欄位 — 搭配 Pro 1.0.10 重新編寫的驗證器,該驗證器會檢查聲稱的 UA 是否與$_SERVER['HTTP_USER_AGENT']相符,以偵測自動化工具套件

1.0.70 — 2026-05-06

  • **嚴重錯誤:滑桿驗證在最後一個檢查點失敗。**assets/challenge-slider.js中的「下一個檢查點高亮」程式碼,在 AJAX 區塊已將lastCheckpoint推進至最終索引後,仍執行了checkpointDots[lastCheckpoint + 1].style.borderColor = …的操作——因此當滑桿抵達最後一個點時,便發生了對 undefined 的解引用。 此 TypeError 導致updatePosition 的其餘部分中斷,包括將收集的代碼寫入表單隱藏欄位soscaptcha_tokens 的 setTimeout函式。最終結果:表單提交時代碼欄位為空 → 伺服器以「invalid_tokens」為由拒絕。已新增防護機制,確保僅在實際存在下一個檢查點時才執行高亮顯示。

1.0.69 — 2026-05-06

  • **關鍵修復:滑桿挑戰無法載入**(admin-ajax 400錯誤,操作:soscaptcha_get_challenge_config)。 三個前端 AJAX 端點(get_challenge_config、collect_token、refresh_challenge)在 PHP 端是以舊版前綴wp_ajax_sos_*註冊的,但滑桿的 JavaScript 卻傳送action=soscaptcha_*(符合 1.0.54 版本中採用的 WP.org 4 字元以上前綴規則)。此不匹配導致 **所有** 挑戰擷取請求皆返回 400 錯誤 — 滑動條無法渲染,且受保護頁面上的表單提交無法通過驗證。 PHP 端現已改用wp_ajax_soscaptcha_*來匹配。- 受影響頁面:所有由該外掛保護的表單(登入、留言、CF7、示範頁面等) – 與授權啟用 400 錯誤(1.0.2 版)及設定自動儲存 400 錯誤(1.0.65 版)屬於同一類根本原因 — 終於追蹤到第三個案例。

1.0.68 — 2026-05-06

  • Plugin Check 修正項目(1.0.67 發布後發現的回歸問題):對 disabled-input 屬性進行正確的轉義處理(現改用 WordPress 的disabled()輔助函式,而非直接輸出原始字串),/* 譯者注意: */註解已移至其__()呼叫的旁邊,並移除了load_plugin_textdomain()(自 4.6 版起,WP 會自動載入由 WP.org 託管的外掛翻譯——此呼叫已被標記為不建議使用)

1.0.67 — 2026-05-06

  • **修復 Pro 版整合開關無預警失效的問題** — 整合功能的儲存處理程序所使用的白名單,原先僅預設了 2 項免費整合項目(留言、cf7)。 Pro 版本的篩選器(自 1.0.64 起)僅會切換標準登錄表中的鎖定標記,而非新增條目,因此任何 Pro 整合開關(如WPForms、Gravity Forms 等)在儲存時都會被靜默移除。 處理常式現已從SOSCAPTCHA_Integrations::filtered()載入預設值,因此所有 9 個金鑰皆可被接受,並透過伺服器端防護機制,在授權未啟用時仍會阻擋 Pro 版整合開關。

1.0.66 — 2026-05-06

  • 所有 9 種非英語地區的翻譯已更新(原始字串未變更;與 Pro 1.0.8 版本搭配使用,該版本隨附對應的超集.mo 檔案)

1.0.65 — 2026-05-06

  • **修復管理後台「設定/整合」無法儲存的問題** — 原本註冊的 AJAX 動作名稱是wp_ajax_sos_save_*,但 JavaScript 自動儲存時發送的 POST 請求動作卻是action=soscaptcha_save_*。這種不一致導致每次變更都會無聲失敗。現在兩者均改為使用soscaptcha_save_*
  • **修復「升級至 Pro 版」頁面的嚴重錯誤** — DeepL 在翻譯短格式字串時會移除%s佔位符,因此printf( '或 %s/年 (節省 20%%)', $price )在 PHP 8+ 環境中會因ArgumentCountError 而發生錯誤。 已重構為兩個更簡單的可翻譯字串,並新增執行時檢查機制:若翻譯中缺少佔位符,則回退至英文版本
  • 已重新生成翻譯;先前顯示異常的「每年可節省」行,現在在所有 9 種非英語地區設定中皆能正常顯示

1.0.64 — 2026-05-06

  • 整合功能網格現已將 Pro 版表單整合功能(WPForms、Gravity Forms、Ninja Forms、WooCommerce、WP 登入/註冊/忘記密碼)以鎖定預覽形式顯示,即使完全未安裝 Pro 版外掛亦然——使用者無需先安裝 Pro 版,即可預覽可用功能
  • 新增的共用資料檔案/data/integrations.php(單一資料來源,反映分層矩陣模式)可透過新的SOSCAPTCHA_Integrations輔助函式存取
  • 已將 3 種漸層顏色預設值(經典/紫色/海洋)重新新增至「外觀」分頁;若未啟用 Pro 授權,此功能將被鎖定
  • 翻譯:針對新增的「鎖定預覽」、「預設值」及「統計資料」字串進行了更新

1.0.63 — 2026-05-05

  • 設定頁面已重新設計,將 Pro 功能以鎖定預覽形式呈現——訪客與管理員無需先安裝 Pro 版本,即可預覽各等級解鎖的功能- 「驗證」分頁:新增「進階機器人偵測」區塊(行為分析、蜜罐、瀏覽器指紋),在取得授權前將顯示為停用狀態並附有 Pro 標章 – 「挑戰減少」分頁:新增「超時後自動重新載入」開關,需取得授權後方可啟用- 新增「外觀」分頁,內含漸層色彩選取器及「顯示/隱藏徽章」開關,兩者皆需取得授權後方可啟用
  • 當 Pro 版本未啟用時,管理後台側邊欄會出現新的「統計」子選單項目(附有鎖頭圖示)——點擊該項目即可查看 Pro 版本的升級銷售頁面
  • 新增由soscaptcha_pro_active過濾器支援的SOSCAPTCHA_Tiers::is_pro_active()輔助函式;當 Pro 版授權有效時,系統會自動啟用此功能

1.0.61 — 2026-05-05

  • 新增:位於includes/data/tier-matrix.php的方案層級與功能對照表統一資料來源(可透過SOSCAPTCHA_Tiers輔助類別讀取)。 免費版的「升級至 Pro」頁面與 Pro 版外掛的「授權」頁面皆由此檔案渲染,並與 sos-captcha.com 的定價資訊保持同步
  • 「升級至 Pro」頁面重新設計:提供 4 級方案比較(免費 / 入門 / Pro / 代理商),包含月付與年付價格;Pro 方案標有「最受歡迎」徽章,並針對各級方案設置導向 sos-captcha.com 的行動呼籲按鈕
  • 翻譯:已根據最新原始字串重新生成所有 .pot/.po/.mo 檔案(先前 .mo 檔案的日期仍停留在 1.0.50 版本,遺漏了因前綴重命名而新增的數十個字串)

1.0.60 — 2026-05-05

  • 翻譯:明確呼叫load_plugin_textdomain(),以便在手動上傳的安裝環境中(而不僅限於 WordPress.org 發行的版本)也能翻譯管理後台的字串
  • 整合功能網格:當未啟用 Pro 授權時,會以「Pro」鎖定標章搭配「升級」行動呼籲按鈕來顯示 Pro 整合功能(此功能仰賴 Pro 外掛的soscaptcha_integrations篩選器所揭露的新premium_locked標記)
  • 新增soscaptcha_show_get_pro_menu過濾器;Pro 版外掛(1.0.2 及以上版本)會透過此過濾器,在授權啟用後隱藏「升級至 Pro 版」的加購子選單

1.0.59 — 2026-05-05

  • 修復管理後台 JS 404 錯誤:將admin/js/sos-admin.{js,min.js}重新命名為admin/js/soscaptcha-admin.{js,min.js},使檔案名稱符合 1.0.54 版本中引入的前綴排程路徑

1.0.57 — 2026-05-05

  • 修復啟用時的致命錯誤:將類別檔案名稱從class-sos-*.php重新命名為class-soscaptcha-*.php,使其與 1.0.54 版本中引入的require_once路徑相符(此次重命名僅影響 require 路徑,但未變更磁碟上的檔案名稱)
  • WordPress.org 外掛檢查:請在admin/views/{settings,integrations,get-pro}.php檔案中,將 view-scope 變數的前綴改為soscaptcha_,以消除WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedVariableFound警告

1.0.56 — 2026-05-05

  • 請為三個在表單間傳遞的輸入變數名稱(challenge_session、challenge_nonce、collected_tokens→soscaptcha_session、soscaptcha_nonce、soscaptcha_tokens)加上前綴,以避免與主機端表單上的其他外掛程式發生名稱衝突
  • 已相應更新所有整合功能(Contact Form 7、留言功能 + 付費版適配器)以及滑桿的 JS 選擇器

1.0.55 — 2026-05-04

  • 將「soscaptcha-」前綴延伸至 CSS 類別與腳本處理程序(所有處均採用 4 字元以上的前綴),以符合 WordPress.org 的規範

1.0.54 — 2026-05-04

  • 將 PHP 類別前綴從SOS_改為SOSCAPTCHA_,函式前綴從sos_改為soscaptcha_(根據 WordPress.org 指南,前綴須為 4 個字元以上)

1.0.53 — 2026-05-03

  • 架構:將外掛分為免費版本(本外掛)與可選的sos-captcha-pro輔助外掛,後者透過 WordPress 過濾器/動作載入
  • 此免費外掛程式已不再包含任何付費程式碼路徑——以回應 WordPress.org 對試用軟體的疑慮
  • 配套外掛聲明「所需外掛:sos-captcha(WP 6.5+)」

1.0.52 — 2026-05-03

  • ZIP 檔案中隨附的原始資源現已移除開發註解(CSS 和 JS),既能讓審閱者輕鬆閱讀程式碼,又不會洩露內部備註
  • 外掛載入機制維持不變:生產環境中載入 .min.js 和 .min.css 檔案,當設定為 SCRIPT_DEBUG=true 時則載入原始碼檔案
  • 已從 readme 中移除 GitHub 儲存庫連結(原始碼已內建於外掛中)

1.0.51 — 2026-05-03

  • WordPress.org 合規審查第二輪(針對審查員反饋的回應)
  • 試用版:建置時的後處理程式會從免費版 ZIP 檔案中移除所有 $is_licensed 條件判斷(新增 bin/strip-license-checks.php)
  • 原始碼可見性:與其 .min 版本一同發布未壓縮的 .js / .css 檔案;在 GitHub 儲存庫的 readme 文件中說明相關資訊
  • 安全性:AJAX 端點現需使用與會話綁定的 HMAC 隨機數(支援快取)。表單提交時,驗證器會驗證該隨機數。所有 8 種整合方案均會顯示隨機數欄位。

1.0.50 — 2026-04-29

  • 品牌重塑:外掛名稱由「SOS Anti-Spam」更名為「SOS Captcha」—— slug、text-domain 及語言檔案均已更新為「sos-captcha」
  • 主檔案名稱變更:slide-out-spam.php → sos-captcha.php
  • 現有安裝版本的功能並無變更;品牌形象更為簡潔,並與 sos-captcha.com 保持一致

1.0.49 — 2026-04-27

  • 已通過 WordPress.org 合規性審查
  • 請在所有 AJAX 動作前加上 sos_ 前綴,以避免衝突
  • 移除 load_plugin_textdomain(對於託管於 WordPress.org 的外掛而言已無需此功能)
  • 將免費版本中的「授權」頁面替換為「方案比較」頁面(無需輸入授權資訊,亦不進行外部 API 呼叫)
  • 付費版升級現需從 sos-captcha.com 手動下載(外掛 → 新增 → 上傳)
  • 首次公開發行
  • Contact Form 7 與 WordPress 留言保護
  • WordPress 登入、註冊及忘記密碼防護(進階版)
  • 最多 8 個檢查點(免費版)/15 個(進階版)
  • 支援 10 種語言