Как можно использовать логи Телеграм

22 Ноя. 2020 , Python, 61816 просмотров, The Ultimate Guide To Python Logging

В стандартной библиотеке Python есть замечательный пакет для логирования — logging. В сети бытует мнение, что он сложный и настраивать его сплошная боль. В этой статье я попробую убедить вас в обратном. Мы разберём что из себя представляет этот пакет, изучим основные компоненты и закрепим материал практическим примером.

Зачем нужны логи?

Логи это рентген снимок выполнения вашей программы. Чем детальнее лог, тем проще разобраться в нестандартных ситуациях, которые могут приключиться с вашим скриптом. Наиболее популярным примером логов служат access логи веб-сервера, например, Apache httpd или nginx. Пример куска access лога моего блога:

92.63.107.227 — — [04/Nov/2020:06:30:48 +0000] «GET /ru/hosted-open-vpn-server/ HTTP/1.1» 301 169 «-» «python-requests/2.11.1» «-» 92.63.107.227 — — [04/Nov/2020:06:30:49 +0000] «GET /ru/data-engineering-course/ HTTP/1.1» 301 169 «-» «python-requests/2.11.1» «-» 213.180.203.50 — — [04/Nov/2020:06:36:07 +0000] «GET / HTTP/1.1» 301 169 «-» «Mozilla/5.0 (compatible; YandexMetrika/2.0; +http://yandex.com/bots yabs01)» «-» 114.119.160.75 — — [04/Nov/2020:06:36:41 +0000] «GET /robots.txt HTTP/1.1» 301 169 «-» «(compatible;PetalBot;+https://aspiegel.com/petalbot)» «10.179.80.67» 90.180.35.207 — — [04/Nov/2020:06:47:11 +0000] «GET / HTTP/1.0» 301 169 «-» «-» «-» 46.246.122.77 — — [04/Nov/2020:06:53:22 +0000] «GET / HTTP/1.1» 301 169 «» «Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36» «-» 66.249.76.16 — — [04/Nov/2020:06:53:30 +0000] «GET / HTTP/1.1» 301 169 «-» «Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)» «-» 66.102.9.118 — — [04/Nov/2020:07:11:19 +0000] «GET / HTTP/1.1» 301 169 «-» «Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.75 Safari/537.36 Google Favicon» «46.159.204.234» 71.6.167.142 — — [04/Nov/2020:07:11:55 +0000] «GET / HTTP/1.1» 301 169 «-» «Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36» «-»

Помимо access логов веб-сервер также пишет error лог, там хранится информация обо всех ошибках при обработке HTTP запросов. Также и в ваших скриптах, логи могут делиться на информационные — вывод текущего состояния выполнения, отладочной информации, и на логи с ошибками — вывод исключений, ошибок с дополнительной информацией для отладки, содержащей контекст).

[short.log] — Telnet сервер и Телеграм бот

logging и Python

Точкой входа в работу с логированием в Python является библиотека logging. На первый взгляд может показаться, что библиотека сложная и запутанная, но потратив некоторое время на её изучение, можно убедиться в обратном. Для меня logging это классический пример дизайна ООП, где композиция преобладает над наследованием, поэтому в исходном коде библиотеки можно встретить множество функциональных классов. Цель этого туториала разобрать по косточкам каждый класс и воссоединить их в единый механизм логирования в Python. Начнём-с.

Logger

Чтобы начать работу с logging необходимо в импортировать библиотеку logging и вызвать функцию getLogger, передав ей имя будущего логера. Функция вернёт инстанс объекта Logger. Логер это рычаг за который мы дёргаем каждый раз, когда нам нужно записать информацию в лог.

import logging logger = logging.getLogger(‘logger’)

Еще по теме:  Как искать приватные чаты Телеграм

Заметьте, что функция getLogger принимает на вход параметр — имя логера. Можно назначать любое имя или __name__ . Вызов getLogger с одинаковым названием вернёт один и тот же инстанс логера.

Я рекомендую использовать в качестве аргумента __name__ , в этом случае не нужно беспокоиться, что разные модули могут ссылаться на один и тот же логер.

Класс Logger предоставляет наружу несколько методов для записи сообщений разного уровня. Уровни необходимы для понимания контекста сообщения/лога, который мы пишем. В logging существует несколько уровней:

  1. DEBUG — уровень отладочной информации, зачастую помогает при разработке приложения на машине программиста.
  2. INFO — уровень вспомогательной информации о ходе работы приложения/скрипта.
  3. WARNING — уровень предупреждения. Например, мы можем предупреждать о том, что та или иная функция будет удалена в будущих версиях вашего приложения.
  4. ERROR — с таким уровнем разработчики пишут логи с ошибками, например, о том, что внешний сервис недоступен.
  5. CRITICAL — уровень сообщений после которых работа приложения продолжаться не может.

По умолчанию в logging задан уровень WARNING, это означает, что сообщения уровня DEBUG и INFOбудут игнорироваться при записи в лог. Разработчик может самостоятельно задать необходимый ему уровень логирования через метод setLevel у инстанса Logger:

