Descobrindo Coisas com o JavaScript

Gostaria de saber como é possível, via JavaScript,

. “Descobrir coisas” como o Browser do usuário, seu Sistema Operacional, IP, país etc?
. Se existem códigos/frameworks/bibliotecas “prontas” que fazem isso? Ou se é preciso fazer tudo “na unha”?
. Como persistir dos “dados descobertos” em BD?

Em tempo: eu não quero um “produto”, um “google analytics” da vida; quero é aprender a capturar esses dados por conta própria.

Imagino que isso é “moleza” para quem conhece JavaScript; como não conheço, não sei nem por onde começar a pesquisar, e qualquer ajuda é bem-vinda…