Русский
Русский
English
Статистика
Реклама

Твиттер

Перевод Кто стоит за случившимся в среду эпичным взломом Твиттера?

18.07.2020 00:05:02 | Автор: admin
Прим. перев.: статья с сайта krebsonsecurity.com от автора Брайана Кребса, в прошлом журналиста The Washington Post, ныне независимого специалиста по кибербезопасности.

В среду 15 июля Твиттер погрузился в хаос в учётных записях наиболее известных в мире людей, директоров компаний и знаменитостей, стали появляться ссылки на мошеннические сайты, собирающие биткоины. В Твиттере говорят, что эта атака стала возможной, поскольку кто-то обманул или принудил одного из сотрудников компании дать доступ ко внутренним административным инструментам платформы. В данной статье я попытаюсь составить временной график этой атаки и указать на свидетельства о том, кто за ней может стоять.

Первые свидетельства атаки стали заметны публике примерно в 15 часов по североамериканскому восточному времени (UTC-5; летом UTC-4), когда в учётной записи криптовалютной биржи Binance появилось сообщение о том, что биржа скооперировалась с организацией CryptoForHealth с намерением раздать 5000 биткоинов нуждающимся, а также ссылка, куда люди могли отправлять пожертвования.

Через несколько минут похожие твиты появились в учётных записях других криптовалютных бирж, а также в аккаунтах кандидата в президенты США Джо Байдена, главы Amazon Джеффа Безоса, бывшего президента США Барака Обамы, главы Tesla Илона Маска, бывшего мэра Нью-Йорка Майкла Блумберга и инвестора Уоррена Баффетта.



Кажется смехотворным, что кто-то реально поверил бы в эти запросы и отправил им деньги, однако анализ кошелька BTC, который рекламировали множество взломанных учётных записей, показал, что за последние 24 часа он обработал 383 транзакции и получил почти 13 биткоинов, что примерно равно $117 000.

Компания Twitter выпустила заявление об обнаружении координированной атаки на некоторых наших сотрудников методом социальной инженерии, в результате которой удалось получить доступ ко внутренним системам и инструментам. Нам известно, что злоумышленники использовали полученные доступ для получения контроля над многими популярными (включая и подтверждённые) учётными записями и размещения сообщений от их имени. Мы изучаем вопрос того, какие ещё возможные злонамеренные действия они могли совершить или к какой информации получить доступ, и поделимся результатами, как только получим их.

Есть убедительные признаки того, что атака осуществлялась людьми, традиционно специализирующимися на взломе соцсетей через подмену SIM всё чаще встречающийся вариант преступлений, включающий в себя подкуп, взлом или принуждение сотрудников мобильных операторов или соцсетей с целью получения доступа к учётной записи жертвы.

Деятели из сообщества любителей подмены SIM обожают перехватывать доступ к социальным учётным записям из т.н. категории OG. OG, или original gangster это короткие имена учёток, типа @B или joe. Обладание подобным аккаунтом повышает статус, влияние и общественный вес в кругах хакеров, занимающихся подменой SIM, поскольку за перепродажу подобных учёток иногда можно выручить по нескольку тысяч долларов.

Уже за несколько дней до атаки, произошедшей в среду, в интернете появились признаки того, что некоторые участники хакерского сообщества продавали возможность поменять емейл, привязанный к любой учётной записи твиттера. В посте на форуме OGusers, посвящённом взлому аккаунтов, пользователь Chaewon рекламировал возможность привязки заданного емейла к любой учётной записи твиттера за $250 и доступа к учёткам за $2000-$3000.



Это не какой-то особый метод. Если вам не дадут емейл, мы вернём деньги. Если учётку забанят, мы не несём ответственности, писал Chaewon в записи под названием запросы на подмену емейла для твиттера.

За несколько часов до того, как в учётных записях криптобирж и знаменитых людей в твиттере начали появляться призывы жертвовать биткоины, атакующие сконцентрировались на взломе нескольких OG-учёток, включая "@6".

