Код 🧑‍💻
October 24, 2023

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

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

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

  • Хана моей статистике (но это еще как-то можно пережить)
Как программисты переживают из-за своей статистики на GitHub
  • И из-за какого-то бага 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. Будем рады сотрудничеству 🤝