Я попытался провести реверс-инжиниринг сайта, отправляя POST-запросы к «https://{hostUrl}/topics/timings» с заголовками content-type, CSRF-токеном и user-agent.
def load_topics(session, page):
print(f"[Topics] Загрузка страницы {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
}
# Используйте json=payload для отправки в формате 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"
}
)
Я могу со 100% уверенностью сказать, что это утверждение верно!
Счётчик прочитанных постов обновлялся несколько раз, а счётчик прочитанных тем — нет. У них разные интервалы обновления? Прошло уже ~20 часов, счётчик прочитанных постов продолжает расти, а счётчик прочитанных тем остаётся прежним.
Я просто хочу попробовать реверс-инжинирить эти эндпоинты! Это круто.
Думаю, мне стоит немного подождать, прежде чем возвращаться и проверять, изменились ли значения.
@Canapin, я не владелец этого сайта. Если я всё ещё могу это сделать, просто будучи обычным зарегистрированным пользователем, сообщите мне, как это сделать.
На сайте, который я использую, эта функция отключена, и он всегда возвращает сообщение: «Здесь будет отображаться список участников сообщества с их активностью. На данный момент список пуст, потому что ваше сообщество ещё совсем новое!»
В его случае это невозможно. Быть обычным пользователем не идеально для реверс-инжиниринга API.
Если есть возможность, попробуйте локальную установку для разработки или установку в продакшн на дешёвом VPS (подойдёт сервер за 3–4 доллара), так как Discourse больше не требует указания хостнейма или SMTP.