在一般瀏覽網站上,User Agent 是 User 端回傳給 Web Server 的瀏覽器和系統訊息,例如 MSIE 8.0 Windows NT 6.1
在 access.log 常見出現的訊息有以下
有從Chrome來的 192.168.1.10 - - [22/Jun/2015:03:43:26 +0800] "GET / HTTP/1.0" 200 0 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; AppleWebKit/537.36 (KHTML, like Gecko); Chrome/30.0.1599.101 Safari/537.31 也有從IE來的 192.168.1.11 - - [22/Jun/2015:12:00:35 +0800] "GET / HTTP/1.0" 200 21612 "-" "Mozilla/4.0 (compatible; MSIE 7. 0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; QQDownload; SE 2.X MetaSr 1.0)"
如果你是開放式的網站,就有可能會遇到沒有 User Agent 的訪問
通常沒有 User Agent 訪問,很有可能是垃圾程式、攻擊程式在嘗試 try connection
面對這樣的問題,從 Nginx 可以做一些簡單的判斷,讓 User Agent 為空值時導向 404 或我們想要告知的頁面
在 nginx.conf 加入以下
location / { if ($http_user_agent ~ "^$"){ return 404; } }
return 的方式可以自行調整
如果是 Apache 可以在 .htaccess 加入以下
RewriteCond %{HTTP_USER_AGENT} ^$ RewriteRule ^(.*)$ - [F,L]