Этим аккаунтом раньше владел ныне покойный Адриан Ламо, известный, как бездомный хакер, взломавший сеть New York Times, а также сдавший властям США Брэдли Мэннинга, военнослужащего, который передал сайту WikiLeaks документы различной степени секретности. Сейчас учёткой @6 управляет давний друг Ламо, исследователь в области безопасности и телефонный фрикер, который попросил называть его в этой истории прозвищем Lucky225.

Lucky225 сказал, что незадолго до 2 часов дня по североамериканскому восточному времени в среду он получил код для подтверждения сброса пароля для учётной записи @6 через Google Voice. Lucky225 сказал, что до этого запрещал отправку SMS-уведомлений для многоступенчатой авторизации, и использовал временные коды, генерируемые мобильным приложением.

Но поскольку атакующие смогли поменять емейл-адрес, привязанный к учётной записи @6, и запретить многоступенчатую авторизацию, на его аккаунт в Google Voice и на новый емейл, зарегистрированный атакующими, был отправлен одноразовый код подтверждения.

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

Lucky225 сказал, что у него до сих пор нет возможности проверить, были ли с его адреса отправлены какие-то твиты после того, как его взломали, потому что у него пока нет к нему доступа (весь этот эпизод он подробно разобрал в посте на сайте Medium).

Примерно в то же время, когда был уведён аккаунт @6, была захвачена ещё одна учётка @B. Затем кто-то начал постить изображения админки твиттера, на которых было видно учётную запись @B.



В Твиттере отреагировали, удалив с платформы все скриншоты со снимками их внутренних инструментов, а в некоторых случаях временно заблокировали учётные записи.

Ещё в одном аккаунте shinji также выкладывали изображения внутренних инструментов твиттера. За несколько минут до бана там опубликовали твит с призывом подписываться на @6 аккаунт, который увели у Lucky225.



Здесь и здесь, на сайте Internet Archive можно скачать кэшированные версии твитов Shinji до атаки в среду. На них видно, что пользователь утверждает, что владеет двумя аккаунтами OG в инстаграме j0e и dead.

Источник из службы безопасности одного из крупнейших мобильных операторов США сообщил нам, что аккаунты j0e и dead привязаны к печально известному хакеру, занимающемуся подменой SIM-карт по прозвищу PlugWalkJoe. Исследователи следили за PlugWalkJoe, поскольку считается, что за несколько лет он совершил несколько подмен SIM-карт, за которыми последовали кражи большого объёма биткоинов.



Теперь посмотрим на изображение в профиле в другом архиве аккаунта shinji (ниже). Изображение то же самое, что и на скриншоте от среды, когда Joseph/@Shinji выкладывал в ленту снимки внутренних инструментов Твиттера.



Наш источник сообщил, что этот человек был одним из ключевых людей в составе группы, занимающейся подменой SIM под названием ChucklingSquad. Считается, что это они увели учётную запись в твиттере Джека Дорси [создателя твиттера / прим.перев.] в прошлом году. В Wired писали, что аккаунт jack увели, когда хакеры организовали подмену SIM-карт оператора AT&T номер этого провайдера привязан к аккаунту Дорси.


Твит, отправленный с учётной записи Джека Дорси, когда его взломали, упоминает PlugWalkJoe и других членов Chuckling Squad.

Источник из индустрии мобильной безопасности рассказал нам, что в реальной жизни PlugWalkJoe это Джозеф Джеймс Коннор, 21-летний житель Ливерпуля. Сейчас он находится в Испании, где учился в университете, и пока не может вернуться домой из-за ограничений на перемещения, связанных с коронавирусом.

Источник сообщил, что деятельность PlugWalkJoe пристально изучается, и одну женщину-следователя наняли для того, чтобы она познакомилась с ним и убедила пообщаться в видеочате. Затем на записанном в этом чате видео следователи обнаружили характерный бассейн.

Источник рассказал, что бассейн, замеченный на фотографии в инстаграмме PlugWalkJoe, instagram.com/j0e, точно такой же, какой они видели в видеочате.



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

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

Продвижение бота на 214 тысяч процентов

26.12.2020 16:10:02 | Автор: admin

Примерно с начала декабря провожу эксперимент по продвижению (если угодно - хайпу) в Твиттере своего бота. Результаты мне нравятся. Возможно кому будет интересно как почти при нулевом бюджете сделать эффективную рекламную кампанию в сети. Скриншоты, статистика, части кода и рассказы ниже.

