Puedes obtener las provincias con geoip, el problema es que la base de datos de provincias es de pago.
La base de datos de países es gratuita, y la puedes descargar de la web oficial:
http://www.maxmind.com/app/geoip_country (incluye ejemplos en php)