Ho provato a fare l’ingegneria inversa del sito inviando richieste POST a “https://{hostUrl}/topics/timings” con content-type, token csrf e user-agent.
def load_topics(session, page):
print(f"[Topics] Caricamento pagina {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
}
# Usa json=payload per inviare come 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"
}
)
Posso affermare con il 100% di certezza che questa affermazione è vera!
La lettura dei post è stata aggiornata diverse volte, ma la lettura degli argomenti no. Sono a intervalli diversi? Sono passate circa 20 ore e il conteggio delle letture dei post continua ad aumentare, ma quello degli argomenti no.
Voglio solo provare a fare l’ingegneria inversa degli endpoint! È interessante.
Penso che dovrei aspettare un po’ prima di tornare a vedere se i valori sono cambiati.
@Canapin, non sono il proprietario del sito web. Se riesco ancora ad attivarlo semplicemente essendo loggato come utente normale, fammi sapere il metodo per farlo.
@Moin
Il sito che sto usando ha questa opzione disabilitata e restituirà sempre “Qui verrà mostrato un elenco dei membri della community con la loro attività. Per ora l’elenco è vuoto perché la tua community è ancora nuovissima!”
Nel suo caso non puoi. Essere un utente normale non è l’ideale per fare il reverse-engineering dell’API.
Se puoi, prova un’installazione di sviluppo locale o un’installazione di produzione su un VPS economico (un server da 3-4$ va bene), dato che Discourse non richiede più un nome host o SMTP.