J’ai essayé d’effectuer une rétro-ingénierie du site en envoyant des requêtes POST à « https://{hostUrl}/topics/timings » avec le content-type, le jeton csrf et l’agent utilisateur.
def load_topics(session, page):
print(f"[Topics] Chargement de la page {page}")
r = session.get(f"https://{hostUrl}/latest.json?page={page}")
if r.status_code != 200:
return []
return [{"id": t["id"], "posts_count": t["posts_count"]} for t in r.json()["topic_list"]["topics"]]
timings = {
str(i): 60000
for i in range(1, post_count + 1)
}
payload = {
"topic_id": topic_id,
"topic_time": post_count * 60000,
"timings": timings
}
# Utiliser json=payload pour envoyer en tant que application/json
r = session.post(url, json=payload, headers = {
"X-CSRF-Token": csrf,
"User-Agent": "Mozilla/5.0",
"X-Requested-With": "XMLHttpRequest",
"Content-Type": "application/json"
}
)
Je peux dire avec une certitude de 100% que cette affirmation est vraie !
Le nombre de messages lus a été mis à jour plusieurs fois, mais pas celui des sujets lus. Sont-ils sur des intervalles différents ? Cela fait environ 20 heures et le nombre de messages lus continue d’augmenter, mais celui des sujets lus ne bouge pas.
Je veux juste essayer de faire de l’ingénierie inverse des endpoints ! C’est cool.
Je pense que je devrais attendre un peu avant de revenir voir si les valeurs ont changé.
Voyez-vous la même chose dans l’annuaire des utilisateurs à l’adresse /u?period=daily ou hebdomadaire ? Là, vous pouvez voir quand les chiffres ont été mis à jour en haut.
Je pense que les chiffres pour « aujourd’hui » sont mis à jour une fois par heure, tandis que les autres périodes ne sont mises à jour qu’une fois par jour.
@Canapin, je ne suis pas le propriétaire du site web. Si je peux toujours le déclencher simplement en étant connecté en tant qu’utilisateur normal, faites-moi savoir la méthode pour le faire.
@Moin
Le site que j’utilise a désactivé cela et renverra toujours « Une liste des membres de la communauté montrant leur activité sera affichée ici. Pour l’instant, la liste est vide car votre communauté est toute nouvelle ! »
Dans son cas, vous ne pouvez pas. Être un utilisateur normal n’est pas idéal pour faire de l’ingénierie inverse de l’API.
Si vous le pouvez, essayez une installation de développement locale ou une installation de production sur un VPS bon marché (un serveur à 3-4 $ suffit), car Discourse n’exige plus de nom d’hôte ni de SMTP.