¿Cómo get el país del usuario para una request HTTP en Back-end?

Estoy tratando de get el país donde el usuario está enviando la request a mi server.

Hasta ahora he encontrado esas soluciones:

https://github.com/fiorix/freegeoip

https://github.com/maxmind/GeoIP2-java

Estas soluciones están utilizando la database MaxMind GeoIP2 Country Database que tiene una licencia y para este proyecto específico tengo restricciones con las Bibliotecas (aspectos legales debido al negocio)

He encontrado algunos temas que mencionan que Google API puede proporcionar este service, pero eso no me interesa, ya que quiero una solución que pueda alojar yo mismo y que se implementa con Java o Kotlin.

¿Alguien sabe una solución diferente a la mencionada (que se ejecuta en el back-end)?

No estoy seguro de si, desde el punto de vista de la architecture, esta es una buena solución, pero podría instalar una herramienta de command-line en su server back-end y usarla.

Por ejemplo: http://manpages.ubuntu.com/manpages/zesty/en/man1/geoiplookup.1.html

También hay alguna API web gratuita que podría usar, eche un vistazo aquí

He codificado un pequeño service (aunque es necesario refactorizarlo) que devuelve el país según los datos que he adquirido de http://ipverse.net/

Debe ser libre de licencia, pero corrígeme si estoy equivocado. Según el website, los cinco RIR grandes proporcionan los datos.

El website actualiza sus datos ~ 5am. El trabajo de Cron que actualiza los bloques IP está progtwigdo a las 6 a. M. Los datos deberían ser precisos, supongo.

https://github.com/jaecktec/LicenseFreeGeoIpLocation

Siéntase libre de agregar opiniones / sugerencias.

  • ¿Por qué @Primary no funciona para las classs de Kotlin a veces?
  • class de datos kotlin HttpMessageNotReadableException
  • Cargue la configuration xml del muelle de forma dinámica
  • Spring Boot 2 y Kotlin (con Maven)
  • Reactor Spring 5 - Emisión de elementos cada 1 segundo
  • Mockito / Powermock no funciona como se esperaba con Kotlin
  • ¿Qué es una propiedad abierta? ¿Por qué no puedo hacer que su setter sea privado?
  • La variable de instancia de Kotlin es nula cuando se accede por la class proxied de Spring
  • Primavera @Autocableado en Kotlin
  • Cómo crear una consulta hql con left join usando el campo desde el object que se extiende
  • Kotlin & Hibernate IllegalArgumentException: no se puede establecer el campo String Job.name en Job