Authentification sur un site (GET & POST requests)
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:
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:
{"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:
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
++