logger.setLevel(logging.DEBUG)

Методы для записи сообщений с разными уровнями именуются по тому же принципу:

logger.debug(‘debug info’) logger.info(‘info’) logger.warning(‘warning’) logger.error(‘debug info’) logger.critical(‘debug info’)

Также есть ещё один метод — exception . Его желательно вызывать в блоке except при обработке исключения. В это случае он сможет уловить контекст исключения и записать его в лог:

try: 1/0 except : logger.exception(‘exception’)

Handler

Задача класса Handler и его потомков обрабатывать запись сообщений/логов. Т.е. Handler отвечает за то куда будут записаны сообщения. В базовом наборе logging предоставляет ряд готовых классов-обработчиков:

  • SteamHandler — запись в поток, например, stdout или stderr.
  • FileHandler — запись в файл, класс имеет множество производных классов с различной функциональностью (ротация файлов логов по размеру, времени и т.д.)
  • SocketHandler — запись сообщений в сокет по TCP
  • DatagramHandler — запись сообщений в сокет по UDP
  • SysLogHandler — запись в syslog
  • HTTPHandler — запись по HTTP

Это далеко не полный список. Чтобы посмотреть все, перейдите по ссылке выше. Для указания Handler, необходимо у инстанса Logger вызвать метод addHandler и передать туда инстанс класса Handler. У одного Logger инстанса может быть множество обработчиков.

Пример записи лога в stdout:

import sys import logging from logging import StreamHandler logger = logging.getLogger(__name__) logger.setLevel(logging.DEBUG) handler = StreamHandler(stream=sys.stdout) logger.addHandler(handler) logger.debug(‘debug information’)

Если запустить этот скрипт, то можно увидеть сообщение:

debug information

Как узнать, что о вас известно Telegram. Прямо сейчас

Favorite

Как узнать, что о вас известно Telegram. Прямо сейчас

Будучи пользователем многочисленных интернет-сервисов и мессенджеров, вы вправе знать, что каждому из них известно о вас.

Подобная функция теперь есть и у Telegram. История переписки, отправленные фотографии, аудиозаписи — представители мессенджера подтверждают, что хранят эти данные на своих серверах.

В этом материале мы расскажем, как узнать, что именно хранится на удаленных жестких дисках Telegram и получить всю информацию о себе за то время, что вы пользуетесь мессенджером.

Почему доступ к личным данным открыли только сейчас?

С 25 мая 2018 года на территории Евросоюза вступил в силу Общий регламент по защите данных (GDPR). Согласно тексту постановления все граждане, проживающие и временно пребывающие в ЕС, должны иметь контроль над собственными данными.

Еще по теме:  Телеграмм не грузит чаты

Проще говоря, любой интернет-сервис, социальная сеть или мессенджер обязаны предоставить пользователю информацию о тех данных, что хранятся на серверах.

Не выполнять закон учредители подобных сервисов не могут — штрафы очень велики. За несоблюдение закона предусмотрены выплаты до 20 млн евро или до 4% от годового мирового оборота компании за предыдущий финансовый год. Зависит от того, что больше.

После вступления регламента в силу разработчики добавили в свои продукты соответствующие инструменты по экспорту данных. Появилась подобная функциональность и у Telegram.

Рассказываем, что о вас знает мессенджер от Павла Дурова и Ко, а заодно приведем подробную инструкцию экспорта личных данных из базы Telegram.

Как узнать, какую информацию о вас хранит Telegram

По случаю принятия GDPR, разработчики Telegram еще в конце мая запустили специального бота. Правда, заработал он только 28 июня, получив функцию экспорта данных.

Шаг 1. Первое и главное условие: вам нужен клиент Telegram Desktop версии 1.3.8 и выше. Экспорт пока возможен только с его помощью.

Шаг 3. В открывшемся чате введите сообщение:

P.S. Взаимодействие с ботом может и не потребоваться. Инструмент экспорта доступен в Настройках мессенджера.

Шаг 4. Открываем Настройки Telegram и находим пункт Экспорт данных из Telegram.

Шаг 5. В открывшемся списке помечаем галочками те пункты, которые вас интересуют.

Какие данные можно экспортировать

В настройках экспорта Telegram Desktop можно задать ограничение по размеру для мультимедийных файлов, выбрать Фотографии, Видеозаписи, Голосовые сообщения, Стикеры, Анимации и т.д.

Вот список доступных для экспорта данных:

  • Информация об аккаунте — данные о вашем профиле
  • Список контактов — Telegram не скрывает, что хранит данные о ваших контактах, но только после того, как вы разрешили этой действие при первом запуске приложения
  • Личные чаты — пользовательская переписка в режиме диалога
  • Чаты с ботами — переписка с ботами, сервисными и служебными аккаунтами
  • Частные группы, частные каналы, публичные группы, публичные каналы
  • Фотографии
  • Видеозаписи
  • Голосовые сообщения
  • Круглые видеосообщения
  • Стикеры
  • Анимации GIF
  • Файлы — любые вложения с возможностью установки ограничения по размеру вплоть до 1,5 ГБ
  • Активные сеансы — с помощью этого пункта можно узнать о запуске Telegram на всех ваших гаджетах
  • Другие данные — экспорт пока работает в Бета-режиме и, похоже, что разработчики добавят еще несколько пунктов

