在您的Mastodon伺服器上阻止AI爬蟲:Nginx版
本文介紹如何透過Nginx配置阻止AI爬蟲對Mastodon伺服器的過度抓取,基於作者的真實經歷——伺服器夜間因AI爬蟲而負載過高。提供了具體的步驟:使用nginx-block-ai-bots.conf配置檔案,並更新robots.txt,從而避免被爬蟲打擾。
在深夜收到伺服器警報通知是最糟糕的事情之一。你的大腦飛速運轉——我的冗餘是否在工作?我該去拿滅火器嗎?——你知道在臥室裡發光的SSH會話會吵醒你的配偶。然後你就有兩個問題了。
前幾天我就遇到了這樣的事,竟然是為了我那臺執行Mastodon伺服器的簡陋單例項。這是一個資源極少的微型伺服器,因為它不需要太多資源;我是唯一的日常活躍使用者,其他家庭成員只是偶爾使用。負載從來不是問題,但那天晚上,有些東西讓網路變得非常非常糟糕。
是AI,當然是因為AI。具體來說,AI爬蟲毫無理由地瘋狂抓取。我以前就注意到過,但這是第一次發現它們在我的Mastodon伺服器上游蕩。
為了給自己爭取機會,我迅速在Mastodon的Nginx配置中加入了一個include指令來阻止上述AI爬蟲。我基於nginx-block-ai-bots.conf進行了配置,該檔案也作為我其他基礎設施的前端使用。
Mastodon文件中沒有關於如何做到這一點的具體說明——為什麼會有呢?——但對於那些尋求解決方案的人,希望這能有所幫助:
在你的Mastodon伺服器上,要麼克隆ai-robots-txt/ai.robots.txt倉庫以獲取相關的nginx-block-ai-bots.conf檔案,要麼編寫一個curl指令碼,透過cron作業每週抓取一次。
如果你按照Mastodon的Nginx安裝文件進行配置,那麼你很可能有一個/etc/nginx/sites-available/mastodon或類似的Nginx配置檔案(我的配置檔案基於域名,因為我是這樣配置虛擬主機的,所以你的情況可能不同,但它肯定在那裡)。
在該檔案中,有一個類似下面的server塊:
server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name example.com; ssl_protocols TLSv1.2 TLSv1.3; # 等等等等 }
在該server塊中寫入include指令,引用nginx-block-ai-bots.conf:
server { # 儘可能多地阻止AI爬蟲,這樣我就不用支付$$$$ include /your/path/here/nginx-block-ai-bots.conf; listen 443 ssl http2; listen [::]:443 ssl http2; server_name example.com; ssl_protocols TLSv1.2 TLSv1.3; # 等等等等 }
重新載入Nginx,例如systemctl reload nginx.server,或者根據你的伺服器設定進行。
就這樣。另外,你還可以更新${Mastodon目錄}/public/robots.txt,新增ai.robots.txt/robots.txt中的列表。
那天晚上,這阻止了爬蟲的浪潮,我再也沒有被驚醒。這是一個日益嚴重的問題——很大程度上是一場我最終會輸的追逐——與那些由缺乏經驗、輕蔑甚至赤裸裸剝削的公司或初創公司運營的不良爬蟲和不良規則作鬥爭。
你們這些駭客不應該這樣掃描網路。所以,舉起護盾吧。