Bien le bonsoir a tous et à toutes !
Et merci d'être tombé sur mon post ça fais toujours plaisir !

Tout d'abord je tiens a préciser que j'ai un tout petit niveau de programmation. (VB.Net)
Je commence sans plus tarder sur mon soucis ^^

Bon je suis actuellement entrain de "programmer" un petit tool qui es sensé se connecter sur un site, et récupérer des informations sur ce site.
J'ai donc installé "HTTP Header Live" sur Firefox et j'ai "sniffé" les requêtes web.

Et au final, il y as une première requête POST à effectuer, qui prend pour paramètres les identifiants de connexion du site.
J'ai donc finis par faire comme ceci :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
 
Dim Uri As New Uri("https://gameforge.com/api/v1/auth/thin/sessions")
Dim data = Encoding.UTF8.GetBytes("{" & Chr(34) & "identity" & Chr(34) & ":" & Chr(34) & "email@hotmail.fr" & Chr(34) & "," & Chr(34) & "password" & Chr(34) & ":" & Chr(34) & "passsss" & Chr(34) & "," & Chr(34) & "locale" & Chr(34) & ":" & Chr(34) & "fr_FR" & Chr(34) & "," & Chr(34) & "gfLang" & Chr(34) & ":" & Chr(34) & "fr" & Chr(34) & "," & Chr(34) & "platformGameId" & Chr(34) & ":" & Chr(34) & "07b3e4d5-f37e-440b-9aa5-b249121a6bfa" & Chr(34) & "," & Chr(34) & "gameEnvironmentId" & Chr(34) & ":" & Chr(34) & "5c71b04b-a0c3-4792-be4f-81f97c25d8a8" & Chr(34) & "," & Chr(34) & "autoGameAccountCreation" & Chr(34) & ":false}")
Dim result_post = SendRequest(Uri, data, "application/json", "POST")
 
MsgBox(result_post.ToString())
 
 
Private Function SendRequest(uri As Uri, jsonDataBytes As Byte(), contentType As String, method As String) As String
        Dim response As String
        Dim request As HttpWebRequest
        request = WebRequest.Create(uri)
        request.ContentLength = jsonDataBytes.Length
        request.ContentType = contentType
        request.Method = method
 
        Using requestStream = request.GetRequestStream
            requestStream.Write(jsonDataBytes, 0, jsonDataBytes.Length)
            requestStream.Close()
 
            Using responseStream = request.GetResponse.GetResponseStream
                Using reader As New StreamReader(responseStream)
                    response = reader.ReadToEnd()
                End Using
            End Using
        End Using
 
        Return response
    End Function
Et cela fonctionne car il me renvoie une erreur 403 si les identifiants sont incorrects, et s'ils sont corrects il me renvois :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
{"token":"c81ce5ef-0594-41cd-bcc4-41b4d37b6436","isPlatformLogin":true,"isGameAccountMigrated":false,"platformUserId":"1bfd8c6a-c492-4e36-9a2a-3f8515f4033e","isGameAccountCreated":false,"hasUnmigratedGameAccounts":false}

Donc de la je continue de "sniffer" ma liste de requêtes, et j'essaie de faire la deuxième requête, qu'il y as juste après la première POST, une requête GET sur "https://lobby.ikariam.gameforge.com/api/users/me".
Je l'effectues donc de cette manière :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
 
MsgBox(Get_request("https://lobby.ikariam.gameforge.com/api/users/me"))
 
 
Private Function Get_request(ByVal url As String, Optional ByVal cookies As String = "", Optional ByVal proxy As String = Nothing, Optional ByVal proxyport As Integer = Nothing, Optional ByVal timeout As Integer = 30000, Optional ByVal login As String = "", Optional ByVal pass As String = "") As String
        Dim reader As IO.StreamReader
        Try
            Dim hwebrequest As System.Net.HttpWebRequest = System.Net.HttpWebRequest.Create(url)
            hwebrequest.Timeout = timeout
            If proxy <> "" Then
                Dim hproxy As WebProxy
                hproxy = New WebProxy(proxy, proxyport)
                WebRequest.DefaultWebProxy = hproxy
            End If
            If login <> "" Then
                Dim hcredential As New System.Net.NetworkCredential(login, pass)
                hwebrequest.Credentials = hcredential
            End If
            If cookies <> "" Then
                hwebrequest.CookieContainer = New CookieContainer
                hwebrequest.CookieContainer.SetCookies(New Uri(url.Substring(0, url.IndexOf("/", 8))), cookies)
            End If
            Dim hwebresponse As System.Net.HttpWebResponse = hwebrequest.GetResponse
            reader = New IO.StreamReader(hwebresponse.GetResponseStream)
            Dim res As String = ""
            res = reader.ReadToEnd()
            reader.Close()
            hwebresponse.Close()
            Return res
        Catch ex As Exception
            Return ex.ToString
        End Try
    End Function
Mais le serveur me renvoie une erreur 403 (interdit) comme si je n'étais pas identifié par exemple ou autre chose... Alors es-que c'est une histoire de cookies ou autre chose.. c'est ça que je voulais vous demander...

Pour être plus précis je "sniff" a partir de la page : https://lobby.ikariam.gameforge.com/fr_FR/ qui es la page de connexion d'un jeu en ligne.
Dans le but de s’identifier et récupérer le nombre de points que je possède et les afficher sur le tool)


Voilà j'espère ne pas enfreindre les règles du forum en postant ceci, et j'espère que quelqu'un auras du temps pour moi.. car je suppose que si vous voulez m'aider il faudras vous inscrire sur le jeu et simuler une connexion probablement.
En tout cas merci beaucoup a vous qui avez lu, et a l'équipe developpez
++