Aller au contenu

« Documentation de l'API Jeuxvideo.com » : différence entre les versions

Documentation pour l'API v4 (incomplète)
m (Remplacement de texte : « TableauCatégoriesFonctionnementJVC » par « TableauCatégorieFonctionnementJVC »)
(Documentation pour l'API v4 (incomplète))
Ligne 5 : Ligne 5 :
L'ancienne API était hébergée sur le sous-domaine "ws". Désormais, l'API est hébergée sur le sous-domaine "api".
L'ancienne API était hébergée sur le sous-domaine "ws". Désormais, l'API est hébergée sur le sous-domaine "api".


== Classe PHP exploitant l'API ==
=API v4=
L'API v4 utilise un système de sécurité afin que même personne ne puisse accéder à l'API. Pour pouvoir accéder y accéder, l'''Header'' de vos requêtes devra toujours être de la forme :
 
<code>Jvc-Authorization: "'''''<u>header"</u>'''''</code>
 
<code>"User-Agent": "JeuxVideo-Android/267"</code>
 
<code>"Content-Type" : "application/json"</code>
 
''Où '''header''''' est égal à une chaîne de charactère de cette forme : ''"PartnerKey='''<u>partner_key</u>''', Signature='''<u>signature</u>''', Timestamp='''<u>date</u>'''".''
 
Voici un script python qui construit la signature
 
import hashlib
 
from datetime import datetime
 
'''''<u>partner_key</u>''''' = "''550c04bf5cb2b"''
 
'''<u>date</u>''' = datetime.utcnow().isoformat()
 
'''''<u>signature</u>''''' = hashlib.sha256(f"{self.partner_key}\n{date}\n{method}\napi.jeuxvideo.com\n/v{self.api_version}/{path}"
 
.encode()).hexdigest()
 
=== API endpoints ===
Url de base : ''<nowiki>https://api.jeuxvideo.com/v4/</nowiki>''
 
{| class="wikitable mw-collapsible"
|+''POST''
!NOM
!URL
!METHOD
!PARAMS
!BODY
|-
|addComment
|contents/{contentID}/comments
|POST
|'''contentID''' str
|<code>"content": "commentaire"</code>
|-
|addCommentVote
|contents/{contentID}/comments/{commentID}/vote
|POST
|'''contentID''' str
'''commentID''' str
|<code>"type": 1 ou -1</code>
|-
|addFavorisGames
|accounts/{accountId}/favorites/games
|POST
|'''accountId''' str
|<code>"games": [{</code>
 
<code>"id": 1,</code>
 
<code>    "machine": 100</code>
 
<code>}]</code>
 
|-
|addReply
|contents/{contentID}/comments/{commentID}/answers
|POST
|'''contentID''' str
'''commentID''' str
|<code>"content": "Super jeu !"</code>
|-
|addReview
|games/{id}/{machine}/reviews/users
|POST
|'''id''' int
'''machine''' str
|<code>"content": "Super jeu !",</code>
 
<code>"mark": 4,</code>
 
<code>"onProfile": true</code>
|-
|login
|accounts/login
|POST
|
|"alias": "pseudo",
 
"password": "mot_de_passe"
|-
|logout
|accounts/logout
|POST
|
|
|-
|register
|accounts/register
''l'<nowiki/>'''Header''' doit inclure'' : <code>"Jvc-Auth-Token" : str</code>
|POST
|
|"email": "email",
 
"alias": "pseudo",
 
"password": "motdepasse",
 
"optin": false
|-
|reinitPassword
|accounts/reset
|POST
|
|<code>"alias": "pseudo",</code>
 
<code>"password": "nouveau",</code>
 
<code>"session": "",</code>
 
<code>"captcha": {</code>
 
<code>    "imageKey": "",</code>
 
<code>    "imageName": "",</code>
 
<code>    "imageValues": [</code>
 
<code>        "val1",</code>
 
<code>        "val2" ]}</code>
|-
|reportAccount
|accounts/{accountId}/report
|POST
|'''accountId''' str
|<code>"reason": 1,</code>
 
<code>"message": "Raison"</code>
|-
|reportComment
|contents/{contentID}/comments/{commentID}/report
|POST
|'''contentID''' str
'''commentID''' str
|"reason": 1,
 
"message": "Raison",
 
"captcha": {
 
    "session": "clé"
 
    "clé_captcha": "Valeur"
 
    "valeur_captcha": "Valeur"
 
}
|-
|reportReview
|games/{id}/{machine}/reviews/users/{reviewId}/report
|POST
|'''id''' int
'''machine''' str
'''reviewId''' int
|"reason": 1,
 
"message": "Raison",
 
"captcha": {
 
"session": "clé"
 
"clé_captcha": ""
 
"valeur_captcha": ""
 
}
|-
|restoreComment
|contents/{contentID}/comments/{commentID}
|POST
|'''contentID''' str
'''commentID''' str
|"content" : "comment"
|-
|validateAccount
|accounts/confirm
|POST
|
|<code>"id": 123,</code>
<code>"hash": "hash",</code>
 
<code>"alias": "pseudo",</code>
 
<code>"password": "mdp"</code>
|-
|validateSignature
|general/stores/android/validation
|POST
|
|<code>"signature": "signature",</code>
<code>"signed_data": "signed_data"</code>
|}
 
 
==Classe PHP exploitant l'API==


-> https://pastebin.com/LWNDQDKy
-> https://pastebin.com/LWNDQDKy
Ligne 11 : Ligne 214 :
Cette classe est incomplète et sera possiblement rendue obsolète dans le temps.
Cette classe est incomplète et sera possiblement rendue obsolète dans le temps.


= Ancienne API =
=Ancienne API =


Le contenu qui va suivre concerne l'ancienne API, qui n'existe plus. Si quelqu'un est courageux pour de nouveau documenter l'API actuelle de JV, nous en serions tous ravis.
Le contenu qui va suivre concerne l'ancienne API, qui n'existe plus. Si quelqu'un est courageux pour de nouveau documenter l'API actuelle de JV, nous en serions tous ravis.


== Identification ==
==Identification==
L'API utilise le nom de domaine [https://ws.jeuxvideo.com/ ws.jeuxvideo.com]. Pour y accéder, il faut utiliser un des identifiants ci-dessous (authentification HTTP basique).
L'API utilise le nom de domaine [https://ws.jeuxvideo.com/ ws.jeuxvideo.com]. Pour y accéder, il faut utiliser un des identifiants ci-dessous (authentification HTTP basique).


Ligne 23 : Ligne 226 :
|
|
! scope="col" | Utilisateur
! scope="col" | Utilisateur
! scope="col" | Mot de passe
! scope="col" |Mot de passe
|-
|-
! scope="row" | Android 1.0
! scope="row" | Android 1.0
| appandr
|appandr
| e32!cdf
|e32!cdf
|-
|-
! scope="row" | Android 2.0.3
! scope="row" |Android 2.0.3
| app_and_gnw
| app_and_gnw
| FC?4554?
| FC?4554?
|-
|-
! scope="row" | Android 2.5
! scope="row" | Android 2.5
| app_and_ms
|app_and_ms
| D9!mVR4c
| D9!mVR4c
|-
|-
! scope="row" | Android MP
! scope="row" |Android MP
| app_ag_jvmp
| app_ag_jvmp
| LXnb45=d#
|LXnb45=d#
|-
|-
! scope="row" | Android Tab
! scope="row" | Android Tab
| nex12sz
|nex12sz
| GT4!V2cT
| GT4!V2cT
|-
|-
! scope="row" | iPhone
! scope="row" |iPhone
| app_ios_nw
|app_ios_nw
| W!P45-R
|W!P45-R
|-
|-
! scope="row" | iPad
! scope="row" |iPad
| ip45de
|ip45de
| XpD5!FT
|XpD5!FT
|}
|}


L'API est accessible en HTTP et en HTTPS, préférez la version HTTPS !
L'API est accessible en HTTP et en HTTPS, préférez la version HTTPS !


== Utilisation ==
==Utilisation==
=== Connexion ===
===Connexion ===
Pour vous connecter, utilisez la page [https://ws.jeuxvideo.com/mon_compte/connexion.php mon_compte/connexion.php].
Pour vous connecter, utilisez la page [https://ws.jeuxvideo.com/mon_compte/connexion.php mon_compte/connexion.php].


Voici les paramètres à envoyer (GET ou POST) :
Voici les paramètres à envoyer (GET ou POST) :
{| class="wikitable alternance centre plainlinks"
{| class="wikitable alternance centre plainlinks"
! scope="col" | Paramètre
! scope="col" |Paramètre
! scope="col" | Valeur
! scope="col" |Valeur
|-
|-
| newnom
|newnom
| Le pseudo de l'utilisateur.
|Le pseudo de l'utilisateur.
|-
|-
| stamp
|stamp
| Le timestamp (le nombre de secondes depuis le 1er janvier 1970) à l'heure où la requête est envoyée.
|Le timestamp (le nombre de secondes depuis le 1er janvier 1970) à l'heure où la requête est envoyée.
|-
|-
| hash
|hash
| Un hash MD5 sous la forme :<br>md5(pseudo + motDePasse + "OpX234" + stamp)<br>''OpX234'' est un [http://en.wikipedia.org/wiki/Salt_(cryptography) salt].
|Un hash MD5 sous la forme :<br>md5(pseudo + motDePasse + "OpX234" + stamp)<br>''OpX234'' est un [[wikipedia:Salt_(cryptography)|salt]].
|}
|}


Ligne 87 : Ligne 290 :
[https://ws.jeuxvideo.com/cgi-bin/passperdu_ws.cgi?email_pseudo=Cisla https://ws.jeuxvideo.com/cgi-bin/passperdu_ws.cgi?email_pseudo=''Cisla'']
[https://ws.jeuxvideo.com/cgi-bin/passperdu_ws.cgi?email_pseudo=Cisla https://ws.jeuxvideo.com/cgi-bin/passperdu_ws.cgi?email_pseudo=''Cisla'']


=== Jeux, astuces, news... ===
===Jeux, astuces, news...===
{| class="wikitable alternance centre"
{| class="wikitable alternance centre"
! scope="col" | URL
! scope="col" |URL
! scope="col" | Description
! scope="col" |Description
|-
|-
| 00.machines_version.xml<br>00.version_tablette.xml
|00.machines_version.xml<br>00.version_tablette.xml
| Dernière version de l'application, informations sur la publicité, liste des consoles
|Dernière version de l'application, informations sur la publicité, liste des consoles
|-
|-
| 01.flux_jeux_nouveautes.xml<br>01.flux_jeux_prochainement.xml
|01.flux_jeux_nouveautes.xml<br>01.flux_jeux_prochainement.xml
| Listes de jeux
|Listes de jeux
|-
|-
| 01.jeux/''21963''.xml<br>01.jeux/details/''21963''.xml<br>01.jeux/videos/''21963''.xml<br>01.jeux/screen/''21963''.xml<br>03.preview/''43689''.xml<br>03.test_complet/''9813''.xml<br>01.jeux/news/''21963''.xml<br>05.jeu_astuce/''41030''.xml<br>05.astuce/''33258''.xml<br>01.jeux/screen_ast/''38024''.xml
|01.jeux/''21963''.xml<br>01.jeux/details/''21963''.xml<br>01.jeux/videos/''21963''.xml<br>01.jeux/screen/''21963''.xml<br>03.preview/''43689''.xml<br>03.test_complet/''9813''.xml<br>01.jeux/news/''21963''.xml<br>05.jeu_astuce/''41030''.xml<br>05.astuce/''33258''.xml<br>01.jeux/screen_ast/''38024''.xml
| Informations sur le jeu (le nombre correspond à l'id)
|Informations sur le jeu (le nombre correspond à l'id)
|-
|-
| 03.dossier/''18270''.xml<br>03.dossier/''18270''/''1''.xml
|03.dossier/''18270''.xml<br>03.dossier/''18270''/''1''.xml
| Un dossier : ''18270'' est l'id du dossier, ''1'' est la page (si vous n'en mettez pas, vous avez le sommaire)
|Un dossier : ''18270'' est l'id du dossier, ''1'' est la page (si vous n'en mettez pas, vous avez le sommaire)
|-
|-
| 02.flux_news.xml<br>02.flux_news-''4''.xml
|02.flux_news.xml<br>02.flux_news-''4''.xml
| La liste des dernières news. Dans le deuxième exemple, en ajoutant le nombre 4, vous retournez 4 jours en arrière (ça peut aller jusqu'à 9)
|La liste des dernières news. Dans le deuxième exemple, en ajoutant le nombre 4, vous retournez 4 jours en arrière (ça peut aller jusqu'à 9)
|-
|-
| 03.flux_articles_tests.xml<br>03.flux_articles_tests-''4''.xml<br>03.flux_articles_apercus.xml<br>03.flux_articles_apercus-''4''.xml<br>03.flux_articles_dossier.xml<br>03.flux_articles_dossier-''4''.xml<br>04.flux_videos_cliq.xml<br>04.flux_videos_cliq-''4''.xml<br>04.flux_videos_gaming.xml<br>04.flux_videos_gaming-''4''.xml<br>04.flux_videos_autres.xml<br>04.flux_videos_autres-''4''.xml<br>05.flux_astuces.xml<br>05.flux_astuces-''4''.xml<br>04.flux_videos_chroniques.xml<br>04.flux_videos_chroniques-''4''.xml<br>04.flux_toutes_les_videos.xml<br>04.flux_toutes_les_videos-''4''.xml
|03.flux_articles_tests.xml<br>03.flux_articles_tests-''4''.xml<br>03.flux_articles_apercus.xml<br>03.flux_articles_apercus-''4''.xml<br>03.flux_articles_dossier.xml<br>03.flux_articles_dossier-''4''.xml<br>04.flux_videos_cliq.xml<br>04.flux_videos_cliq-''4''.xml<br>04.flux_videos_gaming.xml<br>04.flux_videos_gaming-''4''.xml<br>04.flux_videos_autres.xml<br>04.flux_videos_autres-''4''.xml<br>05.flux_astuces.xml<br>05.flux_astuces-''4''.xml<br>04.flux_videos_chroniques.xml<br>04.flux_videos_chroniques-''4''.xml<br>04.flux_toutes_les_videos.xml<br>04.flux_toutes_les_videos-''4''.xml
| Même chose pour les derniers articles, tests, astuces et aperçus
|Même chose pour les derniers articles, tests, astuces et aperçus
|-
|-
| 02.news/''1234''.xml<br>02.news_screen/''1234''.xml
|02.news/''1234''.xml<br>02.news_screen/''1234''.xml
| Voir une news (le nombre correspond à l'id)
| Voir une news (le nombre correspond à l'id)
|-
|-
| ean.php?ean=''0045496830144''
|ean.php?ean=''0045496830144''
| Voir le jeu associé au code-barre (EAN) 0045496830144
|Voir le jeu associé au code-barre (EAN) 0045496830144
|-
|-
| forums_index.xml
|forums_index.xml
| Liste des forums généraux
|Liste des forums généraux
|-
|-
| search_n/''mario''<br>search/''mario''<br>search_sug/''mario''<br>search_forums/''mario''<br>search_forums_sug/''mario''
|search_n/''mario''<br>search/''mario''<br>search_sug/''mario''<br>search_forums/''mario''<br>search_forums_sug/''mario''
| Effectuer une recherche dans le nom des jeux ou des forums
| Effectuer une recherche dans le nom des jeux ou des forums
|-
|-
| tab_suggest_blocs.xml<br>tab_suggest_forums.xml
|tab_suggest_blocs.xml<br>tab_suggest_forums.xml
| ''À compléter''
|''À compléter''
|-
|-
| cgi-bin/liste.cgi
|cgi-bin/liste.cgi
| ''À compléter''
|''À compléter''
|}
|}


=== Forums ===
===Forums===
Pour les forums, les URL sont les mêmes que pour JVC, à part que :
Pour les forums, les URL sont les mêmes que pour JVC, à part que :
* Le .htm est transformé en .xml
*Le .htm est transformé en .xml
* Le www.jeuxvideo.com est remplacé par un ws.jeuxvideo.com
*Le www.jeuxvideo.com est remplacé par un ws.jeuxvideo.com
* La chaîne de caractères à la fin de l'URL (comme ''blabla-15-18-ans'' ou ''nom-du-topic'') est remplacée par un 0 (sauf pour la recherche).
* La chaîne de caractères à la fin de l'URL (comme ''blabla-15-18-ans'' ou ''nom-du-topic'') est remplacée par un 0 (sauf pour la recherche).


Ligne 143 : Ligne 346 :


{| class="wikitable alternance centre"
{| class="wikitable alternance centre"
! scope="col" | URL
! scope="col" |URL
! scope="col" | Description
! scope="col" |Description
|-
|-
| https://ws.jeuxvideo.com/forums/0-50-0-1-0-1-0-0.xml
|https://ws.jeuxvideo.com/forums/0-50-0-1-0-1-0-0.xml
| La liste des sujets
|La liste des sujets
|-
|-
| https://ws.jeuxvideo.com/forums/0-50-0-1-0-1-2-cactus.xml
|https://ws.jeuxvideo.com/forums/0-50-0-1-0-1-2-cactus.xml
| Rechercher « cactus » dans le titre des topics
| Rechercher « cactus » dans le titre des topics
|-
|-
| https://ws.jeuxvideo.com/forums/1-50-1-1-0-1-0-0.xml
|https://ws.jeuxvideo.com/forums/1-50-1-1-0-1-0-0.xml
| Un topic
| Un topic
|-
|-
| https://ws.jeuxvideo.com/forums/3-50-0-1-0-1-0-0.xml
|https://ws.jeuxvideo.com/forums/3-50-0-1-0-1-0-0.xml
| Formulaire pour créer un topic
|Formulaire pour créer un topic
|-
|-
| https://ws.jeuxvideo.com/forums/3-50-128244545-1-0-1-0-0.xml
|https://ws.jeuxvideo.com/forums/3-50-128244545-1-0-1-0-0.xml
| 10 derniers messages d'un topic + formulaire
|10 derniers messages d'un topic + formulaire
|-
|-
| https://ws.jeuxvideo.com/forums/5-50-128244545-1-0-1-0-0.xml
|https://ws.jeuxvideo.com/forums/5-50-128244545-1-0-1-0-0.xml
| Formulaire de réponse à un topic
| Formulaire de réponse à un topic
|-
|-
| https://ws.jeuxvideo.com/cgi-bin/jvforums/forums.cgi
|https://ws.jeuxvideo.com/cgi-bin/jvforums/forums.cgi
| Envoyer un message (avec les données POST)
|Envoyer un message (avec les données POST)
|-
|-
| https://ws.jeuxvideo.com/profil/cisla.xml
|https://ws.jeuxvideo.com/profil/cisla.xml
| Voir une CDV
|Voir une CDV
|}
|}


Ligne 177 : Ligne 380 :
Le même formulaire peut aussi bien être envoyé au ''forums.cgi'' de ws.jeuxvideo.com qu'à celui de www.jeuxvideo.com, ce qui vous permet de choisir entre apparaître « via mobile » ou non. Les données POST à envoyer sont donc les mêmes sur toutes les versions de JVC.
Le même formulaire peut aussi bien être envoyé au ''forums.cgi'' de ws.jeuxvideo.com qu'à celui de www.jeuxvideo.com, ce qui vous permet de choisir entre apparaître « via mobile » ou non. Les données POST à envoyer sont donc les mêmes sur toutes les versions de JVC.


=== Messages privés ===
===Messages privés===
L'id de l'utilisateur mentionnée ci-dessous correspond à la partie du cookie ''coniunctio'' qui se trouve avant le premier "$".
L'id de l'utilisateur mentionnée ci-dessous correspond à la partie du cookie ''coniunctio'' qui se trouve avant le premier "$".


Ligne 183 : Ligne 386 :


{| class="wikitable alternance centre"
{| class="wikitable alternance centre"
! scope="col" | URL
! scope="col" |URL
! scope="col" | Description
! scope="col" |Description
|-
|-
| jvmp.xml
|jvmp.xml
| Dernière version de l'application, liste des consoles et des smileys, lien vers la charte, pub activée ou non
|Dernière version de l'application, liste des consoles et des smileys, lien vers la charte, pub activée ou non
|-
|-
| messages-prives/connexion_ws.php
|messages-prives/connexion_ws.php
| Les paramètres sont les mêmes que pour la connexion depuis ''mon_compte/connexion.php'', décrite [[#Connexion|plus haut]]. Cependant, la réponse XML contient quelques informations supplémentaires à propos des MP.
|Les paramètres sont les mêmes que pour la connexion depuis ''mon_compte/connexion.php'', décrite [[#Connexion|plus haut]]. Cependant, la réponse XML contient quelques informations supplémentaires à propos des MP.
|-
|-
| messages-prives/boite-reception_ws.php
|messages-prives/boite-reception_ws.php
| Permet de connaître le contenu de la boîte de réception. Paramètre à envoyer :
|Permet de connaître le contenu de la boîte de réception. Paramètre à envoyer :
* ''id_user'' : id de l'utilisateur
* ''id_user'' : id de l'utilisateur
|-
|-
| messages-prives/envoyes_ws.php
|messages-prives/envoyes_ws.php
| Permet de connaître la liste des messages envoyés. Paramètre à envoyer :
|Permet de connaître la liste des messages envoyés. Paramètre à envoyer :
* ''id_user'' : id de l'utilisateur
* ''id_user'' : id de l'utilisateur
|-
|-
| messages-prives/message_ws.php
|messages-prives/message_ws.php
| Permet de lire le contenu d'un message privé. Paramètres à envoyer :
|Permet de lire le contenu d'un message privé. Paramètres à envoyer :
* ''id_user'' : id de l'utilisateur
* ''id_user'' : id de l'utilisateur
* ''id_discussion'' : id de la discussion
*''id_discussion'' : id de la discussion
* ''nb_clic'' : le nombre de fois où l'utilisateur a cliqué sur « Voir les messages précédents »
* ''nb_clic'' : le nombre de fois où l'utilisateur a cliqué sur « Voir les messages précédents »
* ''last_position_message'' : Si ce paramètre vaut 0, les 5 derniers messages sont affichés. Sinon, les 10 messages les plus anciens en partant du ''x''<sup>ème</sup> sont affichés, la numérotation débutant à partir de 0.
*''last_position_message'' : Si ce paramètre vaut 0, les 5 derniers messages sont affichés. Sinon, les 10 messages les plus anciens en partant du ''x''<sup>ème</sup> sont affichés, la numérotation débutant à partir de 0.
|-
|-
| messages-prives/nouveau_ws.php
|messages-prives/nouveau_ws.php
| Permet d'envoyer un nouveau message privé. Paramètres à envoyer :
|Permet d'envoyer un nouveau message privé. Paramètres à envoyer :
* ''id_user'' : id de l'utilisateur
* ''id_user'' : id de l'utilisateur
* ''all_dest'' : les destinataires, séparés pas des point-virgules
*''all_dest'' : les destinataires, séparés pas des point-virgules
* ''sujet'' : le titre du MP
*''sujet'' : le titre du MP
* ''yournewmessage'' : le contenu du MP
*''yournewmessage'' : le contenu du MP
* ''tmp'' : le timestamp actuel
*''tmp'' : le timestamp actuel
* ''control'' : md5("k_ys4+a]x" + idUtilisateur + "j6A=d?6-W*-" + timestamp + "z_.Im")
* ''control'' : md5("k_ys4+a]x" + idUtilisateur + "j6A=d?6-W*-" + timestamp + "z_.Im")
Il se peut également que vous ayez à gérer un code de confirmation.
Il se peut également que vous ayez à gérer un code de confirmation.
|-
|-
| messages-prives/repondre_ws.php
|messages-prives/repondre_ws.php
| Permet de répondre à un message privé. Paramètres à envoyer :
|Permet de répondre à un message privé. Paramètres à envoyer :
* ''id_user'' : id de l'utilisateur
* ''id_user'' : id de l'utilisateur
* ''id_discussion'' : id de la discussion
*''id_discussion'' : id de la discussion
* ''yournewmessage'' : le contenu du message
*''yournewmessage'' : le contenu du message
* ''tmp'' : le timestamp actuel
*''tmp'' : le timestamp actuel
* ''control'' : md5("vx*96-dP" + timestamp + "8e63ddO_" + idUtilisateur + "al)orc9W")
* ''control'' : md5("vx*96-dP" + timestamp + "8e63ddO_" + idUtilisateur + "al)orc9W")
* ''box'' : 1
*''box'' : 1
Il se peut également que vous ayez à gérer un code de confirmation.
Il se peut également que vous ayez à gérer un code de confirmation.
|-
|-
| messages-prives/suggest_pseudo_ws.php
|messages-prives/suggest_pseudo_ws.php
| Liste quelques pseudos qui commencent par ce que l'utilisateur est en train de taper. Paramètres à envoyer :
|Liste quelques pseudos qui commencent par ce que l'utilisateur est en train de taper. Paramètres à envoyer :
* ''id_user'' : id de l'utilisateur
* ''id_user'' : id de l'utilisateur
* ''search'' : ce que l'utilisateur est en train de taper
*''search'' : ce que l'utilisateur est en train de taper
|-
|-
| messages-prives/indesirable_ws.php
|messages-prives/indesirable_ws.php
| Liste les utilisateurs ajoutés en indésirable. Paramètres à envoyer :
|Liste les utilisateurs ajoutés en indésirable. Paramètres à envoyer :
* ''id_user'' : id de l'utilisateur
* ''id_user'' : id de l'utilisateur
|-
|-
| messages-prives/add_indesirable_ws.php
|messages-prives/add_indesirable_ws.php
| Permet d'ajouter un utilisateur dans les indésirables. Certaines données nécessaires pour former la requête doivent être récupérés avec info_alerte_ws.php. Paramètres à envoyer :
|Permet d'ajouter un utilisateur dans les indésirables. Certaines données nécessaires pour former la requête doivent être récupérés avec info_alerte_ws.php. Paramètres à envoyer :
* ''id_user'' : id de l'utilisateur actuel
* ''id_user'' : id de l'utilisateur actuel
* ''pseudo'' : pseudo de l'utilisateur
*''pseudo'' : pseudo de l'utilisateur
* ''id_user_indesirable'' : id de l'utilisateur à ajouter en indésirable
*''id_user_indesirable'' : id de l'utilisateur à ajouter en indésirable
* ''pseudo_indesirable'' : pseudo de l'utilisateur à ajouter en indésirable
*''pseudo_indesirable'' : pseudo de l'utilisateur à ajouter en indésirable
* ''time_indesirable'' : le timestamp actuel
*''time_indesirable'' : le timestamp actuel
* ''key_indesirable'' : md5("5d*" + timestamp + "v1S{" + idIndesirable + "I,5|S9z)" + pseudoIndesirable + "52Sx69,")
*''key_indesirable'' : md5("5d*" + timestamp + "v1S{" + idIndesirable + "I,5|S9z)" + pseudoIndesirable + "52Sx69,")
|-
|-
| messages-prives/del_indesirable_ws.php
|messages-prives/del_indesirable_ws.php
| Permet d'enlever un utilisateur des indésirables. Paramètres à envoyer :
|Permet d'enlever un utilisateur des indésirables. Paramètres à envoyer :
* ''id_user'' : id de l'utilisateur actuel
* ''id_user'' : id de l'utilisateur actuel
* ''id_user_indesirable'' : id de l'utilisateur à enlever des indésirables
*''id_user_indesirable'' : id de l'utilisateur à enlever des indésirables
|-
|-
| messages-prives/info_alerte_ws.php
|messages-prives/info_alerte_ws.php
| Permet de connaître les informations qui permettront de faire une DDB ou une mise en indésirable sur un message. Paramètres à envoyer :
|Permet de connaître les informations qui permettront de faire une DDB ou une mise en indésirable sur un message. Paramètres à envoyer :
* ''id_user'' : id de l'utilisateur qui fait la DDB
* ''id_user'' : id de l'utilisateur qui fait la DDB
* ''id_message'' : id du message concerné
*''id_message'' : id du message concerné
|-
|-
| messages-prives/alerte_ws.php
|messages-prives/alerte_ws.php
| Permet d'effectuer une DDB (ce qui est inutile, étant donné qu'elles ne sont jamais traitées). Certaines données nécessaires pour former la requête doivent être récupérés avec info_alerte_ws.php. Paramètres à envoyer :
|Permet d'effectuer une DDB (ce qui est inutile, étant donné qu'elles ne sont jamais traitées). Certaines données nécessaires pour former la requête doivent être récupérés avec info_alerte_ws.php. Paramètres à envoyer :
* ''id_user'' : id de l'utilisateur qui fait la DDB
* ''id_user'' : id de l'utilisateur qui fait la DDB
* ''pseudo'' : pseudo de l'utilisateur
*''pseudo'' : pseudo de l'utilisateur
* ''motif'' : le motif, par exemple ''Piratage'' (les mêmes motifs que dans les MP sur JVC normal)
*''motif'' : le motif, par exemple ''Piratage'' (les mêmes motifs que dans les MP sur JVC normal)
* ''id_message'' : id du message concerné
*''id_message'' : id du message concerné
* ''id_discussion'' : id de la discussion concernée
*''id_discussion'' : id de la discussion concernée
* ''time_alerte'' : timestamp actuel
*''time_alerte'' : timestamp actuel
* ''key_alerte'' : md5("v6dE{" + idDiscussion + "d96/" + idMessage + "mvn85Qa" + timestamp + "auxarmeheuuuuuuu")
*''key_alerte'' : md5("v6dE{" + idDiscussion + "d96/" + idMessage + "mvn85Qa" + timestamp + "auxarmeheuuuuuuu")
|-
|-
| messages-prives/connexion_valid_ws.php
|messages-prives/connexion_valid_ws.php
| Permet d'afficher le nombre de messages non-lus ainsi que l'URL de l'avatar. Paramètres à envoyer :
|Permet d'afficher le nombre de messages non-lus ainsi que l'URL de l'avatar. Paramètres à envoyer :
* ''id_user'' : id de l'utilisateur
* ''id_user'' : id de l'utilisateur
* ''pseudo'' : pseudo de l'utilisateur
*''pseudo'' : pseudo de l'utilisateur
|-
|-
| messages-prives/add_destinataire_ws.php
|messages-prives/add_destinataire_ws.php
| Permet d'ajouter un destinataire à un message privé. Paramètres à envoyer :
|Permet d'ajouter un destinataire à un message privé. Paramètres à envoyer :
* ''id_user'' : id de l'utilisateur
* ''id_user'' : id de l'utilisateur
* ''id_discussion'' : id de la discussion
*''id_discussion'' : id de la discussion
* ''tab_pseudo'' : liste des destinataires à ajouter, séparés par un point-virgule
*''tab_pseudo'' : liste des destinataires à ajouter, séparés par un point-virgule
|-
|-
| messages-prives/del_message_ws.php
|messages-prives/del_message_ws.php
| Permet de supprimer un message privé. Paramètres à envoyer :
|Permet de supprimer un message privé. Paramètres à envoyer :
* ''id_user'' : id de l'utilisateur
* ''id_user'' : id de l'utilisateur
* ''del_discussion'' : id des discussions à supprimer séparés par un tiret
*''del_discussion'' : id des discussions à supprimer séparés par un tiret
* ''box'' : 1
*''box'' : 1
|}
|}


== Reverse-engineering ==
==Reverse-engineering==
=== Décompilation ===
===Décompilation===
Cette section concerne la décompilation de l'application Android de JVC sous Linux.
Cette section concerne la décompilation de l'application Android de JVC sous Linux.


Ligne 299 : Ligne 502 :
  $ jd-gui classes-dex2jar.jar
  $ jd-gui classes-dex2jar.jar


=== Déobfuscation ===
===Déobfuscation===
En parcourant le code source, vous verrez des choses de ce genre à la place des chaînes de caractères :
En parcourant le code source, vous verrez des choses de ce genre à la place des chaînes de caractères :


Ligne 328 : Ligne 531 :
Modifiez la clé selon l'application que vous décompilez :
Modifiez la clé selon l'application que vous décompilez :


* Pour l'application Jeuxvideo.com (version >= 2.0.3), c'est ''package com.jeuxvideo.activity''
*Pour l'application Jeuxvideo.com (version >= 2.0.3), c'est ''package com.jeuxvideo.activity''
* Pour l'application Jeuxvideo.com (version >= 2.5), c'est ''package android.content''
*Pour l'application Jeuxvideo.com (version >= 2.5), c'est ''package android.content''
* Pour l'application Jeuxvideo.com MP (version >= 1.0), c'est ''package com.jeuxvideomp.activity''
*Pour l'application Jeuxvideo.com MP (version >= 1.0), c'est ''package com.jeuxvideomp.activity''


L'application pour tablettes n'est pas concernée par ce mécanisme d'obfuscation.
L'application pour tablettes n'est pas concernée par ce mécanisme d'obfuscation.


== Liens externes ==
==Liens externes==
* [http://www.jeuxvideo.com/forums/1-1000021-1691093-1-0-1-0-documentation-de-l-api-de-jeuxvideo-com.htm Lien du topic sur JVC pour poser vos questions]
*[http://www.jeuxvideo.com/forums/1-1000021-1691093-1-0-1-0-documentation-de-l-api-de-jeuxvideo-com.htm Lien du topic sur JVC pour poser vos questions]
* [https://play.google.com/store/apps/details?id=com.jeuxvideo&hl=fr L'application Android]
*[https://play.google.com/store/apps/details?id=com.jeuxvideo&hl=fr L'application Android]
* [https://play.google.com/store/apps/details?id=com.jeuxvideomp&hl=fr L'application Android des MP]
*[https://play.google.com/store/apps/details?id=com.jeuxvideomp&hl=fr L'application Android des MP]
* [https://itunes.apple.com/fr/app/id393077232 L'application iPhone]
*[https://itunes.apple.com/fr/app/id393077232 L'application iPhone]
* [https://itunes.apple.com/fr/app/id547233024 L'application iPhone des MP]
*[https://itunes.apple.com/fr/app/id547233024 L'application iPhone des MP]


* L'APK de l'application Android :
*L'APK de l'application Android :
** [http://pool.apk.aptoide.com/outstore/com-jeuxvideo-7-604082-50bec6ac892f7a0868936f6a1478de7d.apk Version 1.5.4]
**[http://pool.apk.aptoide.com/outstore/com-jeuxvideo-7-604082-50bec6ac892f7a0868936f6a1478de7d.apk Version 1.5.4]
** [http://android-applications-gratuites.com/wp-content/uploads/2012/04/com.jeuxvideo-9.apk Version 2.0.1]
**[http://android-applications-gratuites.com/wp-content/uploads/2012/04/com.jeuxvideo-9.apk Version 2.0.1]
** [http://www.app-android-free.com/wp-content/uploads/2012/08/Jeuxvideo.com-2.0.4.apk Version 2.0.4]
**[http://www.app-android-free.com/wp-content/uploads/2012/08/Jeuxvideo.com-2.0.4.apk Version 2.0.4]
** [http://android-applications-gratuites.com/wp-content/uploads/2012/09/com.jeuxvideo-13.apk Version 2.0.5]
**[http://android-applications-gratuites.com/wp-content/uploads/2012/09/com.jeuxvideo-13.apk Version 2.0.5]
** [http://pool.apk.aptoide.com/el-bucho/com-jeuxvideo-15-1700633-aebd47783deaffd1cead7c788d49c824.apk Version 2.1.1]
**[http://pool.apk.aptoide.com/el-bucho/com-jeuxvideo-15-1700633-aebd47783deaffd1cead7c788d49c824.apk Version 2.1.1]
** [http://pool.apk.aptoide.com/cuvelier/com-jeuxvideo-17-2741356-e85ee96f02f8d4db3d178c7d85cd8157.apk Version 2.2]
**[http://pool.apk.aptoide.com/cuvelier/com-jeuxvideo-17-2741356-e85ee96f02f8d4db3d178c7d85cd8157.apk Version 2.2]
** [http://android-applications-gratuites.com/wp-content/uploads/2013/03/com.jeuxvideo.apk Version 2.3]
**[http://android-applications-gratuites.com/wp-content/uploads/2013/03/com.jeuxvideo.apk Version 2.3]
** [http://painarguer.alwaysdata.net/com.jeuxvideo-2.5.apk Version 2.5]
**[http://painarguer.alwaysdata.net/com.jeuxvideo-2.5.apk Version 2.5]


* L'APK de l'application Android des MP :
*L'APK de l'application Android des MP :
** [http://android-applications-gratuites.com/wp-content/uploads/2012/10/com.jeuxvideomp-1.apk Version 1.0]
**[http://android-applications-gratuites.com/wp-content/uploads/2012/10/com.jeuxvideomp-1.apk Version 1.0]


* L'APK de l'application Android tablette :
*L'APK de l'application Android tablette :
** [http://dl3.apk-dl.com/root/apk/2015/9/19/com.jeuxvideo.tablet_40.apk?f=Jeuxvideo.com%20tablette_1.0.4_apk-dl.com.apk Version 1.0.4]
**[http://dl3.apk-dl.com/root/apk/2015/9/19/com.jeuxvideo.tablet_40.apk?f=Jeuxvideo.com%20tablette_1.0.4_apk-dl.com.apk Version 1.0.4]




Kheys
1 092

modifications