網站技術教學專區

網域、主機、網站設計與 SEO 架構解析

網站被攻擊了嗎?從存取紀錄分辨正常訪客、爬蟲與攻擊掃描

PHP2Shell 漏洞公開之後,很多網站主心裡最想知道的,不是「要怎麼修」,而是「我的網站到底有沒有被打?」

這個問題其實有地方可以查:主機的存取紀錄。網站收到的每一個請求,不管是真人訪客、Google 的爬蟲,還是自動掃描漏洞的程式,都會在這裡留下一行。只是多數人從來沒打開過,打開了也看不懂那一長串英文和數字。

這篇教你三件事:存取紀錄去哪裡找、一行紀錄怎麼讀,以及怎麼從紀錄裡分辨正常訪客、爬蟲和攻擊掃描。最後也會說明,看到可疑紀錄時哪些需要處理、哪些其實不用擔心。

(文中的紀錄範例都是示意用,IP 使用文件範例專用的位址,網域以 example.com 代替。)

存取紀錄是什麼?為什麼 Google Analytics 看不到這些

存取紀錄(access log)是網頁伺服器自動寫下的流水帳。每當有人或程式向網站要一個東西,不管是一個頁面、一張圖片還是一支程式,伺服器就記一行:誰來的、什麼時間、要了什麼、結果如何。

很多人會問:我已經有 Google Analytics 了,為什麼還要看這個?

因為兩者看到的根本是不同的東西。Google Analytics 靠的是嵌在網頁裡的追蹤程式碼,只有真的用瀏覽器打開網頁、而且執行了那段程式碼的訪客,才會被記到。爬蟲和掃描程式通常不會執行網頁裡的程式碼,所以在 Google Analytics 裡完全隱形。

換句話說,Google Analytics 告訴你「有多少人來看網站」,存取紀錄告訴你「有多少東西來敲門」。想知道網站有沒有被掃描、被攻擊,只能看後者。

流量分析工具只看得到真人訪客,存取紀錄連爬蟲和掃描程式都會記下

在 cPanel 哪裡找

cPanel 的「測量」區塊裡有兩個相關功能:

  • 訪客:直接在網頁上列出最近的請求,適合快速看一眼。
  • 原始存取(Raw Access):下載完整的紀錄檔,通常是壓縮過的純文字,解壓後用記事本就能打開。要仔細查的時候用這個。

紀錄保留多久依主機設定而不同,如果想查的是幾天前的事,要早點下載。cPanel 其他功能的位置可以參考〈cPanel 新手教學〉。

看懂一行紀錄

打開紀錄檔,每一行大概長這樣:

203.0.113.25 - - [22/Oct/2026:10:15:32 +0800] "GET /2026/09/21/what-is-ssl/ HTTP/2.0" 200 18432 "https://www.google.com/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) Chrome/141.0"

看起來很亂,但拆開來只有七個欄位:

欄位 範例 意思
來源 IP 203.0.113.25 請求是從哪個位址來的
時間 22/Oct/2026:10:15:32 +0800 請求的時間,+0800 代表台灣時區
請求方式 GET GET 是讀取,POST 是送出資料(例如送出表單、登入)
請求路徑 /2026/09/21/what-is-ssl/ 要的是網站上哪個東西
狀態碼 200 伺服器的回應結果,最重要的欄位之一
來源頁面 https://www.google.com/ 訪客是從哪裡點過來的,直接輸入網址的話會是 –
用戶代理 Mozilla/5.0 … Chrome/141.0 對方自稱是什麼瀏覽器或程式

判讀時最常用的是狀態碼。記住這幾個就夠了:

  • 200:成功,對方拿到了他要的東西
  • 301、302:轉址,對方被導到別的網址
  • 403:拒絕,伺服器或防火牆不讓他看
  • 404:找不到,網站上沒有這個東西
  • 500:伺服器出錯,網站程式在處理時發生問題

三種訪客在紀錄裡長什麼樣

一般訪客:一個頁面帶出一串請求

真人用瀏覽器打開一個頁面時,瀏覽器會在一兩秒內接著要一堆東西:樣式檔、程式檔、每一張圖片。所以在紀錄裡,一般訪客的特徵是同一個 IP 在很短的時間內出現一小串請求,路徑都是網站上真實存在的檔案,狀態碼幾乎都是 200。