Теория

По моему мнению реклама в сети скоро будет активно осваивать короткие звуковые споты. Всё чаще люди начинают слушать интернет, а не только его смотреть. Интернет-радио,Spotify,iTunesи множество других служб для "прослушки" сети очень быстро внедряются в массовое употреблением. Даже Твиттер вывел на рынок звуковые твитты.Росту значения звука способствует и рост числа индивидуальных устройств для прослушивания - наушники стали обыденным явлением и значит звуковая реклама можетбыть индивидуализированна и подана отдельному человеку в зависимости от его предпочтений как и традиционная контекстная реклама.

Практика

О своём боте для звукодзи я уже писал в статье на Хабр

В начале декабря я добавил к нему функцию озвучки гифок и картинок. То есть нужно послать боту изображение в виде файла, а потом голосовое сообщение. Бот вернёт короткий спот видео, который можно уже вставить куда угодно. Мы проводили эксперименты с размещением готовых видео роликов в Твиттере чтобы оценить реакцию пользователей и их "вовлечённость".

Чтобы бот работал корректно в социальной сети во время тестирования были обнаружены и устранены некоторые проблемы. В частности:

  • Обрезка по времени.

Пользователи чаще всего не попадают точно в начало гифок. Тем более, что и при отсылке голосовых сообщений запись начинается не сразу - есть задержка физическая, то есть буквально зависание пальца на кнопке, и есть задержка логическая, то есть мессенджер вставляет небольшую паузу от начала записи. Для устранения задержек я "сдвинул" начало записи к началу видео. Вот таким образом:

Объяснение кода

Функция вырезана из класса.

Для обработки звуков/видео используется ffmpeg

PWF --> место хранение файлов для последующий обработки

cmd --> это переименованная функция system встроенной в python библиотеки os

В функции connect_video_voice соединяется звук, и видео.

Также есть функция по соединению звука и картинки.

def connect_photo_audio(self,imagepath, audiopath, name=urandom(30).hex()):      targetvideotype = "mp4"      cmd(f'ffmpeg -y -loop 1 -i "{imagepath}" -i "{audiopath}" -c:v libx264 -tune stillimage -c:a aac -b:a 192k -pixfmt yuv420p -shortest -vf "scale=trunc(iw/2)2:trunc(ih/2)2" "{self.PWF}/{targetvideotype}/{name}.{targetvideotype}"')      return f'{self.PWF}{targetvideotype}/{name}.{targetvideo_type}'
def connect_video_voice(self,videopath, audiopath, name=urandom(30).hex(),):  sourcevideotype = "mp4"  cmd(f'ffmpeg -streamloop -1 -i "{videopath}" -i "{audiopath}" -shortest -c:v copy -c:a aac -strict experimental -map 0:v:0 -map 1:a:0 -y "{self.PWF}/{sourcevideotype}/{name}.{sourcevideotype}"')      return f'{self.PWF}/{sourcevideotype}/{name}.{sourcevideo_type}'
Логика обрезания

Если звук длинее видео, то видео повторяется по кругу, если же звук меньше чем видео, то видео обрезается до размера звука.

f"ffmpeg -stream_loop -1 -i "{video_path}" -i "{audio_path}" -shortest -c:v copy -c:a aac -strict experimental -map 0:v:0 -map 1:a:0 -y "{self.PWF}/{source_video_type}/{name}.{source_video_type}"
  • Ограничение по времени

Чтобы пользователь не записывал слишком длинные видео, не перегружал систему ради своих приколов да и для того чтобы избежать случайных нажатий я предусмотрел ограничение по времени в одну минуту кодом:

Пояснение о коде

Для работы с телеграммом используется PyTelegramBotAPI

После получения голосового сообщения, в message.voice хранится информация о нем. В том числе хранится и duration, в ней хранится длительность голосового сообщения.

if message.voice.duration > 60:  self.BOT.send_message(message.fromuser.id, "Your message too long. Max size of message: 1 minute")      return

Внедрение

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

Ежедневно мы публиковали несколько твиттов с внедрённым видео. Вот статистика просмотров

Статистика в Твиттер

