il primo possiamo dire che non può essere determinato lato client

il secondo dipende da cosa devi rilevare, puoi fare controlli sul navigator.userAgent
o cmq sulle altre proprietà dell' oggetto navigator
ciao