Kheys
1 092
modifications
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 [ | |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 | ||
|- | |- | ||
| 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] | ||