Для измерения переходов к самому боту я написал дополнительный код, собирающий статистику обращений к боту и манипуляций с ним.

Объяснение кода

get_users_graphic__activity__ функция, которая вызывается при команде /activity к боту.

Здесь идет проверка на доступы, если пользователь написавший боту /activity не занесен в базу данных как админ, или же как helper, то в графике ему будет отказано.

create_graphic_activity --> функция, которая строит графики на основе функции которая получает данные о пользовательской активности в боте.

limit--> переменная, используемая для указания лимита возвращаемой активности в дня. По умолчанию limit имеет значение Продвижение бота с услугами через твиттер

/activity 3 вернет график активности за последние 3 дня.

def get_users_graphic__activity__(self):    if self.MESSAGE.chat.id in HELPERS or self.MESSAGE.chat.id == ADMIN_USER_ID:        graphic = create_graphic_activity()        if graphic:            try:                limit = int(re.sub('\D', '', self.MESSAGE.text))            except Exception:                limit = 7            self.BOT.send_photo(self.MESSAGE.chat.id, photo=create_graphic_activity(limit=limit))        else:            self.BOT.send_message(self.MESSAGE.chat.id, LANGUAGES["commands"]["server_crashed"])    else:        self.BOT.send_message(self.MESSAGE.chat.id,LANGUAGES["commands"]["you_not_have_permissions"])

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

В планах

Возможно некоторым рекламодателям уже можно использовать моего бота для продвижения своих товаров и услуг. Можно включать свой логотип или изображение товара в картинку или дополнять слоганом звуковое сообщение. Я пока продолжу совершенствовать функционал программы. В ближайшее время я планирую дополнить бота функциями выравнивания по силе звука и перезаписью дублей. Если для перезаписей дублей код не трудно дописать, то выравнивание силы звука - нетривиальная задача, поскольку для рекламных целей как раз изменение силы звука может быть "цепляющим" внимание фактором.

Подробнее..

Как замедлили Twitter? Что такое DPI? Разбор

13.04.2021 20:10:28 | Автор: admin
Наверное, вы слышали, что на этой неделе стартовало так называемое замедление Twitter.

С 10 марта 100% мобильного и 50% стационарного трафика Twitter в России официально замедлены. Все это стало возможным благодаря технологии DPI. Мы решили разобраться, как это работает и как устроен механизм замедления.

Почему это важно? Можно предположить, что Twitter это репетиция перед замедлением/блокировкой Facebook, а потом YouTube.

Поэтому сегодня разберемся, что такое DPI, как работает и какие у него возможности.

Будет ли у нас как в Китае? И как от этого защититься?



Начнем издалека, в ноябре 2019 года вступил в силу закон, по которому операторы связи должны были начать установку специальных технических средств противодействия угрозам (ТСПУ).

Позднее выяснилось, что за аббревиатурой ТСПУ скрывалась известная любому сисадмину технология DPI Deep Packet Inspection или Глубокий анализ пакетов. Не путать с плотностью пикселей на дюйм это тоже DPI, но Dots Per Inch.



И вот она дошла до тестирования в масштабах страны. На примере твиттера.

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

Как работает DPI?


Сисадмины знают, что передача данных в сети разделена на уровни: от физического, где передаются биты, до уровня приложений, где упаковывается сообщение в мессенджере. На каждом уровне пакет данных пополняется своими метаданными, относящимися к нему. Получается своеобразная матрешка. Например, какое приложение отправляет информацию, на какой IP-адрес и так далее.

Так вот DPI умеет просматривать данные разного уровня и сами пакеты. И оно может понять не только откуда и куда идет трафик, но и что это за трафик конкретно: текстовое сообщение, картинки или видео, голосовой трафик Skype или может даже торрент.А дальше сделать с ним, то что хочется:
  • Приоритизировать
  • Ограничить по скорости
  • Перенаправить
  • Заблокировать
  • Ну или, конечно, передать получателю.

Кстати насколько именно замедляется Twitter сейчас непонятно. Лично я проблем пока не наблюдаю. Но почему так мы еще поговорим.



Это сильно упрощает задачи по блокировке сайтов и сервисов. Почему?

