Офтоп
ATAMAH400h
1827

Ширяев был в ярости, когда узнал

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

В закладки

В документации к API в разделе WebSocket был список нескольких публичных WS каналов (сейчас удалён):

wss://tjournal.ru/chan/api wss://tjournal.ru/chan/system wss://tjournal.ru/chan/live:private

Раз описания нет, то просто подключимся и посмотрим, что сайт присылает (node.js):

const WebSocket = require('ws'); const url = 'wss://tjournal.ru/chan/api'; const ws = new WebSocket(url, { perMessageDeflate: false }); ws.on('open', function open() { ws._socket.setKeepAlive(true, 0); console.log(`# opened ${url}`); }); ws.on('message', function incoming(data) { console.log(data.trim()); });

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

Меня заинтересовало поле "user_hash". Это похоже на уникальный идентификатор пользователя. Ищем в документации его упоминание:

Результат хэша похож на SHA-256, что делает маловероятным его обращение обратно в ID пользователя, но я заметил, что хэши для оценок комментариев и постов совпадают, а оценки комментариев видны всем. Значит сопоставив хэши из оценок комментариев к ID пользователей, можно будет видеть, кто и как оценивает публикации.

Используя метод "getCommentLikes" из документации, получаем лайки комментария, используя ID комментария из сообщения вебсокетов:

Тут очевидно, что сопоставить кучу хэшей и несортированный список лайков невозможно, поэтому начнём с комментариев с одним лайком:

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

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

Результат можно почитать тут:

В конкурсе я, кстати, победил, но не с этим ботом.

Другие мои боты:

Ставьте лайки, подписывайтесь на канал @govnokoder, присылайте ваши донаты.

Материал опубликован пользователем.
Нажмите кнопку «Написать», чтобы рассказать свою историю.

Написать
{ "author_name": "ATAMAH400h", "author_type": "self", "tags": ["\u0448\u0438\u0440\u044f\u0435\u0432","\u0431\u043e\u0442"], "comments": 82, "likes": 57, "favorites": 15, "is_advertisement": false, "subsite_label": "flood", "id": 124066, "is_wide": false, "is_ugc": true, "date": "Sun, 03 Nov 2019 23:13:16 +0300", "is_special": false }
Создать объявление на TJ
Промо
Кроссовки из космоса
Что подарит миру сотрудничество adidas и МКС.
0
{ "id": 124066, "author_id": 182816, "diff_limit": 1000, "urls": {"diff":"\/comments\/124066\/get","add":"\/comments\/124066\/add","edit":"\/comments\/edit","remove":"\/admin\/comments\/remove","pin":"\/admin\/comments\/pin","get4edit":"\/comments\/get4edit","complain":"\/comments\/complain","load_more":"\/comments\/loading\/124066"}, "attach_limit": 2, "max_comment_text_length": 5000, "subsite_id": 214360, "last_count_and_date": null }
82 комментария
Популярные
По порядку
Написать комментарий...
15

Чекальский против Зоибаны. Следовательно, Человек-Человек — твинк Чекальского

Ответить
1

в нормальной компании давно бы уволили за подобное 

Ответить
18

Ты про мейлру?

Ответить
6

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

Ответить
21

Это потому, что ты гей.

Ответить
4

Ты весь день про свои ебаные истории рассказываешь, не надоело?

Ответить
10

если у тебя нет историй из жизни - твои проблемы.

Ответить
5

Тебе через несколько минут постучались в личку и попросили удалить, иначе выебать обещали.
Ты не удалил. Они сдержали обещание.
The end.

Ответить
2

удалил конечно же

Ответить
1

Комментарий удален по просьбе пользователя

Ответить
0

какая взаимосвязь?

Ответить
0

Комментарий удален по просьбе пользователя

Ответить
4

поверь, яндекс платит меньше среднего на рынке.

Ответить
0

Комментарий удален по просьбе пользователя

Ответить
1

Донаты собирал

Ответить
0

Комментарий удален по просьбе пользователя

Ответить
0

тебя не спросили ага

Ответить
1

в том числе

Ответить
1

Слава богу Комитет не норм по мнению Климова

Ответить
0

в СЖВ мире - да?

Ответить
2

что я представляю, когда вижу твой ник каждый раз:

Ответить
1

Что это за кабель?

Ответить
0

Он вроде пофиксил тогда. Вы снова нашли способ узнать, от кого оценки? 

Ответить
23

Кто мы-то? Я тут один нахой.

Ответить
0

Аа, ну ок. Ты нашел новый способ или это прост исторический пост?

Ответить
8

Чтобы помнили и выебнуться в очередной раз.

Ответить
1

Забыл питек-бота упомянуть, самую большую гордость

Ответить
3

Не забыл.

Ответить
3

Точно, проглядел. А в личке тогда пиздел что не твоё

Ответить
11

Так я вообще пиздабол. Что-то не так?

Ответить
1

Всё в порядке. Считаю тебя мудаком просто.

Ответить
6

Неслабо тебя порвало.

Ответить
0

Лол, тебя так задел бот, что ты попиздил в лички искать автора? Ебать ты конч. А бот был прекрасен!

Ответить
1

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

Ответить
0

А они до сих пор не перешли на еДНС что ли? Просто лень смотреть.

Ответить
2

