Publi

Ejemplos para utilizar la API de GoDaddy para ver y editar los dominios que tenemos contratados de forma fácil

Godaddy
GoDaddy, ¡tú antes molabas! Hace unos años cuando lanzaban a menudo ofertas que podías aplicar en las renovaciones. Ahora, cuando registras un dominio nuevo, puedes conseguir un buen precio, pero cuando lo renuevas al año siguiente te encuentras con una grata sorpresa: no es muy barato.
El caso es que GoDaddy tiene sus ventajas (un nombre horrible, eso sí), lo primero es que permite transferir dominios entre usuarios de forma muy sencilla y es el preferido para la compra-venta de dominios y todo el tema de las subastas (porque también compraron Afternic, una empresa de reventa de dominios). Otro punto muy fuerte de GoDaddy (y que me encanta) es que su DNS se propaga rapidísimo, muy muy muy rápido, aquí en España, nada más cambiar un registro, en cuestión de pocos segundos, los cambios están propagados, cosa que con otros proveedores no sucede así. A estas alturas las propagaciones no tardan 72h como antiguamente, pero sí es verdad que he llegado a esperar 2h; o por ejemplo con 1and1 he llegado a tener que esperar algún día.
Antes de continuar, un pequeño comentario acerca de GoDaddy, no lo recomiendo para contratar dominios territoriales; yo mismo he tenido problemas con los .es, al no ser registradores oficiales de .es y tener que depender de un tercero para dichos dominios, la broma puede llegar a salir muy muy cara, sobre todo si estás trasladando el dominio.

Sistemas automáticos

Hace unos años tuve que programar un sistema automático para la modificación de las entradas DNS de dominios alojados en GoDaddy. Como no tenían API (o al menos no era accesible para todo el mundo, antes sólo era accesible para revendedores) tuve que hacer un sistema que se identificara en la página, como si se tratara de una persona, fuera a la web de edición de entradas DNS e hiciera los cambios. Con todo lo guarro que puede llegar a ser esto, y que, como era de esperar, tras un cambio en la interfaz y un poco en el sistema de edición web, este programa dejó de funcionar.

Hace poco me surgió una necesidad parecida, tenía que trasladar muchísimos subdominios de varios dominios, y necesitaba llevarme esa información de GoDaddy, por lo que me puse a investigar y ahora sí que tienen una API para ese tipo de cosas (y para muchas más que dejaré por aquí en un enlace).

Obtener nuestra API Key

Lo primero es obtener nuestro API Key y API Secret. Para ello nos dirigiremos a la web de desarrolladores de GoDaddy. Ahí nos dirá de crear una clave de Test, la podemos crear si queremos, y cuando esto termine podremos crear una clave de Producción, que es la que nos interesa. Le damos un nombre y anotamos los detalles (Key y Secret). Tenemos que guardarlos porque la clave no la podremos volver a ver (aunque sí que podemos renovarla luego).
Screenshot 31-10-2016-201004
Ya tenemos nuestra clave y podremos hacer peticiones. Se comporta como una API REST y podremos hacer peticiones desde cualquier lenguaje (C/C++/PHP/Java/JS/…). Aquí, como ejemplo vamos a probar desde nuestra terminal. Eso sí, luego podemos hacer scripts para las distintas peticiones, y nos puede quedar todo muy bien.

Antes de ejecutar nada

Como vamos a probar desde la terminal (luego con esto podemos crear un script para manejar todo esto rápidamente), vamos a crear dos variables, una para nuestra API Key y otra para nuestro API Secret:

KEY=”xyzLlxcks_E$PAQE1hGqyYtb1H1234B”
SECRET=”AeE90gTiQc2xXov6z5aqr0″

De esta forma cuando hagamos las peticiones sólo tendremos que llamar a las variables para plasmar esta información y todo se entenderá mucho mejor. De aquí en adelante, en todos los ejemplos, supondré que se ha escrito esto.

La clave de cada petición

Para estos ejemplos haremos las peticiones con cURL. Por supuesto este programa lo podemos utilizar como biblioteca en muchos lenguajes de programación y tener un resultado similar. Es decir, podemos crear un programa en C, PHP, Ruby, Python, o como nos dé la gana que interactúe con GoDaddy.

Cada petición de modo general se hará de la siguiente manera:

curl -sL [-Xtipo] -H”Authorization: sso-key ${KEY}:${SECRET}” -H”Content-Type: application/json [URL] [-d’datos’]

