日前 Enoch 兄 post 了一篇文章,指出 sina 會出現 "留言驗證錯誤" 的原因,不過文中所說的郤和我的觀察結果有出入,同時在留言中發覺有很多人都會遇到 "留言驗證錯誤" 的問題,所以我做了一個比較詳細的測試,希望找出原因,亦可以藉此了解一下 sina 處理留言驗證的做法。
1. 同時用同一個 browser 看一篇文章會否令留言驗證失效?
測試:用 IE 看一篇文章 A,再用 "open in new window" 看同一篇文章,然後回到原本的 window 留言。
結果:驗證失敗
觀察:留言驗證是儲存在 browser session 中,每篇文章只有一個留言驗證,重覆閱讀同一篇文章會令之前的留言驗證失效。
2. 其他人看同一篇文章會否令自己的留言驗證失效?
測試:在電腦 A 看一篇文章,再在電腦 B 看同一篇文章,refersh 十次,再在電腦用原本的留言驗證留言。
結果:可以成功留言
觀察:每個 browser session 都有自己的留言驗證,不會因其他人影響自己。
3. 同時看多篇文章會否令留言驗證失效?
測試:用 IE 看一篇文章 A,再在排行榜用 "open in new window" 開另多五篇文章,然後回到原本的文章 A 留言。
結果:可以成功留言
觀察:每篇文章都有自己的留言驗證,同時看多篇文章也不會有問題。
4. 停留時間太長會否留言驗證失效?
測試:重複測試 3,但等八小時後才在文章 A 留言。
結果:可以成功留言
觀察:留言驗證並不會因 browser 長時間 idle 而失效(至少八小時內不會),就是說看來 sina 的 server 並没有設定 session timeout。
5. Server 會否會因為每篇文章設定一個留言驗證上限?
測試:用 IE 看一篇文章,再用 wget 連續讀取留言驗證的 image 400 次,再在原本的 IE 留言。
結果:可以成功留言
觀察:主要是測試 server 會否為留言驗證設置上限,但測試結果表示就算有四百人閱讀同一篇文章,留言驗證也不會失效。
6. 在留言途中 login 會否令原本的留言驗證失效?
測試:用 IE 看一篇文章,然後用 Ctrl-N 開新 window,並在新 window login sina,看一些其他文章,最後在原本的文章留言。
結果:可以成功留言
觀察:主要是測試 login 後會否改變用另一個 user session,以致儲存在第一個 session 的留言驗證失效,但發現並非如此。
7. 在留言途中 logout 會否令原本的留言驗證失效?
測試:先用 IE login sina 並看一篇文章,然後用 Ctrl-N 開新 window,並在新 window logout,最後在原本的文章留言。
結果:驗證失敗
觀察:由於 logout 後會清除原本所有儲存在 server session 內的資料,包括留言驗證的答案,所以驗證失敗。
總結:
暫時以我所想到的情況來看,最常會驗証失敗的原因是在同一個 browser 看同一篇文章(同一個 browser 的意思是在 IE 6 用 Control-N,right-click open in new window,或者是用 Firefox 或 IE 6 開新 tab)和中途 logout。不知大家驗證失敗的原因是否都是這兩個呢?