Сомневаюсь, что хотя бы планировали.

Ответить
0

А я думаю, чего так лагает.

Ответить
0

у тебя на аве киркоров в одеянии дракулы?

Ответить
0

Доктора Стрэнджа.

Ответить
2

или как перестать бояться и полюбить атомную бомбу?

Ответить
0

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

Ответить
0

но он болгарин!

Ответить
0

Но акцент-то британский!

Ответить
1

Англия — издавна славянская страна.

Ответить
0

@Denis Shiryaev почините дублирование отправки комментов, за сегодня уже дважды было, macos 10.14.6 (18G103) Opera 63.0.3368.107

Ответить
0

Это же Стренж.

Ответить
0

бля, внатуре бердосыч!

Ответить
0

А у тебя тоже сначала делает отступ при написании коммента?

Ответить
0

нет вроде, либо не замечал

Ответить
0

Но это вероятно чисто моё явление, потому что я в хвост и гриву поимел брувзер

Ответить
0

Он, ага

Ответить
7

Намекаешь, что это ты пофиксил дыру?

Ответить
8

сколько дыр пофиксил не счесть 

Ответить
0

что подаришь в этом году на новый год?

Ответить
0

Ничего

Ответить
0

всмысле??

Ответить
0

В прямом. А что ты ждешь? За дырками - это не ко мне )

Ответить
0

смазку хоть бы прислал

Ответить
0

Есть только такая бгг

Ответить
1

давай, я согласен

Ответить
7

А ты хорош! Подписался на тебя...

Ответить
1

его бот лучшее, что было на тж

Ответить
1

Который из?

Ответить
5

чекает упоминания на тж

Ответить
4

Боты во вторую мировую войну: ищут статьи, присылают песни по запросу.
Боты сейчас: позволяют посмотреть, кто дизлайкнул твою статью на ТЖ.

Ответить
0

upd: А ведь Денис извинился! 

Ответить
3

Всё равно нашы победили.

Ответить
11

Деды ковыряли!

Ответить
0

Это уже пофикшено или как?

Ответить

Комментарий удален

Комментарий удален

0

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

Ответить
0

.000000ж7⁷щ

Ответить
Обсуждаемое
Новости
Охранник торгового центра «МЕГА Химки», разнимая драку, нокаутировал подростка
Охранник вмешался в разборки двух подростков. Одного из молодых людей он ударил несколько раз, в том числе и по голове. После удара в голову подросток провёл некоторое время на полу без сознания. При этом одна из сотрудниц ТЦ пыталась сказать охраннику, что пострадавший молодой человек «был прав» в потасовке подростков.
Разборы
В Китае от нового типа пневмонии умер второй человек: главное о заражении «неизвестным вирусом»
В чём причина заболевания и стоит ли чего-то опасаться.
Новости
Пресс-служба главы Чувашии объяснила его призыв «мочить» журналистов за критику просьбой «раскрывать их подноготную»
Уроки лингвистики от региональных властей.
Популярное за три дня

Прямой эфир

[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox_method": "createAdaptive", "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "cndo", "p2": "ezfl" } } }, { "id": 2, "label": "1200х400", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "cndo", "p2": "ezfn" } } }, { "id": 3, "label": "240х200 _ТГБ_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "i", "ps": "cndo", "p2": "fizc" } } }, { "id": 4, "label": "Article Branding", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "cfovy", "p2": "glug" } } }, { "id": 5, "label": "300x500_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "cndo", "p2": "ezfk" } } }, { "id": 6, "disable": true, "label": "1180х250_Interpool_баннер над комментариями_Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "clmf", "p2": "ffyh" } } }, { "id": 7, "label": "Article Footer 100%_desktop_mobile", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byswn", "p2": "fjxb" } } }, { "id": 8, "label": "Fullscreen Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "cndo", "p2": "fjoh" } } }, { "id": 9, "label": "Fullscreen Mobile", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "cndo", "p2": "fjog" } } }, { "id": 10, "disable": true, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "disable": true, "label": "Native Partner Mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyc" } } }, { "id": 12, "label": "Кнопка в шапке", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "cndo", "p2": "fdhx" } } }, { "id": 13, "label": "DM InPage Video PartnerCode", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox_method": "createAdaptive", "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "cndo", "p2": "flvn" } } }, { "id": 14, "label": "Yandex context video banner", "provider": "yandex", "yandex": { "block_id": "VI-223677-0", "render_to": "inpage_VI-223677-0-130073047", "adfox_url": "//ads.adfox.ru/228129/getCode?pp=h&ps=cndo&p2=fpjw&puid1=&puid2=&puid3=&puid4=&puid8=&puid9=&puid10=&puid21=&puid22=&puid31=&puid32=&puid33=&fmt=1&dl={REFERER}&pr=" } }, { "id": 15, "label": "Баннер в ленте на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byudv", "p2": "ftjf" } } }, { "id": 16, "label": "Кнопка в шапке мобайл", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "ccydt", "p2": "ftwx" } } }, { "id": 17, "label": "Stratum Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "cndo", "p2": "fzvb" } } }, { "id": 18, "label": "Stratum Mobile", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "cndo", "p2": "fzvc" } } }, { "id": 20, "label": "Кнопка в сайдбаре", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "chfbk", "p2": "gnwc" } } } ]