KillWolfVlad

Накручиваем голоса за предложения по улучшению GitKraken

Скриншот сайта GitKraken User Suggestions
https://feedback.gitkraken.com — Наша сегодняшняя цель для накрутки голосов

Один наш заказчик переехал с привычного, всеми обожаемого GitHub в бездуховный GitHub Enterprise на своих серверах. А это значит что:

  • Хана моей статистике (но это еще как-то можно пережить)
Вуди Харрельсон вытирает слезы деньгами
Как программисты переживают из-за своей статистики на GitHub
  • И из-за какого-то бага GitKraken не показывает иконку организации у remote веток (а вот с этим я мириться не хочу)
Интерфейс GitKraken с отсутствующей иконкой организации у remote веток
Вот это пустое пусто между компьютером и «master» на самом деле — отсутствующая иконка организации, из-за чего работать очень не удобно

Уже есть предложение на исправление этого бага (и еще одно), нужно только за него проголосовать. Я проголосовал. Но одного голоса мало чтобы что-то изменить. Поэтому я решил сделать бота который будет голосовать за меня. Много голосовать. Чтобы разработчики обратили внимание на эту проблему и поправили баг.


Как устроено голосование? Когда вы заходите на сайт вам насыпают целую охапку кук. По кукам вас идентифицируют и не дают голосовать повторно. Куки можно очистить и таким образом проголосовать где-то 3 раза, потом количество голосов перестает расти. Они ограничивают по IP адресу, но на следующий день можно повторить (или сменить IP адрес).

Мем про куки
После стольких лет разработки корпоративных SPA уже забыл как работать с куками 😅

При нажатии на кнопку голосования идет отправка ничем не примечательного POST запроса, кроме разве что того, что вместе с куками надо передать CSRF-токен и текущую дату. CSRF-токен находится внутри html странички и его можно спокойно выдрать регуляркой.

Мем про забор
Как бот смотрит на CSRF-токен

Быстренько это все кодируем, заливаем на GitHub, настраиваем cron-джобу в GitHub Actions и радуемся постепенно растущим голосам. Пока настроил запуск джобы раз в час, в ограничение по IP не должно упереться, т. к. у GitHub Actions используются широкий пул IP адресов. Ну и я не смог удержаться чтобы не голосовать и за другие предложения 😉.

Исходники с деталями реализации: https://github.com/KillWolfVlad/gk-upvote.


UPD от 13.12.2023: Когда количество голосов перевалило за 1.4K, разработчики это заметили и подзакрутили гайки: теперь при попытке постучаться на сайт через GitHub Actions CloudFlare отдает 403. Также они «скрутили» обратно все накрученные голоса.

Но главное — цель достигнута. Баг с отображением иконки у remote веток они починили. Так что этот проект можно со спокойной душой закрывать и идти дальше — покорять новые вершины 🏔️.


Хотите нанять команду профессионалов или хотите работать в команде профессионалов? Тогда приходите к нам в https://byndyusoft.com. Будем рады сотрудничеству 🤝