В конце списка настроек экспорта есть возможность выбора директории для сохранения и формат финального файла. Предпочтительнее будет оставить HTML.

Шаг 6. Нажимаем Экспортировать и ждем 24 часа (возможно, чуть меньше).

Шаг 7. На следующий день вам придет уведомление об окончании подготовки файлов для экспорта.

Теперь можно приступить к экспорту прямо из появившегося уведомления.

Что сохраняется при экспорте

В принципе все, что вы указали при настройках экспорта.

Разложены они по нескольким папкам. Есть сводка по полученным результатам экспорта. Все чаты разделены по папкам, каждая папка — это чат с конкретным пользователем. Внутри много HTML файлов с именами по хронологии (от старых сообщений к новым).

Есть все фотографии, видео и аудио, которыми вы обменивались с пользователями за все время использования Telegram.

По сути, есть абсолютная вся информация, которой вы обменивались в мессенджере.

Еще по теме:  Как удалить просмотренные видео в Телеграмме на Андроид

Сколько весит такая база

Тут все очень относительно. Я лишь приведу частный пример своего экспорта.

В настройках указывал Фото, текст, не отмечал публичные каналы и частные чаты. Активно пользуюсь Telegram с середины 2016 года.

На выходе получил 3 770 файлов объемом 348 МБ.

Стоит ли бояться Telegram

Экспорт в Telegram позволяет увидеть реальную картину и просмотреть всю личную информацию, которая хранится на серверах мессенджера. Для удобной навигации по окончанию экспорта создается специальный HTML-файл Exported Data.

Он ссылается на всю полученную информацию.

Мне удалось выяснить, что на серверах Telegram хранятся:

  • 799 контактов из моей адресной книги
  • 53 контакта, с которыми я хотя бы раз переписывался в Telegram
  • 73 чата
  • 1 удаленный чат
  • 1 фото профиля

Ну и вся коллекция фотографий, видео и аудио, которыми я обменивался с этими контактами.

Для успокоения в том же файле есть приписка от разработчиков:

Здесь все данные, которые вы запрашивали. Напоминаем, что мы не используем информацию о вас для рекламы, не продаем ее другим и не принадлежим какой-либо «группе компаний».
На серверах хранится только та информация, которая позволяет вам полноценно пользоваться Telegram. Например, благодаря облачным чатам вы имеете доступ к своей переписке с любого устройства без использования сторонних бэкапов, а синхронизация контактов позволяет вам находить в Telegram тех, кого вы уже знаете.

В принципе, все правдоподобно и не вызывает подозрений. ЕС учредила слишком высокие штрафы, чтобы нарушать регламент GDPR.

А если волнение за сохранность личной информации вас все же не покидает, в настройках Telegram есть замечательный пункт «Автоматическое удаление аккаунта». Можно попробовать, а вдруг поможет.

(8 голосов, общий рейтинг: 4.63 из 5)
Хочешь больше? Подпишись на наш Telegram.

Favorite

Источник: www.iphones.ru

Как парсить Telegram канал при помощи PHP 37

Когда-то на Хабре была опубликована статья как спарсить Телеграм канал при помощи PHP, как показала практика после прочтения материала появляется ещё больше вопросов, или в процессе тестирования «ни чего не работает».

Нам понадобится:

  1. Действующая учётная запись в Телеграм
  2. Tor браузер под рукой (если вы из РФ и у вас заблокирован доступ к сайту Телеграм)
  3. Обычный хостинг, например Бегет
  4. Знания php и умение использовать composer
  5. PHP 7.2
  6. Умение пользоваться консолью сервера. (Некоторые операции будут выполняться в консоли)

Итак, нужно перейти на сайте Телеграм https://my.telegram.org:

  1. Вводим свой номер телефона
  2. Указываем код подтверждения пришедший в ваше клиентское приложение Телеграм
  3. Переходим в меню API development tools

На этой странице нам нужно заполнить данные о нашем создаваемом приложении (на один номер — одно приложение).

Нам понадобится два параметра: App api_id и App api_hash, далее мы их будем использовать в коде вызова для получения постоянных ключей авторизации.

Следующее что нам надо, это скачать проект https://github.com/danog/MadelineProto к себе в отдельную папку на хостинге и при помощи composer установить все зависимости.

PS: в коде будет использоваться PHP функция «readline» — предварительно установите её на ваш хостинг и проверьте её доступность в консольном режиме PHP.

Для работы с Телеграм из PHP нам потребуются специальные ключи доступа. Для этого воспользуемся «одноразовым» классом, для создания таких ключей:

Источник: coderun.ru

Рейтинг
( Пока оценок нет )
Загрузка ...