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

→‎Accès aux forums : Mise à jour de mai 2025
user: 19229e9 (?)
(→‎Principe général : mise à jour JVC)
(→‎Accès aux forums : Mise à jour de mai 2025)
Ligne 853 : Ligne 853 :
En second lieu, vous ne devrez pas seulement envoyer aux serveurs le contenu de votre message (et le titre du topic si besoin) : la requête ''POST'' devra aussi contenir des paires clés-valeurs générées par le site lui-même et qui agissent comme une sorte de protection. Celles-ci sont : ''fs_session'', ''fs_timestamp'', ''fs_version'', ''form_alias_rang'' ainsi qu'un ''hash''.
En second lieu, vous ne devrez pas seulement envoyer aux serveurs le contenu de votre message (et le titre du topic si besoin) : la requête ''POST'' devra aussi contenir des paires clés-valeurs générées par le site lui-même et qui agissent comme une sorte de protection. Celles-ci sont : ''fs_session'', ''fs_timestamp'', ''fs_version'', ''form_alias_rang'' ainsi qu'un ''hash''.


Heureusement, ces valeurs sont directement disponibles depuis des ''inputs'' cachées dans le code HTML des pages de forums/topics et situées dans la ''div'' nommée ''js-form-session-data''.
'''Depuis mai 2025''', suite à une mise à jour de JVC, les informations ''"fs_" '', sont offusqués dans une chaîne en base 64.
 
Si l'on veut envoyer un message sur un topic (ou un forum), il faudra d'abord envoyer une requête ''GET'' à l'URL associée et récupérer ces valeurs chiffrées avant d'envoyer une requête ''POST'' avec le contenu du message en plus de ces dernières.
 
==== Offuscation ====
 
'''Depuis mai 2025,''' suite à une mise à jour de JVC, les informations ''"fs_" '', sont offusqués dans une chaîne en base 64.


Les fs_ sont récupérables via la balise script : ''window.jvc.forumsAppPayload''
Les fs_ sont récupérables via la balise script : ''window.jvc.forumsAppPayload''
Ligne 870 : Ligne 864 :
  const decoded = JSON.parse(atob(forumsAppPayload));
  const decoded = JSON.parse(atob(forumsAppPayload));


'''PS :''' À date, ces informations sont uniquement offusquées dans la partie forum
Auparavant, ces valeurs étaient disponibles depuis des ''inputs'' cachées dans le code HTML des pages de forums/topics et situées dans la ''div'' nommée ''js-form-session-data''.
Les messages privés conservent les informations en clair comme mentionné plus haut.
 
Si l'on veut envoyer un message sur un topic (ou un forum), il faudra d'abord envoyer une requête ''GET'' à l'URL associée et récupérer ces valeurs chiffrées avant d'envoyer une requête ''POST'' à l'URL avec le contenu du message en plus de ces dernières.
 
'''Pour poster un message''', la requête POST devra être faite à <code>https://www.jeuxvideo.com/forums/message/add</code> avec le ''header'' <code>Content-Type</code> valant <code>multipart/form-data</code> et les données suivantes en ''body'' :
<pre>
text : le contenu du message
topicId : ID du topic cible
topicTitle : titre du topic (si c'est une création du topic)
forumId : ID du forum cible
group : mettre à 1
messageId : undefined
toutes les clé/valeurs qui commencent par fs_ (à trouver selon la méthode donnée précédemment) + ajax_hash
</pre>
 
'''Pour poster un topic''',  la requête POST devra être faite à <code>https://www.jeuxvideo.com/forums/topic/add</code> avec le ''header'' <code>Content-Type</code> valant <code>multipart/form-data</code> et les données suivantes en ''body'' :
<pre>
text : le contenu du message
topicId : mettre à 0
topicTitle : titre du topic (si c'est une création du topic)
forumId : ID du forum cible
group : mettre à 1
messageId : undefined
toutes les clé/valeurs qui commencent par fs_ (à trouver selon la méthode donnée précédemment) + ajax_hash
submitSurvey : true pour ajouter un sondage, false sinon
answerSurvey : titre du sondage s'il y en a un
responsesSurvey[] : une réponse au sondage
</pre>
 
'''Note''' : À date, ces informations sont uniquement offusquées dans la partie forum. Les messages privés conservent les informations en clair dans le HTML comme mentionné plus haut.


=== Script Python ===
=== Script Python ===
Kheys
423

modifications