client detection