來源頁面欄位通常有東西,例如 Google 搜尋、Facebook,或是網站內的其他頁面。看完一頁後,隔幾十秒或幾分鐘才會出現下一頁,這是人在閱讀的節奏。

搜尋引擎與 AI 爬蟲:自報身分,步調穩定

正規的爬蟲會在用戶代理欄位寫明自己是誰,例如 Googlebot、bingbot,或是各家 AI 公司的爬蟲名稱。它們的特徵是:

  • 大多只要網頁本身,不太要圖片和樣式檔
  • 會先讀網站根目錄的 robots.txt,看哪些地方可以抓
  • 請求的間隔比較規律,不會一秒內連發幾十次

robots.txt 怎麼寫、怎麼影響爬蟲,在〈robots.txt 與 sitemap.xml 是什麼?收錄的兩個關鍵檔案〉有完整說明。

要注意的是,用戶代理是對方自己填的,任何程式都可以假冒 Googlebot。Google 有公開驗證方式:把那個 IP 反查回去,真正的 Googlebot 會對應到 Google 自己的網域。看到自稱 Googlebot、卻在瘋狂試登入頁面的,幾乎可以確定是冒牌的。

自動掃描程式:專找網站上沒有的東西

掃描程式的目的不是看內容,而是找漏洞。它會拿著一份清單,挨家挨戶去試「常見的後台路徑」「常見的備份檔名」「有已知漏洞的外掛路徑」,看哪個網站有回應。

所以掃描在紀錄裡非常好認:

198.51.100.77 - - [22/Oct/2026:03:12:01 +0800] "GET /backup.zip HTTP/1.1" 404 0 "-" "python-requests/2.32"
198.51.100.77 - - [22/Oct/2026:03:12:01 +0800] "GET /old/ HTTP/1.1" 404 0 "-" "python-requests/2.32"
198.51.100.77 - - [22/Oct/2026:03:12:02 +0800] "GET /wp-content/plugins/(某外掛的舊版路徑)/ HTTP/1.1" 404 0 "-" "python-requests/2.32"
198.51.100.77 - - [22/Oct/2026:03:12:02 +0800] "POST /xmlrpc.php HTTP/1.1" 403 0 "-" "python-requests/2.32"
198.51.100.77 - - [22/Oct/2026:03:12:03 +0800] "POST /wp-login.php HTTP/1.1" 200 4521 "-" "python-requests/2.32"

(以上為示意)

從這幾行可以看出掃描的典型特徵:

  • 同一個 IP、每秒好幾次,人不可能點這麼快
  • 大量 404:要的東西網站上根本沒有,因為它不是在看你的網站,是在照清單亂試
  • 來源頁面是空的,沒有人從哪裡點過來
  • 用戶代理很可疑:程式庫的名稱、空白,或是一個很舊的瀏覽器版本
  • 時間常在半夜,因為掃描程式不睡覺
  • 反覆對登入頁面送出 POST,這是在試帳號密碼

一般訪客、搜尋引擎爬蟲與自動掃描程式在紀錄中的不同樣貌

看到掃描紀錄,代表網站被入侵了嗎?

不代表。這是最需要先釐清的一點。

只要網站連得上網路,每天都會被掃描,這跟網站大小、有沒有名氣都沒關係。打開紀錄看到一堆奇怪的請求,是正常現象,不是出事的證明。重點不是有沒有人來敲門,而是門有沒有被打開。

判斷的方法是看狀態碼,再對照那個路徑在網站上存不存在:

紀錄的樣子 代表什麼 需要處理嗎
大量請求不存在的路徑,回應 404 掃描程式在亂試,什麼都沒找到 不用
請求被回應 403 被伺服器或防火牆擋下 不用,代表防護有在運作
同一個 IP 對登入頁面大量 POST 有人在暴力破解密碼 確認有啟用兩階段驗證與登入次數限制
請求一個你不認得的 PHP 檔,回應 200 網站上存在一個你沒放的檔案,而且能被執行 要,可能已被植入後門
同一段時間大量 500 錯誤 網站程式被異常請求弄出錯 要查原因,可以把紀錄交給主機商