Раньше блокировки делались по IP-адресам. А это означало, что сервис ограничивался полностью. А кроме этого страдали сайты, которые записаны на тот же IP-адрес.

Теперь можно внимательно рассматривать пакеты и заблокировать, к примеру только загрузку картинок.

Но как вся эта вундер-технология работает?


Есть две вещи, которые анализирует DPI: сами пакеты информации, причем как метаданные и заголовки, так и внутреннее содержимое. И второе это так сказать поведение пакетов данных.



Давайте посмотрим на пример. Вот так выглядит заголовок пакета при получении данных браузером и с ним все ясно. Сверху написан протокол HTTP, то есть скорее всего веб-страничка. Мы видим адрес запроса. И даже, какие именно данные отправляются.



В данном случае, это небольшая картинка. И ее размер в байтах тоже написан. Даже не нужно залезать внутрь самих данных, чтобы понять, что перед нами.





С зашифрованным трафиком сложнее.Тут инфы намного меньше. Система увидит, какой порт используется (это дает намек на тип приложения), IP-адреса, тип шифрования. А все остальное зашифровано, даже URL-адрес.

Есть и вторая часть алгоритмов DPI. DPI применяет так называемый эвристический анализ: из пакета извлекаются небольшие кусочки данных, так сказать образцы. А дальше система смотрит на что эти данные похожи. Сравнивая их с огромной базой известных образцов. Такие образцы данных называются сигнатурами трафика.



Это очень похоже на то как работает Shazam, который сравнивает небольшой кусочек песни, записанный вами на диктофон, с огромной базой сигнатур песен которые хранятся на сервере. То есть по большому счету DPI это Shazam для трафика.



Кстати, точно по такому же принципу работают антивирусы, они сравнивают сигнатуры новых вирусов с огромной базой известных вирусов.

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

И главное, что поскольку все происходит в реальном времени, такой подход позволяет не сильно замедлять интернет.

Как можно использовать DPI?


Классифицировав пакет, технология DPI позволяет много чего с ним сделать и в целом технология может быть полезна. С помощью DPI можно повышать качество и скорость соединения, приоритизируя один тип трафика над другим.Например, если в вашей локалке все качают торренты, то люди не смогут нормально созвониться по ZOOM по работе. Тогда DPI позволит трафику ZOOM поставить приоритет повыше.

Но если вы Роскомнадзор, у вас вероятно другие приоритеты.

Но вопрос в том, кто будет определять, какой трафик приоритетный а какой нет, остается открытым. Например, при помощи DPI вполне можно продвигать одни сервисы и замедлять другие: отдавая приоритеты отечественным аналогам. К примеру, можно замедлить YouTube и при этом ускорить Rutube.В общем, вариантов для фантазии масса.

Архитектура или почему все снова пошло не по плану?


Но если существует такой мощный инструмент, почему же с Twitter по-прежнему все весьма неплохо?

Важным является вопрос архитектуры и внедрения: то есть, где именно устанавливать DPI-оборудование. Чтобы весь трафик страны проходил проверку, необходимо, чтобы операторы ставили DPI на всех своих пограничных шлюзах. Логично.

Вы обратили внимание, что анонсировано: Замедление для 100% мобильного трафика, а для стационарного только 50%? Распространять опасный по мнению РКН контент через компы не так опасно, что ли? Нет.

Просто внедрили технологию далеко не все. С тусовкой мобильных операторов удалось договориться. А маленьких местных провайдеров интернета огромное количество. Но это полбеды.

Во-вторых, как и в случае с Telegram, заблокировать Twitter не так уж и просто. Дело в том, что Twitter для обеспечения высокой скорости работы сервиса по всему миру пользуется услугами CDN-провайдера. Он называется Akamai.

CDN Content Delivery Network сеть доставки контента.




CDN-провайдер предоставляет Твиттеру распределенную по всему миру инфраструктуру. Как правило, это необходимо, чтобы пользователь при обращении к какому-либо сайту получал информацию не с его основного сервера, который может находиться на другом конце света, а с ближайшего к нему узла.

Такая распределенная система доставки контента заметно усложняет возможность блокировки или ограничения доступа к ресурсу. Потому что если приложение не получит данные по одному адресу, оно пойдет в другой. А там у оператора может быть не включен DPI.



