En configuration proxy ou reverse-proxy, squid permet par le biais de ses ACL de filtrer les clients pour autoriser/bloquer leurs requêtes selon des points précis. Il peut alors être intéressant de bloquer les user agents non désirés, en les regroupant sous la forme d’une liste, à laquelle il va comparer la valeur fournie par chaque client. Etant donné que l’user agent peut ne pas être renseigné, une ACL  supplémentaire est nécessaire pour vérifier sa présence.

Voici la configuration que j’ai donc dû mettre en place :

acl HAS_USERAGENT browser ^.+$
acl BAD_USERAGENT browser -i "/etc/squid/bad_useragent.txt'

[...]

http_access deny !HAS_USERAGENT
http_access deny BAD_USERAGENT
http_access allow all

La liste des user agent bloqués est de ce type:

# more /etc/squid/bad_usergent.txt
# Misc
^C:
^Skype
^Notepad
^Wget
^ZmEu
woozweb-monitoring
^Shazam
^PS3Update-agent
^MailRuSputnik
^ebay_api
^PPTVUpdate
^EoAgence
^Facebook
^Shasta
^AOLToolbarMetric
^LineUp2
^DING
^ISUA
^android-sports
^sacore
^jupdate
^MPFv
^SCSDK
^DotMacKit
^Android-GData-Calendar
^Kontiki
^SeaPort
^Messenger
^Raptr
^Kontiki
^YahooMobileMessenger
^YahooMobileMail
^Windows-Update-Agent
^Windows-Media-Player
^Windows-RSS-Platform
^MSDW
Microsoft NCSI
^iTunes
^iPhoto
^GrowlHelperApp
^Apple-PubSub
^AppleSyndication
^AppleTV
^CaptiveNetworkSupport
^AntiVir
^AVGINET
^ZoneAlarm
^COMODO Internet Security
^Azureus
^MailRuSputnik