表格裡最需要警覺的是第四列。正常情況下,掃描程式要的檔案在你的網站上不存在,所以會得到 404。如果某個你從來沒建立過的檔案被成功讀取,就代表它真的在你的網站上,這時候要當成可能已被入侵處理,步驟可以參考〈網站被駭怎麼辦〉。

像 PHP2Shell 這種漏洞,紀錄看得出來嗎?

只能看出一部分,這點要誠實說。

PHP2Shell 這類漏洞出在 PHP 本身,攻擊發生在 PHP 處理請求的階段。在存取紀錄裡,攻擊請求可能就只是一行看起來很普通的 POST,請求的也是網站上真實存在的頁面,光看那一行很難和正常的表單送出分辨。

可能的線索是一些異常的組合:例如某個 IP 對根本沒有表單的頁面大量送出 POST、請求的資料量異常大,或是緊接著出現一連串 500 錯誤。但這些都只是「值得懷疑」,不是確定的證據。

從主機存取紀錄判斷網站是否被攻擊

這也是為什麼面對這類漏洞,修補比監看重要得多。紀錄是事後檢查的工具,真正能擋住攻擊的是主機端把 PHP 更新到修補版本。這次事件的來龍去脈與網站主該確認的事,整理在〈PHP2Shell 漏洞是什麼?用共用主機的網站該確認的 4 件事〉。

看到可疑紀錄該怎麼做

1. 先看狀態碼,別急著封鎖

大部分可疑紀錄都是 404 和 403,代表攻擊沒有得逞。不需要每看到一個奇怪的 IP 就去處理,那會做不完。

其中的 403,很多就是主機或雲端的防火牆擋下來的。防火牆擋得住哪些攻擊、擋不住哪些,在〈網站防火牆 WAF 是什麼?能擋什麼、擋不住什麼,為什麼會擋到自己〉有完整說明。

2. 單一 IP 狂刷,可以暫時封鎖

cPanel 的「安全性」區塊有「IP 封鎖」功能,可以擋掉特定 IP。但要有心理準備:掃描程式常常換 IP,封一個還有下一個,這只適合處理「同一個 IP 一直刷、而且影響到網站速度」的情況。

3. 有人在試密碼,補強登入防護

啟用兩階段驗證、限制登入失敗次數、不要用 admin 當帳號名稱。做好這三件事,暴力破解基本上就沒有用了。

4. 網站變慢,先確認是不是被掃描拖累

大量的掃描請求也會吃掉主機資源。如果網站變慢的時間點和紀錄裡的大量請求重疊,原因可能就在這裡。判斷網站慢是網站還是主機的問題,可以參考〈網站速度慢怎麼辦〉。

5. 看不懂的,把那幾行交給主機商

不需要自己看懂每一行。把可疑的幾行紀錄連同時間一起交給主機商,對方從伺服器端能看到的資訊比你多,判斷會快很多。

結語:紀錄讓你知道發生了什麼,但不能代替防護

存取紀錄最大的價值,是讓「網站有沒有被打」這個問題有地方可以查,而不是只能靠猜。看懂之後你會發現,每天來敲門的掃描程式多得驚人,但絕大多數都敗在 404 和 403。

真正要在意的,是那些不該成功卻成功了的請求。至於防護本身,還是要回到最基本的幾件事:主機端修補要即時、網站程式要更新、密碼要有兩階段驗證。如果你在紀錄裡看到看不懂的東西,或想確認網站是否曾被入侵,歡迎與我們聯絡;5NET 的虛擬主機方案也都可以在 cPanel 裡直接下載存取紀錄。

近期文章

自己做太花時間?

5NET 從 2000 年開始經營主機與網站,SEO 從關鍵字選定到技術修正一手包辦。告訴我們你想排的關鍵字,免費評估競爭現況與預估時程。

了解SEO排名優化

文章分類

標籤雲

5NET專業 SEO 服務

關鍵字策略全面規劃

5NET SEO 關鍵字服務,從搜尋意圖出發,深入分析產業關鍵字與競品布局,協助網站精準鎖定高曝光、高轉換的搜尋字詞。