Bash scriptleri, web sunucularına gelen istekleri analiz ederek şüpheli User-Agent'leri tespit etmek ve raporlamak için oldukça kullanışlı araçlar haline gelebilir. Bu, özellikle otomatik botlar, scraperlar veya kötü niyetli saldırganların kullandığı belirli User-Agent'leri tespit etmek ve önlem almak amacıyla önemli bir ilk adım sağlar. Bu konuda temel prensip, log dosyalarını düzenli olarak taramak ve şüpheli User-Agent'leri ayırt etmek üzerine kurulur.
İlk aşamada, sunucu loglarındaki User-Agent satırlarını parse etmek gerekir. Genellikle Apache veya Nginx logları, belirli bir formatta User-Agent bilgisi içerir. Örneğin, aşağıdaki gibi bir satırdan User-Agent alınabilir:
1127.0.0.1 - - [10/Oct/2023:13:55:36 +0000] "GET /index.html HTTP/1.1" 200 1024 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
Burada, User-Agent kısmı son kısımdadır. Bu bilgiyi ayıklamak ve filtrelemek için
awk,
grep veya
cut gibi araçlar kullanılabilir.
Örneğin, şüpheli User-Agent'leri tespit etmek için, öncelikle sıkça rastlanan bot veya scraper User-Agent'leri listesini hazırlamak gerekir. Bu listeyi bir dosyada tutabilir veya doğrudan script içerisinde tanımlayabilirsiniz. Ardından, logları satır satır tarayarak, User-Agent satırlarının bu listede olup olmadığını kontrol edebilirsiniz.
İşte temel bir örnek:
[code]
#!/bin/bash
Şüpheli User-Agent listesi
suspect_agents=("Googlebot" "Bingbot" "Yahoo! Slurp" "MJ12bot" "AhrefsBot" "SemrushBot")
log_path="/var/log/nginx/access.log"
Logları tara ve şüpheli User-Agent'leri raporla
grep -i "User-Agent" "$log_path" | while read -r line; do
user_agent=$(echo "$line" | grep -oP '(?