Reddit — одна из самых больших платформ для обмена информацией, где пользователи обсуждают широкий спектр тем, от новостей и технологий до личного опыта и мнений. С точки зрения OSINT (разведка на основе открытых источников), Reddit — ценный источник данных, который может быть использован для анализа общественных настроений, отслеживания активности пользователей и выявления ключевых тенденций.
Еще по теме: Модули OSINT для Maltego
PRAW для анализа Reddit
Для OSINT-анализа Reddit необходимо иметь их API. Для работы с Reddit API, можно воспользоваться пакетом PRAW (Python Reddit API Wrapper), который упрощает доступ к API. Инструмент удобен тем, что в коде не нужно вручную вставлять задержки для выполнения запросов. Вам необходимо лишь предоставить корректный user_agent для клиента, и можно начинать работу.
Платформа Reddit разделена на тематические сообщества, называемые сабреддитами. Каждый сабреддит посвящен определенной теме и имеет свои правила и культуру общения. Система кармы на Reddit поощряет пользователей за популярные публикации, что делает высокорейтинговых пользователей влиятельными источниками информации.
Возможности:
- Собирать данные по ключевым словам — автоматический поиск постов и комментариев на определенные темы может помочь выявить актуальные тренды, обсуждения или потенциальные угрозы.
- Отслеживать активность пользователей — сбор информации о поведении и интересах пользователей, включая анализ их постов и комментариев, может быть полезен для расследований или для понимания общественных настроений в определенных сообществах.
- Анализировать популярные посты — сортировка постов по популярности или другим критериям может помочь определить, какие темы наиболее обсуждаемы и привлекают наибольшее внимание.
Установка
PRAW поддерживается на Python 3.8 и выше. Для установки рекомендуется использовать pip:
1 |
pip install praw |
Вы также можете установить последнюю версию PRAW с помощью следующей команды:
1 |
pip install --upgrade https://github.com/praw-dev/praw/archive/master.zip |
Использование
Для использования API, вам потребуется получить учетные данные, зарегистрировав приложение на странице приложений Реддит.
Если у вас уже есть учетные данные для OAuth, можно инициализировать PRAW таким образом:
1 2 3 4 5 6 7 8 9 |
import praw reddit = praw.Reddit( client_id="CLIENT_ID", client_secret="CLIENT_SECRET", password="PASSWORD", user_agent="USERAGENT", username="USERNAME", ) |
С помощью объекта reddit можно взаимодействовать с Reddit:
Создание поста в r/test:
1 |
reddit.subreddit("test").submit("Тестовый пост", url="https://reddit.com") |
Комментирование существующего поста:
1 2 |
submission = reddit.submission(url="https://www.reddit.com/comments/5e1az9") submission.reply("Отличный пост!") |
Ответ на первый комментарий в топовом посте за неделю в модераторском сообществе:
1 2 |
submission = next(reddit.subreddit("mod").top(time_filter="week")) submission.comments[0].reply("Автоматический ответ") |
Вывод оценки первых 256 постов на главной странице:
1 2 |
for submission in reddit.front.hot(limit=256): print(submission.score) |
Получение списка модераторов r/test:
1 2 |
for moderator in reddit.subreddit("test").moderator(): print(moderator) |
Если планируете использовать PRAW в асинхронной среде (например, в приложениях, использующих discord.py или asyncio), рекомендуется использовать библиотеку Async PRAW. Она поддерживает все те же функции, что и PRAW, но работает асинхронно.
Пример использования
Ниже приведен пример использования PRAW для поиска постов и отслеживания активности пользователя:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
import praw from datetime import datetime, timedelta # Учетные данные Reddit API REDDIT_CLIENT_ID = 'your_client_id' REDDIT_CLIENT_SECRET = 'your_client_secret' REDDIT_USER_AGENT = 'your_user_agent' # Инициализация PRAW reddit = praw.Reddit( client_id=REDDIT_CLIENT_ID, client_secret=REDDIT_CLIENT_SECRET, user_agent=REDDIT_USER_AGENT ) def search_posts(subreddit_name, query, start_date, end_date): subreddit = reddit.subreddit(subreddit_name) for submission in subreddit.search(query, sort='new', time_filter='all'): submission_date = datetime.fromtimestamp(submission.created_utc) if start_date <= submission_date <= end_date: print(f"Заголовок: {submission.title}") print(f"URL: {submission.url}") print(f"Дата: {submission_date}") print(f"Оценка: {submission.score}") print("----") def track_user_activity(username): user = reddit.redditor(username) print(f"Активность пользователя: {username}") print("Посты:") for submission in user.submissions.new(limit=5): # Измените лимит при необходимости print(f"Заголовок: {submission.title}") print(f"URL: {submission.url}") print(f"Дата: {datetime.fromtimestamp(submission.created_utc)}") print(f"Оценка: {submission.score}") print("----") print("Комментарии:") for comment in user.comments.new(limit=5): # Измените лимит при необходимости print(f"Комментарий: {comment.body}") print(f"Дата: {datetime.fromtimestamp(comment.created_utc)}") print(f"Оценка: {comment.score}") print("----") if __name__ == "__main__": # Параметры поиска subreddit_name = 'news' query = 'AI' start_date = datetime.now() - timedelta(days=30) # Посты за последние 30 дней end_date = datetime.now() # Поиск постов search_posts(subreddit_name, query, start_date, end_date) # Отслеживание активности пользователя username = 'example_user' track_user_activity(username) |
Как видите пакет PRAW предоставляет доступ ко многим функциям Reddit, таким как получение информации о постах, комментариях, пользователях и сабреддитах.
Другие инструмент OSINT Reddit
Для эффективного OSINT на Реддит существует ряд других полезных инструментов.
Pushshift.io — это мощный API, архивирующий данные Reddit, включая удаленные посты и комментарии. Он незаменим для анализа исторических данных и отслеживания изменений в обсуждениях.
CrowdTangle отслеживает распространение контента с Реддит на других платформах, что помогает понять его влияние в более широком контексте.
Reddit-analyzer — это инструмент для анализа активности пользователей. Он использует API для извлечения данных и предоставляет разнообразную информацию о действиях пользователей на платформе. Показывает, когда был создан аккаунт и когда пользователь разместил последний пост. Также он отображает общее количество постов, сделанных пользователем, и сколько кармы было получено за эти публикации. Дополнительно, reddit-analyzer анализирует, в какое время суток пользователь наиболее активен, а также какие сабреддиты он чаще всего посещает. Особенностью инструмента является его способность выявлять сабреддиты, связанные с физическими локациями, такими как страны, штаты, города или университеты.
ПОЛЕЗНЫЕ ССЫЛКИ: