Hola
@xne7esx.
La verdad, vi cuando usted publico el último mensaje a los segundos y sin dudarlo fui a responder, escribiendo, pare y me pregunte: "¿El servicio no usa una API?", lo digo porque el que válida la existencia de una dirección en tiempo real debe estar implicado "WebSockets" o "Ajax".
Pues sí, así es, utiliza Ajax para hacerlo y de hecho, la dirección URL es la misma que usted puso al principio "Los enlaces son solo para miembros.
Registrate o
iniciá sesiónLo busqué depurando un poco, pero tuve algunos problemas y aquí mis conjeturas.
Al depurar observe que la página está diseñada para hacer una petición Ajax a la dirección anteriormente mostrada, posteriormente la API se comportaria según los datos enviados. Los que yo envié en esa sesión son:
Encabezados:
headers = {
'User-Agent':'Mozilla/5.0 (X11; Linux i686; rv:71.0) Gecko/20100101 Firefox/71.0',
'Accept':'application/json, text/plain, */*',
'Accept-Language':'es-ES,es;q=0.8,en-US;q=0.5,en;q=0.3',
'Authorization':'Bearer qXeyJhbGciOiJIUzI1NiJ9.eyJjdCI6Ikd2VWgyMVh2NEZEdmY2dnZhNWpLM09scnlpd2dNa01FaXZoWmRuNkduXy0xeGpiaUlEb1k0eXI1VE1DYjBfQTdMYy1rQ2xqZnYxR1lsQ20wc3ZWN0FIRXNOUFVZbEdnekw1ZEREYlpHSlRqSTlhZUxuZXZpVUwtaXc1QVpZZ0NkSGlwckphcDRpOXlSUnFtYU1GWVhvVkozdG01M0Y0aE5JVVF3bV9ZWnJaMCIsInNjb3BlIjoicmVnaXN0cmF0aW9uIiwia2lkIjoiNWFmZjhlMTciLCJleHAiOjE1NzYyOTQ5OTQyNDgsIml2IjoicWdXOVBjekM1eThKWW0tU2dURGs0ZyIsImlhdCI6MTU3NjI4Nzc5NDI0OCwidmVyc2lvbiI6Mn0.L7UNHdDSelRBclCp8FPqJd3kPadDA4K5C2uoGe9b-c4',
'X-UI-APP':'@umreg/registration-app2/5.9.1',
'X-CCGUID':'56c2cfb3-789d-4a38-afc2-0e49ffe318d6',
'X-REQUEST-ID':'1e58a517-37e6-4e6f-961b-fa1f8aa2e9e4',
'Content-Type':'application/json',
'Origin':'https://signup.gmx.com',
'Connection':'keep-alive',
'Referer':'https://signup.gmx.com/',
}
Datos por el método POST:
data = {
"emailAddress":"[email protected]",
"countryCode":"US",
"suggestionProducts":["gmxcomFree"],
"maxResultCountPerProduct":"10",
"mdhMaxResultCount":"5",
"requestedEmailAddressProduct":"gmxcomFree"
}
Mientras que en CURL sería un poco diferente:
curl 'https://onereg-email-suggest.gmx.com/email-alias/availability' -H 'User-Agent: Mozilla/5.0 (X11; Linux i686; rv:71.0) Gecko/20100101 Firefox/71.0' -H 'Accept: application/json, text/plain, */*' -H 'Accept-Language: es-ES,es;q=0.8,en-US;q=0.5,en;q=0.3' --compressed -H 'Authorization: Bearer qXeyJhbGciOiJIUzI1NiJ9.eyJjdCI6Ikd2VWgyMVh2NEZEdmY2dnZhNWpLM09scnlpd2dNa01FaXZoWmRuNkduXy0xeGpiaUlEb1k0eXI1VE1DYjBfQTdMYy1rQ2xqZnYxR1lsQ20wc3ZWN0FIRXNOUFVZbEdnekw1ZEREYlpHSlRqSTlhZUxuZXZpVUwtaXc1QVpZZ0NkSGlwckphcDRpOXlSUnFtYU1GWVhvVkozdG01M0Y0aE5JVVF3bV9ZWnJaMCIsInNjb3BlIjoicmVnaXN0cmF0aW9uIiwia2lkIjoiNWFmZjhlMTciLCJleHAiOjE1NzYyOTQ5OTQyNDgsIml2IjoicWdXOVBjekM1eThKWW0tU2dURGs0ZyIsImlhdCI6MTU3NjI4Nzc5NDI0OCwidmVyc2lvbiI6Mn0.L7UNHdDSelRBclCp8FPqJd3kPadDA4K5C2uoGe9b-c4' -H 'X-UI-APP: @umreg/registration-app2/5.9.1' -H 'X-CCGUID: 56c2cfb3-789d-4a38-afc2-0e49ffe318d6' -H 'X-REQUEST-ID: 1e58a517-37e6-4e6f-961b-fa1f8aa2e9e4' -H 'Content-Type: application/json' -H 'Origin: https://signup.gmx.com' -H 'Connection: keep-alive' -H 'Referer: https://signup.gmx.com/' --data '{"emailAddress":"[email protected]","countryCode":"US","suggestionProducts":["gmxcomFree"],"maxResultCountPerProduct":"10","mdhMaxResultCount":"5","requestedEmailAddressProduct":"gmxcomFree"}'
Tuve algunos problemas no sé sí es que me bloquearon o es mis velocidades de conexión.
Alternativamente a la explicacion he creado un pequeño script en bash:
#!/usr/bin/env bash
declare -a params=($*)
declare -x email;
if [ ${#params[@]} -ne 1 ];then
echo -e "Sintaxis: ${params[0]} <Dirección de correo electrónico>"
exit 1
else
email=${params[0]}
fi
echo -e "Primera Petición:"
curl 'https://onereg-email-suggest.gmx.com/email-alias/availability' -X OPTIONS -H 'User-Agent: Mozilla/5.0 (X11; Linux i686; rv:71.0) Gecko/20100101 Firefox/71.0' -H 'Accept: */*' -H 'Accept-Language: es-ES,es;q=0.8,en-US;q=0.5,en;q=0.3' --compressed -H 'Access-Control-Request-Method: POST' -H 'Access-Control-Request-Headers: authorization,content-type,x-ccguid,x-request-id,x-ui-app' -H 'Referer: https://signup.gmx.com/' -H 'Origin: https://signup.gmx.com' -H 'Connection: keep-alive' -i
echo -e "Segunda Petición:"
curl 'https://onereg-email-suggest.gmx.com/email-alias/availability' -H 'User-Agent: Mozilla/5.0 (X11; Linux i686; rv:71.0) Gecko/20100101 Firefox/71.0' -H 'Accept: application/json, text/plain, */*' -H 'Accept-Language: es-ES,es;q=0.8,en-US;q=0.5,en;q=0.3' --compressed -H 'Authorization: Bearer qXeyJhbGciOiJIUzI1NiJ9.eyJjdCI6ImZhN0NOQlRlQkgtOWg4NmtMTndJbXB6ZXJYX0hlcElTNjJVWEVXQ1ppNjVnSDdnZ0s2YWpxdkt2dTdzVkNPbUMwc3pGRkVTVEI0Y01hNkdfYnFUekNGa2JXUFVtRjVHMGJob1ljaFhLLXl3OUZVcmVpMzFRNVlqdUgxMFlrX09KQTR4dExlQmY4R2k0TUlzMU9CRkRGckxHUlAzLVJMT2FFRVJuTjlVVG8zbyIsInNjb3BlIjoicmVnaXN0cmF0aW9uIiwia2lkIjoiNzllZjg4YTkiLCJleHAiOjE1NzY0MTUzNDY2NTYsIml2IjoiNjVCTmJlWWw1MWVhU041VEpROTdlUSIsImlhdCI6MTU3NjQwODE0NjY1NiwidmVyc2lvbiI6Mn0.CWcOW0NVyUKpJG0cM0rMjAxewJh6LatdTXo9Vj0uO7Y' -H 'X-UI-APP: @umreg/registration-app2/5.9.1' -H 'X-CCGUID: b0846f29-1527-4142-bb51-600d2864f070' -H 'X-REQUEST-ID: 40adec1b-bd05-4920-b74f-9ecf198b17f1' -H 'Content-Type: application/json' -H 'Origin: https://signup.gmx.com' -H 'Connection: keep-alive' -H 'Referer: https://signup.gmx.com/' --data '{"emailAddress":"'$email'","countryCode":"US","suggestionProducts":["gmxcomFree"],"maxResultCountPerProduct":"10","mdhMaxResultCount":"5","requestedEmailAddressProduct":"gmxcomFree"}' -i
OJO: No sé cuánto dure la funcionalidad del script, ya que hay que cambiar algunos parámetros y no he hecho muchas pruebas, cómo le dije por mis conexiones nefastas.
El modo de ejecución es el siguiente: bash <nombre del script>.sh <dirección del correo electrónico>
Ejemplo:
bash GMXXXChecker.sh [email protected]
La salida seria:
Primera Petición:
HTTP/1.1 200 OK
Date: Sun, 15 Dec 2019 11:39:34 GMT
Server: Apache
Strict-Transport-Security: max-age=31536000; includeSubDomains
Access-Control-Allow-Origin: https://signup.gmx.com
Access-Control-Allow-Credentials: true
Vary: Origin
Access-Control-Allow-Methods: HEAD, POST, GET, OPTIONS
Access-Control-Allow-Headers: authorization,content-type,x-ccguid,x-request-id,x-ui-app
Content-Length: 0
Connection: close
Segunda Petición:
HTTP/1.1 200 OK
Date: Sun, 15 Dec 2019 11:39:47 GMT
Server: Apache
Strict-Transport-Security: max-age=31536000; includeSubDomains
Access-Control-Allow-Credentials: true
Access-Control-Allow-Origin: https://signup.gmx.com
Vary: Origin
X-UI-VERSION: 2.5.25/2.5.25
X-UI-PROVIDED-IDENTITY: [email protected]
Content-MD5: k3V8C6dWKPHVMwlgVDCKpw==
cache-control: no-cache
X-REQUEST-ID: 40adec1b-bd05-4920-b74f-9ecf198b17f1
X-Content-Type-Options: nosniff
Content-Length: 292
Connection: close
Content-Type: application/json;charset=utf-8
{"requestedEmailAddress":"[email protected]","emailAddressAvailable":false,"suggestedEmailAddresses":{"gmxcomFree":["[email protected]","[email protected]","[email protected]","[email protected]","[email protected]","[email protected]","[email protected]","[email protected]","[email protected]","[email protected]"]},"mdhSuggestions":[]}
Me preocupa el hecho de que un atacante pueda confirmar con una lista de direcciones sí existen o no en este servicio

, pero creo que lo que hice podria cambiar al servicio (
creo); También eso solucionaria el problema de @xne7esx, pero igual no se fie del script hay que cambiar algunas cosas manualmente por cada sesión y no sé sí funcione cuando usted lo pruebe, pero yo le recomiendo que aprenda Python y Selenium.
~ DtxdF