Hello !
Pour passer le temps, j'me suis dit que j'allais faire un créateur de comptes en WebRequest.
Comme toujours, j'passe des heures à comprendre et finalement c'était tout con, mais bon, j'apprends doucement.
J'ai donc fait un tout petit début, une simple requête POST vers un fichier JSON censé me retourner le token de session pour la suite.
Tout va bien, je reçois ma réponse, mais j'ai simplement le temps d'aller faire le tour du quartier avant de l'avoir. Je m'explique.
Tout ce que je fais, je créée une WebRequest, j'envoie une requête en POST, j'attend la réponse et je l'affiche, rien de plus simple.
Pourtant, il faut presque compter 20 secondes pour que tout cela soit fait. Incroyable.
J'ai donc mit en place quelques petits benchmarks rapides pour savoir d'où ça venait exactement, et voici le résultat :
Loading Image
Y'a de quoi se poser des questions en gros.
À titre de comparaison, un autre créateur de comptes fonctionnant (je pense) sur le même principe fait tout ça, l'envoi des premiers identifiants et la récupération du captcha en 1 seconde.
Quand on voit le benchmark, on se dit que ça vient forcément de chez eux, mais comment ça se fait qu'on a une telle différence (1 seconde -> 20 secondes) ?
Voici le bout de code que j'ai actuellement :
try
{
Random random = new Random();
int randomNumber = random.Next(0, 1000);
string postData = "{\"id\":" + randomNumber + ",\"method\":\"GetSteps\",\"params\":{\"lk\":null,\"sReferer\":\"https://secure.dofus.com/fr/creer-un-compte\",\"sFormId\":\"registerformincluded\",\"sLang\":\"fr\",\"bFullMode\":\"0\",\"aUnRequired\":[],\"aTemplates\":[]}}";
byte[] byteArray = Encoding.UTF8.GetBytes(postData);
WebRequest request = WebRequest.Create("https://secure.dofus.com/api/ankama/register.json");
request.Method = "POST";
request.ContentType = "application/json; charset=utf-8";
request.ContentLength = byteArray.Length;
Stream dataStream = request.GetRequestStream();
dataStream.Write(byteArray, 0, byteArray.Length);
dataStream.Close();
WebResponse response = request.GetResponse();
this.Log(((HttpWebResponse)response).StatusDescription, Color.Green);
dataStream = response.GetResponseStream();
StreamReader reader = new StreamReader(dataStream);
string responseFromServer = reader.ReadToEnd();
this.Log(responseFromServer, Color.Empty);
reader.Close();
dataStream.Close();
response.Close();
}
catch (Exception Ex)
{
this.Log(Ex.Message, Color.Red);
}
Quelqu'un a des explications ?
Merci d'avance !