Analicemos los argumentos de cURL:

  • -s : Modo silencionso, oculta barras de progreso y mensajes extra. Para que no se llene la pantalla de información.
  • -L : Si cURL llega a una redirección, la seguirá.
  • -X : Indita el tipo de petición. Por defecto, las peticiones serán GET o POST si incluimos -d ; lo veremos mejor en los ejemplos.
  • -H : Inserta una cabecera específica. Debemos incluir cabeceras para autorización y tipo de contenido. La primera es para que GoDaddy nos reconozca como usuarios (donde introduciremos la API Key y el API Secret). La segunda, para que sepa cómo le vamos a pasar los datos (en caso de usar -d), si no queremos ponerlo, no lo ponemos, no pasa nada.
  • -d : Indica que le estamos enviando información (lo usaremos con POST, PUT, PATCH…

Por supuesto, podemos utilizar los modificadores de cURL que queramos, como –compressed o -vvv (si queremos enterarnos de todo lo que enviamos y recibimos).

Si queremos, podemos utilizar el programa jq, para visualizar o analizar el contenido JSON.

Pidiendo los dominios

Si queremos pedir un listado de todos los dominios que tenemos en GoDaddy, debemos hacer lo siguiente:

curl -Ls -H”Authorization: sso-key ${KEY}:${SECRET}” https://api.godaddy.com/v1/domains/ | jq
[
{
“domainId”: 1234567,
“domain”: “dominio1.es”,
“status”: “TRANSFERRED_OUT”,
“expires”: “2015-02-20T22:00:00Z”,
“expirationProtected”: false,
“holdRegistrar”: false,
“locked”: true,
“privacy”: false,
“renewAuto”: true,
“renewable”: false,
“transferProtected”: false
},
{
“domainId”: 134568,
“domain”: “dominio2.com”,
“status”: “ACTIVE”,
“expires”: “2017-01-11T22:00:00Z”,
“expirationProtected”: false,
“holdRegistrar”: false,
“locked”: true,
“privacy”: false,
“renewAuto”: true,
“renewable”: false,
“transferProtected”: false
}
]

Si no utilizamos jq nos dará el mismo resultado, pero un poco más feo (sin espacios y todo en una línea).

Pidiendo todos los datos de un dominio

Esto nos dará información como contactos técnico, administrativo, registrante, correo, authcode, servidores de nombres y configuración del dominio. (Es muy largo y no voy a poner

curl  -Ls -H”Authorization: sso-key ${KEY}:${SECRET}” https://api.godaddy.com/v1/domains/dominio2.com/ | jq

Pidiendo todos los registros DNS de un dominio

Esto nos dará información como contactos técnico, administrativo, registrante, correo, authcode, servidores de nombres y configuración del dominio. (Es muy largo y no voy a poner

curl  -Ls -H”Authorization: sso-key ${KEY}:${SECRET}” https://api.godaddy.com/v1/domains/dominio2.com/records/ | jq
{
“type”: “A”,
“name”: “@”,
“data”: “111.11.1.111”,
“ttl”: 600
},
{
“type”: “A”,
“name”: “subdominio”,
“data”: “77.77.77.123”,
“ttl”: 3600
},
{
“type”: “CNAME”,
“name”: “www”,
“data”: “@”,
“ttl”: 3600
},
{
“type”: “CNAME”,
“name”: “mail”,
“data”: “@”,
“ttl”: 3600
},
{
“type”: “MX”,
“name”: “@”,
“data”: “mail.dominio2.com”,
“priority”: 10,
“ttl”: 3600
}
]

Insertar un nuevo subdominio

Si queremos insertar o modificar un subdominio podemos hacer lo siguiente:

curl  -Ls -H”Authorization: sso-key ${KEY}:${SECRET}” -H”Content-type: application/json” https://api.godaddy.com/v1/domains/dominio2.com/records/A/nuevosubdominio -d ‘{ “data”: “123.132.123.132”, “ttl”: 3600 }’

En este caso, en “data” especificaremos la IP a la que dirigirá el dominio, y en ttl el tiempo que el dominio permanecerá almacenado en los servidores. Reducir este tiempo, reduce el tiempo de propagación, pero un tiempo muy reducido puede ralentizar las peticiones de nuestros usuarios (3600 es un buen valor).

Esto lo podemos utilizar para crear un subdominio que apunte a la IP que tenemos en casa, en nuestra conexión, que suele ser dinámica. En este caso, cuando nuestro proveedor nos cambie la IP, podemos hacer una nueva llamada a esta API actualizando la IP a la que apunta nuestro subdominio.

Verificar si un dominio está libre

Es una buena forma de verificar dominios. Siempre podemos hacer whois a los dominios directamente, aunque dependiendo del TLD debemos atacar a sistemas diferentes. Además, desde esta API nos permiten saber el precio, incluso comprarlos (hay que pensar que esto estaba pensado para revendedores). Como idea, si estás pensando en montar una empresa o realizar un proyecto importante, está bien verificar nombres de dominio, y verificar muchos nombres vía web es un trabajo muy pesado cuando podemos hacer un script que automatice muchas peticiones y verifique qué dominios están libres para comprar.

curl  -Ls -H”Authorization: sso-key ${KEY}:${SECRET}” https://api.godaddy.com/v1/domains/available?domain=dominioperdido.com | jq
{
“available”: true,
“domain”: “dominioperdido.com”,
“definitive”: false,
“price”: 11990000,
“currency”: “USD”,
“period”: 1
}

El precio viene un poco extraño, hay que dividirlo por 1000000 (un millón), serían 11.99 ; si el dominio está cogido, available valdrá false.

Millones de operaciones más con esta API

Aquí he puesto varios ejemplos, pero en la documentación oficial de la API podemos encontrar todas las operaciones disponibles tanto de dominios, pedidos o servicios en la nube.

Foto principal: GoDaddy es una marca registrada y yo no tengo nada que ver con ellos.

También podría interesarte....

Leave a Reply