4月6日夜裡十點二十三分,星辰科技的抓取程式取得第一條聯網資料。
撥號成功前,它已經忙音六次。樓上五金店老闆每隔十分鐘便踩一下地板,提醒馬飛電話費正從押金里扣。半地下室的摺疊床沒地方展開,馬飛只好坐在裝手冊的紙箱上,膝蓋頂著桌沿。
頁面來自一所高校的公開伺服器,正文只有兩百多字,介紹實驗室研究方向。程式把標題、地址、更新時間和文字內容寫入本地檔案,耗時四十七秒。
馬飛在日誌第一行手寫:
文件000001,來源公開,抓取成功。
接下來兩個小時,程式又下載了六十三個頁面。
第六十四個頁面讓它陷入迴圈。
站點日曆給每一天生成一個新地址,程式不斷沿“下一天”前進。即使頁面內容幾乎相同,地址也永遠不會重複。電話計費表上的分鐘數不停增加。
馬飛發現時,已經浪費了二十七分鐘。
他立刻斷線。
電話清單上多出四元六角。那是他一天多的飯錢。樓上老闆拿算盤算完,問日曆上的字到底值不值這個價。
“不值。”馬飛把錢從生活費信封裡拿出來,“所以今晚不能再讓它碰同一個坑。”
老闆收了三元,剩下一元六角記在下個月庫存維護裡。他嘴上說不是賒賬,只是怕馬飛餓倒以後沒人修程式。
未來成熟爬蟲會有內容指紋、路徑規則和站點級抓取預算。此刻,他只寫了最基本的地址去重。知道缺什麼不難,難的是在一臺舊486上用盡可能少的記憶體補上。
他先為正文計算簡短指紋,再規定每個站點單次最多抓取五十頁。若連續五頁的文字相似度過高,自動暫停該路徑。所有暫停必須寫入日誌,下一次由人工判斷是否恢復。
第二天,蘇雨桐看完程式碼,指出另一個問題。
她來時帶了兩個食堂饅頭,進門先摸水管,再看防水鐵盒。確認備份沒溼,她才把一個饅頭放到馬飛桌上。馬飛正準備說昨天新增六十三頁,她已經在日誌裡看見那二十七分鐘迴圈。
“你只考慮自己會不會浪費電話費,沒考慮對方伺服器。”
“每次請求間隔十秒。”
“多個路徑並行時不是十秒。對同一站點,你有三次請求只隔了兩秒。”
早期網路頻寬稀缺,一臺不受控制的抓取程式足以讓小型伺服器明顯變慢。規則尚未形成,不意味著傷害不會發生。
兩人給程式加上站點級佇列:同一伺服器至少間隔二十秒,夜間訪問也限制總量。請求標識中寫明“XingchenCrawler/0.1”,附上聯絡郵箱和退出方式。
為驗證限制真的生效,蘇雨桐把三條不同路徑同時放進佇列,拿秒錶守了二十分鐘。程式有一次在第十九秒提前發出請求,她讓馬飛整段重寫,不能靠多加一秒掩蓋計時誤差。凌晨十二點四十七分,連續三十次間隔都超過二十秒,她才在測試單上簽字。
“有人會給一個爬蟲寫信?”馬飛問。
“有人不想被抓時,總要找得到你。”
三天後,真的有人寫來。
郵件來自某高校網路中心,只有一句話:
請停止訪問 `/student/` 目錄,其中含臨時個人主頁。
。果結理明說復回並,容頁一十的得取經已除刪,表列止加徑路該把即立飛馬
。達到日次在件郵封二第
?麼什是的做們你:問方對