Чтобы наверняка ограничить доступ к интернет-сервису, использующему CDN, требуется ограничить доступ практически ко всей сети CDN-провайдера, у которого могут быть десятки тысяч серверов по всему миру. Иными словами, чтобы заблокировать Twitter, надо заблокировать CDN-провайдера, а от этого снова ляжет половина интернета.

И я даже не буду останавливаться на курьезной ситуации, когда ограничивают полосу пропускания не только для домена twitter.com, но и для всех доменов, в названии которых есть сочетание t.co это короткий домен, принадлежащий твиттеру. Таким образом, ограничениям подвергались и другие сайты, к примеру: reddit.com, microsoft.com и даже сайт Russia Today rt.com. Предположительно по этой же причине прилегли сервера ростелекома.

Впрочем, со временем это вроде починили. Интересно другое.

Ограничения DPI. Что делать?




Но самое любопытное: поскольку это своего рода гадание, нет единого стандарта DPI. У каждого поставщика оборудования свои алгоритмы и технологии.

Качество и эффективность работы DPI очень сильно зависит, от качества базы сигнатур, которую должен на постоянной основе обновлять поставщик. Иными словами, если Twitter что-то поменяет в составе пакетов трафика, то не факт, что старые DPI смогут классифицировать трафик по старым сигнатурам.



Ну и наконец, DPI достаточно легко обойти при помощи VPN, так как VPN шифрует весь трафик и подменяет ваш IP-адрес, то и DPI для него не страшен.



Но ожидается и более простое решение. Протоколы шифрования тоже не стоят на месте. И с приходом TLS 1.3 и DNSSEC еще больше данных приложения и пользователя будут скрыты от DPI. И понять, что в системе за пакет будет еще сложнее. Такие дела.
Подробнее..

Твиттер Илона Маска в телеграме и с переводом на русский

16.06.2021 16:13:28 | Автор: admin

Хочу поделиться одной моей поделкой, возможно, кому-то она тоже будет полезна. В этой статье я поделюсь тем, что я сделал, чтобы читать Twitter-аккаунт Маска в удобном мне месте и имея под рукой перевод англоязычных твитов на русский.

Проблема

Последние несколько лет замечаю за собой, что хочу начать регулярно почитывать тот или иной блог, но если он не находится в зоне удобного или привычного доступа (к сожалению весь твиттер для меня таков, ничего не могу с собой поделать, не читатель я твиттера), то я довольно быстро забиваю на это. Еще хуже, если блог на другом языке, тут появляется дополнительная проблема, когда из-за технических терминов или разговорного жаргона сложно понять смысл. Собственно такие "преграды" обычно и приводят к тому, что вроде бы и хочется, но как-то не делается.

Идея

Сейчас я делаю на заказ программных роботов, которые в онлайне обрабатывают новостные потоки в соцсетях, фильтруют, выбирают наиболее интересные и цитируемые, и передают заказчику. Я подумал, почему бы мне не использовать свои навыки и не облегчить себе жизнь в описанной выше проблеме. Для этого нужно только каждые сколько-то минут заходить в твиттер, забирать новые сообщения, прогонять их через переводчик и отправлять в канал в телеграме. Кажется, ничего сложного.

Подводные камни

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

Вторая проблема, отказ твиттера в выдаче доступа к API в описанных мной кейсах. То есть остается единственный вариант заниматься веб-скраппингом. Ну что ж.

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

Технологии

Я решил попробовать самостоятельно и начал гуглить что-то вроде "parsing twitter without API". Нашлось достаточно много решений, сразу скажу, что решениеtwint библиотека с открытым исходным кодом, которая вполне работоспособна и подошла под мою задачу.

Для того, чтобы перевести текст с английского на русский, я сначала было собирался использовать google translate, но понимал, что в нем ограниченное количество бесплатных переводов, решил что попробую использовать единственную известную мне нейросеть для перевода с английского на русскийfairseqот Facebook AI Research. Качество перевода показалось мне вполне приемлемым с точки зрения того, чтобы понять в чем суть твита, хотя оно и не было идеальным.

Все это я обернул в скрипт на языке программирования python и запустил на постоянную работу на своем сервере.

