Necesito determinar el país de un usuario, y no es necesario que sea muy preciso (probablemente sea suficiente hacerlo bien el 90% de las veces). Me di cuenta de que la zona horaria devuelta por JavaScript podría funcionar.
Ejemplo:
console.log(Intl.DateTimeFormat().resolvedOptions().timeZone);
Volverá America/Toronto o America/New_York , lo que puede ayudarme a diferenciar a un canadiense de un estadounidense.
Claro, entiendo que esto se basa en las preferencias del usuario, no en su ubicación real. Pero, ¿hay una gran trampa que no estoy viendo en este momento usando esta técnica?
Después de investigar un poco, resulta que depende del escenario (era predecible). Para mis escenarios, los estadounidenses obtienen la zona horaria correcta más del 95 % del tiempo, mientras que los canadienses la obtienen más del 90 %.
La forma de probar esto fue guardar la zona horaria JS del usuario en Google Analytics y luego compararla con su ubicación.
Entonces, su millaje puede variar, pero para mi caso de uso, esto fue más que suficiente.