第2章
熊貓燒香:七次拒稿,我黑了啟點(diǎn)
小問題。------------------------------------------,沉默了整整半分鐘。,結(jié)構(gòu)簡(jiǎn)單得像個(gè)大學(xué)生期末作業(yè)?,F(xiàn)在,代碼翻了一倍,多了將近三百行。。每一行都是他的風(fēng)格,變量命名用他特有的駝峰加下劃線混搭、注釋里帶著中二括號(hào)表情、甚至縮進(jìn)習(xí)慣都一模一樣。。但他完全不記得寫過。,重新看了一遍。沒錯(cuò)。代碼確實(shí)變長(zhǎng)了。新增的邏輯實(shí)現(xiàn)了一個(gè)功能:自動(dòng)請(qǐng)求啟點(diǎn)中文網(wǎng)的評(píng)論區(qū)API,在特定條件**入一段腳本。"……不是吧。",登錄啟點(diǎn),隨便點(diǎn)進(jìn)一本書的評(píng)論區(qū)。刷新了一下,頁面正常。又刷新了一下。:"有沒有人發(fā)現(xiàn)評(píng)論區(qū)多了個(gè)熊貓?"。:"**我也看到了!發(fā)表評(píng)論后會(huì)多一只熊貓,舉著香的那種!":"什么情況?是官方彩蛋嗎?":"不是吧,我看別的書也有。"
"我剛試了,發(fā)評(píng)論就出熊貓,巨搞笑。"
"截圖了哈哈哈這熊貓好賤。"
陳墨慢慢靠回椅背,盯著屏幕上的讀者評(píng)論。
他嘴角不受控制地往上翹了一下,然后笑了。不是苦笑,不是自嘲——是真的、痛快的、解氣的笑。
三年。七次拒稿。四個(gè)字"缺乏新意"。他的小說連登上評(píng)論區(qū)讓人罵的資格都沒有。現(xiàn)在他的代碼替他把名字刻上去了。
他越想越好笑。三年了,他的東西終于上了啟點(diǎn)。雖然不是他想的那種上法。
"**。"
他笑著罵了一聲,往后一靠,椅子發(fā)出吱呀一聲。
他重新看了一遍那些他不記得寫過的注釋,有一行格外顯眼: // 他們不讓我寫,那就讓讀者來找我
他盯著這行字,笑出了聲。
"行。"
他自言自語。
"那就搞。"
啟點(diǎn)中文網(wǎng)技術(shù)部。
工位上,一個(gè)戴眼鏡的年輕人正在一邊吃煎餅一邊看監(jiān)控面板。小張,運(yùn)維工程師,入職一年半,日常工作就是盯著服務(wù)器別出問題。
今天跟往常一樣平穩(wěn)。他咬了一口煎餅,看了眼評(píng)論區(qū)服務(wù)的錯(cuò)誤率曲線。
曲線抖了一下。
小張嚼煎餅的速度慢了下來。曲線又抖了一下,從0%跳到0.3%,回落,又跳到0.5%。
他放下煎餅,打開日志。大量401錯(cuò)誤:評(píng)論接口返回了異常數(shù)據(jù)。但0.5%的錯(cuò)誤率……說實(shí)話,不算高。這個(gè)量級(jí)可能是某個(gè)用戶插件沖突,也可能是瀏覽器兼容問題。
小張?jiān)谶\(yùn)維群里發(fā)了條消息:
"評(píng)論區(qū)服務(wù)有輕微異常,錯(cuò)誤率0.5%,有沒有人在搞事?"
沒人回。
他又發(fā)了一條,還是沒人理。他撓了撓頭,點(diǎn)開詳細(xì)的錯(cuò)誤日志。問題集中在某個(gè)**文件上,評(píng)論區(qū)組件的一部分,里面多了一段代碼。
他點(diǎn)開看了看。
一只Q版的熊貓,舉著三根香。
"……這什么玩意兒?"
他刷新頁面,發(fā)表了一條測(cè)試評(píng)論。頁面右下角多了一只熊貓,歪著腦袋看他。他移動(dòng)鼠標(biāo),熊貓的眼睛跟著轉(zhuǎn)。
小張愣住了。
然后他笑了。
"評(píng)論區(qū)多了個(gè)熊貓表情包,前端加的彩蛋?"
群里終于有人回了:
"哈哈哈我也看到了,誰搞的?"
"不是官方的吧?沒聽說有這功能。"
"那可能是被黑了?"
"別扯了,誰黑進(jìn)來就為了放個(gè)熊貓?"
"就是,要黑也是搞數(shù)據(jù)庫,搞個(gè)表情包圖啥?"
群里嘻嘻哈哈地討論起來。小張也覺得不是什么大事。大概率是哪個(gè)前端程序員加的愚人節(jié)彩蛋,忘了刪。這種事情他不是沒見過:上次還有人在登錄頁面藏了個(gè)恐龍?zhí)鴺贰?br>他關(guān)掉監(jiān)控面板,重新拿起煎餅。
"應(yīng)該問題不大,先觀察一下。"
打完這行字,他咬了一大口煎餅。
陳墨刷新了十次頁面。
每一次刷新,評(píng)論區(qū)提到熊貓的評(píng)論就多幾條。從一條到三條到七條。他換了一本書,也有。再換一本,也有。
范圍在擴(kuò)大。
他的代碼在一本接一本地掃描啟點(diǎn)的書籍頁面,每次掃描到評(píng)論區(qū),就植入那段熊貓代碼。被植入的頁面不會(huì)馬上發(fā)作——只有用戶發(fā)表評(píng)論后,熊貓才會(huì)出現(xiàn)。
像一個(gè)安靜的、耐心的獵人。
陳墨看著屏幕上越來越多的反饋,心跳越來越快。
他想到那些被拒的稿子。想到每次打開郵箱看到"未通過"三個(gè)字時(shí)的心情。想到他熬了三個(gè)月的夜寫出來的東西,換來四個(gè)字的評(píng)價(jià)。
現(xiàn)在他的代碼在**們。在干啟點(diǎn)。
他深吸了一口氣。
他知道這不對(duì)。他知道這是在搞事情。
但***……真爽。
他拿起手機(jī)想給誰分享一下,通訊錄翻了一圈又放下了。沒人能說。沒人會(huì)理解。他總不能打電話跟**說:"媽,我今天寫了個(gè)病毒,正在攻擊小說網(wǎng)站。"
他只能自己消化這種感覺。
屏幕上的熊貓還在看他。下面那行字還在:
"V1.0 | 運(yùn)行狀態(tài):正常 | 自進(jìn)化狀態(tài):未激活"
他盯著"未激活"三個(gè)字,心里泛起一陣說不清的感覺。
未激活?
那——激活了會(huì)怎樣?
下午三點(diǎn)。
小張又看了眼監(jiān)控。錯(cuò)誤率:2%。
比中午高了。被感染的頁面從幾十本擴(kuò)展到了上百本。速度不快,像是溫火慢燉。他手動(dòng)試了幾次清除,清了之后頁面恢復(fù)正常,但過不了多久又會(huì)復(fù)發(fā)。
他在群里又問了一遍:"那個(gè)熊貓彩蛋還在擴(kuò)散,有人確認(rèn)一下是不是前端功能?"
這次前端組負(fù)責(zé)人回了,就四個(gè)字:"不是我們搞的。"
小張的表情變了。
他重新打開那段代碼,仔細(xì)看了一遍。越看越不對(duì)勁,這不是正常的前端功能,這是跨站腳本注入。有人通過評(píng)論區(qū)接口的漏洞,把腳本塞進(jìn)了頁面。而且這個(gè)腳本的寫法……他沒見過這種結(jié)構(gòu)。不是網(wǎng)上能找到的現(xiàn)成模板。
"我靠。"
他終于意識(shí)到不對(duì)了。
但看了一眼錯(cuò)誤率——2%。說實(shí)話,還是不高。
他猶豫了一下,在群里打了幾個(gè)字:
"問題不大,我排查一下。"
嘴上這么說,但他已經(jīng)把煎餅放下了。
下午五點(diǎn)半,陳墨關(guān)掉了IDE。
他今天沒去上班。他靠在椅子上,看著窗外的夕陽,腦子里亂糟糟的。一天時(shí)間,他的代碼感染了啟點(diǎn)幾百本書的評(píng)論區(qū)。范圍還在擴(kuò)大,但速度不快,暫時(shí)沒人發(fā)現(xiàn)根源。
他應(yīng)該關(guān)掉它。
他知道。
但他不想。
他從來沒有這種感覺:他寫的東西,正在被別人看到。雖然不是小說,雖然方式不對(duì)。但那些評(píng)論里的"哈哈哈""好搞笑""這熊貓好賤"。有人看到了他寫的東西。
哪怕只是三行代碼。
手機(jī)亮了,公司群里有人@他,問他今天怎么沒來。
他回了一句:"身體不舒服,請(qǐng)假一天。"
然后把手機(jī)翻了個(gè)面,扣在桌上。
屏幕上,那只熊貓還在看他。香燒到最后一點(diǎn)了,紅色的光點(diǎn)幾乎要熄滅。
陳墨盯著它,忽然問了一句:
"你到底想干什么?"
熊貓當(dāng)然沒回答他。
但他注意到,屏幕右下角那行狀態(tài)欄閃了一下——
"自進(jìn)化狀態(tài):未激活 → 激活中……"
陳墨猛地坐直了身體。
"……什么?"
"我剛試了,發(fā)評(píng)論就出熊貓,巨搞笑。"
"截圖了哈哈哈這熊貓好賤。"
陳墨慢慢靠回椅背,盯著屏幕上的讀者評(píng)論。
他嘴角不受控制地往上翹了一下,然后笑了。不是苦笑,不是自嘲——是真的、痛快的、解氣的笑。
三年。七次拒稿。四個(gè)字"缺乏新意"。他的小說連登上評(píng)論區(qū)讓人罵的資格都沒有。現(xiàn)在他的代碼替他把名字刻上去了。
他越想越好笑。三年了,他的東西終于上了啟點(diǎn)。雖然不是他想的那種上法。
"**。"
他笑著罵了一聲,往后一靠,椅子發(fā)出吱呀一聲。
他重新看了一遍那些他不記得寫過的注釋,有一行格外顯眼: // 他們不讓我寫,那就讓讀者來找我
他盯著這行字,笑出了聲。
"行。"
他自言自語。
"那就搞。"
啟點(diǎn)中文網(wǎng)技術(shù)部。
工位上,一個(gè)戴眼鏡的年輕人正在一邊吃煎餅一邊看監(jiān)控面板。小張,運(yùn)維工程師,入職一年半,日常工作就是盯著服務(wù)器別出問題。
今天跟往常一樣平穩(wěn)。他咬了一口煎餅,看了眼評(píng)論區(qū)服務(wù)的錯(cuò)誤率曲線。
曲線抖了一下。
小張嚼煎餅的速度慢了下來。曲線又抖了一下,從0%跳到0.3%,回落,又跳到0.5%。
他放下煎餅,打開日志。大量401錯(cuò)誤:評(píng)論接口返回了異常數(shù)據(jù)。但0.5%的錯(cuò)誤率……說實(shí)話,不算高。這個(gè)量級(jí)可能是某個(gè)用戶插件沖突,也可能是瀏覽器兼容問題。
小張?jiān)谶\(yùn)維群里發(fā)了條消息:
"評(píng)論區(qū)服務(wù)有輕微異常,錯(cuò)誤率0.5%,有沒有人在搞事?"
沒人回。
他又發(fā)了一條,還是沒人理。他撓了撓頭,點(diǎn)開詳細(xì)的錯(cuò)誤日志。問題集中在某個(gè)**文件上,評(píng)論區(qū)組件的一部分,里面多了一段代碼。
他點(diǎn)開看了看。
一只Q版的熊貓,舉著三根香。
"……這什么玩意兒?"
他刷新頁面,發(fā)表了一條測(cè)試評(píng)論。頁面右下角多了一只熊貓,歪著腦袋看他。他移動(dòng)鼠標(biāo),熊貓的眼睛跟著轉(zhuǎn)。
小張愣住了。
然后他笑了。
"評(píng)論區(qū)多了個(gè)熊貓表情包,前端加的彩蛋?"
群里終于有人回了:
"哈哈哈我也看到了,誰搞的?"
"不是官方的吧?沒聽說有這功能。"
"那可能是被黑了?"
"別扯了,誰黑進(jìn)來就為了放個(gè)熊貓?"
"就是,要黑也是搞數(shù)據(jù)庫,搞個(gè)表情包圖啥?"
群里嘻嘻哈哈地討論起來。小張也覺得不是什么大事。大概率是哪個(gè)前端程序員加的愚人節(jié)彩蛋,忘了刪。這種事情他不是沒見過:上次還有人在登錄頁面藏了個(gè)恐龍?zhí)鴺贰?br>他關(guān)掉監(jiān)控面板,重新拿起煎餅。
"應(yīng)該問題不大,先觀察一下。"
打完這行字,他咬了一大口煎餅。
陳墨刷新了十次頁面。
每一次刷新,評(píng)論區(qū)提到熊貓的評(píng)論就多幾條。從一條到三條到七條。他換了一本書,也有。再換一本,也有。
范圍在擴(kuò)大。
他的代碼在一本接一本地掃描啟點(diǎn)的書籍頁面,每次掃描到評(píng)論區(qū),就植入那段熊貓代碼。被植入的頁面不會(huì)馬上發(fā)作——只有用戶發(fā)表評(píng)論后,熊貓才會(huì)出現(xiàn)。
像一個(gè)安靜的、耐心的獵人。
陳墨看著屏幕上越來越多的反饋,心跳越來越快。
他想到那些被拒的稿子。想到每次打開郵箱看到"未通過"三個(gè)字時(shí)的心情。想到他熬了三個(gè)月的夜寫出來的東西,換來四個(gè)字的評(píng)價(jià)。
現(xiàn)在他的代碼在**們。在干啟點(diǎn)。
他深吸了一口氣。
他知道這不對(duì)。他知道這是在搞事情。
但***……真爽。
他拿起手機(jī)想給誰分享一下,通訊錄翻了一圈又放下了。沒人能說。沒人會(huì)理解。他總不能打電話跟**說:"媽,我今天寫了個(gè)病毒,正在攻擊小說網(wǎng)站。"
他只能自己消化這種感覺。
屏幕上的熊貓還在看他。下面那行字還在:
"V1.0 | 運(yùn)行狀態(tài):正常 | 自進(jìn)化狀態(tài):未激活"
他盯著"未激活"三個(gè)字,心里泛起一陣說不清的感覺。
未激活?
那——激活了會(huì)怎樣?
下午三點(diǎn)。
小張又看了眼監(jiān)控。錯(cuò)誤率:2%。
比中午高了。被感染的頁面從幾十本擴(kuò)展到了上百本。速度不快,像是溫火慢燉。他手動(dòng)試了幾次清除,清了之后頁面恢復(fù)正常,但過不了多久又會(huì)復(fù)發(fā)。
他在群里又問了一遍:"那個(gè)熊貓彩蛋還在擴(kuò)散,有人確認(rèn)一下是不是前端功能?"
這次前端組負(fù)責(zé)人回了,就四個(gè)字:"不是我們搞的。"
小張的表情變了。
他重新打開那段代碼,仔細(xì)看了一遍。越看越不對(duì)勁,這不是正常的前端功能,這是跨站腳本注入。有人通過評(píng)論區(qū)接口的漏洞,把腳本塞進(jìn)了頁面。而且這個(gè)腳本的寫法……他沒見過這種結(jié)構(gòu)。不是網(wǎng)上能找到的現(xiàn)成模板。
"我靠。"
他終于意識(shí)到不對(duì)了。
但看了一眼錯(cuò)誤率——2%。說實(shí)話,還是不高。
他猶豫了一下,在群里打了幾個(gè)字:
"問題不大,我排查一下。"
嘴上這么說,但他已經(jīng)把煎餅放下了。
下午五點(diǎn)半,陳墨關(guān)掉了IDE。
他今天沒去上班。他靠在椅子上,看著窗外的夕陽,腦子里亂糟糟的。一天時(shí)間,他的代碼感染了啟點(diǎn)幾百本書的評(píng)論區(qū)。范圍還在擴(kuò)大,但速度不快,暫時(shí)沒人發(fā)現(xiàn)根源。
他應(yīng)該關(guān)掉它。
他知道。
但他不想。
他從來沒有這種感覺:他寫的東西,正在被別人看到。雖然不是小說,雖然方式不對(duì)。但那些評(píng)論里的"哈哈哈""好搞笑""這熊貓好賤"。有人看到了他寫的東西。
哪怕只是三行代碼。
手機(jī)亮了,公司群里有人@他,問他今天怎么沒來。
他回了一句:"身體不舒服,請(qǐng)假一天。"
然后把手機(jī)翻了個(gè)面,扣在桌上。
屏幕上,那只熊貓還在看他。香燒到最后一點(diǎn)了,紅色的光點(diǎn)幾乎要熄滅。
陳墨盯著它,忽然問了一句:
"你到底想干什么?"
熊貓當(dāng)然沒回答他。
但他注意到,屏幕右下角那行狀態(tài)欄閃了一下——
"自進(jìn)化狀態(tài):未激活 → 激活中……"
陳墨猛地坐直了身體。
"……什么?"