Примеры кода

Чтобы собрать данные из твиттера без использования выделенных девелоперских доступов, логинов, паролей и API, нужно сделать следующее:

Установить библиотеку twint

pip3 install twint

Запустить код формата

twint -u <name_of_twitter_user> -o output.csv --csv --since 2020-01-01 --retweets

Здесь есть важный момент, что запускается это все из-под bash, при том что у библиотеки есть python API (да и написана она на питоне), но при этом я потратил довольно много времени и оно ни в какую не заводилось. При этом если запускать из командной строки - все кроме автоматического перевода постов у меня работало.

Из функционала, который есть у библиотеки еще отмечу:

  • Возможность искать твиты пользователя по ключевому слову

twint -u username -s pineapple
  • Возможность находить твиты пользователя с указанием номеров телефонов и почт

twint -u username --email --phone
  • Поиск твитов вокруг определенной локации

twint -g="48.880048,2.385939,1km" -o file.csv --csv
  • Сохранение в Elasticsearch или SQLite

twint -u username -es localhost:9200twint -u username --database tweets.db
  • Сохранение фоловеров, подписок и избранных для пользователя

twint -u username --followerstwint -u username --followingtwint -u username --favorites

Данные сохраняются в csv файл, в котором присутствуют такие поля как (перечислю те, которые использовал сам, так как их много и большинство несут мало информации):

id - идентификатор сообщения

conversation_id - идентификатор беседы

created_at - дата создания сообщения

tweet - текст сообщения

mentions - упоминания пользователей твиттера ( список словарей)

urls - вставленные по правилам твиттера ссылки (например на youtube)

photos - ссылки на картинки

link - ссылка на твит

reply_to - список словарей с пользователямя, ответом на твиты которых является твит

У библиотеки есть также возможность перевода на другой язык, но она у меня совсем не заработала. Собственно по этой причине я искал другую возможность. Нашел я, как упоминал выше, открытую разработку Facebook AI Research - библиотеку fairseq, в которой можно скачать веса нейронки для перевода в частности из английского в русский и наоборот.

pip install hydra-core

Итого необходимо было установить:

pip install torch pip install hydra-core==1.0.0 omegaconf==2.0.1pip install fastBPE regex requests sacremoses subword_nmt 

Вообще мануал по установке и пример использование есть на сайте pytorch, но как видите у меня он немного отличается. Для того, чтобы сделать перевод можно пользоваться следующим куском из примера - он вполне рабочий:

import torch# Compare the results with English-Russian round-trip translation:en2ru = torch.hub.load('pytorch/fairseq', 'transformer.wmt19.en-ru.single_model',                        tokenizer='moses', bpe='fastbpe')ru2en = torch.hub.load('pytorch/fairseq', 'transformer.wmt19.ru-en.single_model',                        tokenizer='moses', bpe='fastbpe')paraphrase = ru2en.translate(  en2ru.translate('PyTorch Hub is an awesome interface!'))assert paraphrase == 'PyTorch is a great interface!'

В нем два раза производится перевод и проверяется соотвествие результата исходному варианту. При первом запуске с серверов torch хаба выкачивается большая нейронка, которая довольно шустро работает и на процессоре.

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

Как пользоваться

Выглядит сейчас это следующим образом. Каждый твит и ретвит на главной странице твиттера Илона Маска пропускается через переводчик, подбираются ссылки и картинки из поста, дальше все это сохраняется в пост в телеграм-канале. Выглядит это так

Итого у меня получилсятелеграм-каналпод названием "Твиттер Илона Маска" (подписывайтесь, мне будет приятно, что это нужно кому-то еще , будет дополнительный стимул поддерживать в будущем), в котором можно

1) читать новые и старые посты Илона Маска

2) видеть перевод текста на русский язык

3) перейти по ссылке на исходный пост в твиттере

И все это без регистрации и смс:)

Если эта статья показалась вам интересной, поставьте, пожалуйста апвоут (так ее увидит больше людей) и подписывайтесь на мой блог втелеграме, там я ежедневно рассказываю о всех своих экспериментах. Если хотите решить похожую проблему для своего бизнеса пишите вличку.

Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru