六月第一場悶雷滾過北京時,星辰辦公室停了電。
不是機房停電。三樓這棟舊樓的保險絲燒了,吊扇轉得越來越慢,最後停在眾人頭頂。窗戶全開啟也沒有風,印表機裡剛吐出一半的紙卡在滾軸上,像一條沒說完的話。
機房電話隨即響起。
值班學生摸黑接起來,聽了幾句,捂住話筒:“有人說自己被我們封了,非要找負責人。”
“問工單號。”馬飛說。
“他說沒有。頁面只寫訪問過於頻繁,請稍後再試。”
馬飛接過電話。對面是個年輕男人,語速很快,背景裡還夾著兒童哭聲。他說自己在一家小型機械廠做資料員,廠裡準備修一臺進口數控機床,他用星辰查伺服驅動器型號。撥號上網按時計費,連線一次不容易,他習慣把十幾個詞提前寫好,連上以後快速逐個搜尋。昨晚查到第七個,頁面突然拒絕,重新撥號仍然不行。
“你們是不是把我當壞人了?”他問。
“現在還不能確定是哪條規則觸發。”馬飛說,“把大概時間和查詢詞告訴我,我們查記錄。你的姓名和工廠名稱可以不留。”
“不留你怎麼回覆?”
“留一個你願意提供的聯絡方式,單獨放在工單裡,不和查詢記錄混在一起。”
對方遲疑片刻,報了傳呼號。
停電恢復前,雷雨先落下來。豆大的雨點砸在鐵皮窗臺上,辦公室裡終於涼了一點。大家把桌椅往裡挪,還是有半面故障表被濺溼,紅藍鉛筆線在紙上慢慢暈開。
蘇雨桐用報紙吸水,發現“明確拒絕比例”那一欄正好糊掉了。
“像是提醒我們重算。”她說。
正式上線首日記錄的三千八百四十二次查詢裡,有一百一十七次被系統拒絕。當時團隊正忙著處理容量故障,只把拒絕當成保護伺服器的必要動作。規則很簡單:同一來源在短時間內請求過多,就延遲;繼續請求,就拒絕半小時。
在壓力測試裡,這條規則有效阻止了測試程式失控。進入真實網路以後,“同一來源”卻不一定代表同一個人。學校機房幾十臺電腦可能共用出口,一家單位也可能只有一個撥號賬戶。相反,一個人重新撥號,又可能得到新的地址。
那名機械廠資料員的記錄很快找到。他在兩分四十秒內發出七次不同查詢,每次都完整等到了結果,只是間隔短。第七次以後觸發了限流。沒有惡意程式,沒有重複重新整理,也沒有試圖下載整站。
“他只是手快。”值班學生說。
蘇雨桐看著窗外的雨:“也可能是電話費貴。”
她自己去學校機房查資料時,也會先在紙上列好關鍵詞。按分鐘計算的上網費讓每一次停頓都有價格。程式把快速查詢解釋成可疑行為,實際上懲罰的可能只是一個想早點斷線的人。
一百一十七次拒絕中,多少屬於這種情況?
電恢復後,馬飛沒有立刻改限流引數。他們先把記錄按行為拆開:相同查詢連續重複、不同查詢快速提交、翻頁請求、抓取大量結果、失敗後重試、多人共用出口。原先被擠在同一個數字裡的動作,分成六摞列印紙。
最厚的是失敗後重試。
“這一百一十七不能全算防住了濫用。”馬飛說,“有一部分是我們先失敗,再拒絕他們。”
陳維明靠在窗邊扇合同副本,襯衫後背溼了一片:“可你也不能什麼都放。前天有人一次拉走上千條結果,明顯是來抄資料。”
“所以分開。”
“怎麼分?每個使用者先打電話自我介紹?”
。抖有沒乎幾得確隔間,十五到一從序順頁翻,次十二百一詞個一同求請複重鐘分一在組一另。錄記組一另寫邊旁,上板黑在寫詢查個七的員料資廠械機把桐雨蘇
”。份明證能不,險風加增能只律規但。律規更式程“,說”。響影輸和讀閱、度速面頁會人“
。式模求請和話會合結要,之了封一能不口出共的位單和校學。絕拒時短才取抓續持顯明;度速低降頁翻次批律規;計複重不試重敗失的話會一同;示提並遲延先詢查速快通普:理層多定設議建
。問生學”?認麼怎話會“
”。用使途用不,效失期定。名姓要不,號編機隨個一覽瀏給“
”。麼什過搜他道知能就們我那“
”。存儲遠永以可就,下裝能碟為因是不。間時段一留保只的錯除要需,留不位欄的留不能“,說桐雨蘇”。開分須必式方絡聯和誌日詢查以所“
”。麼什找在家大道知想戶客。錢值很詞詢查“:頭抬明維陳
”。賣能不跡軌人個“,說飛馬”。做以可計統佈分“
”。刀一砍收來未給又們你“
”。的賣該不掉砍先“
。來進話電有又,口門到走剛果結,館小下樓去議提飛馬。麵泡吃再願不也誰,間時飯晚到論討人眾。聲嗒咔的微輕出發便圈一轉每葉扇,轉檔一的低最用肯只卻扇吊,了換然雖險保。來起熱新重裡屋,遠漸聲雷
。備報前提要需否是前課上後以問只,火發有沒師老。了速限口出的房機個整把辰星,課索檢上時同生學名多十二。師老房機校學是次這
”。約預者用使常正求要能不尋搜開公“,說飛馬”。要需不“
。的通普按都說,錢零的裡包錢眼一了看飛馬,丁加要不要問生學。來回帶麵醬炸碗四買他讓,生學班值給遞包錢把他,話電掉掛
”。請我,費譯翻文論了發我天今“:去回推包錢把桐雨蘇








