Как накрутить рейтинг на Хабре и уйти незамеченным


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


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


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


    Это не могло не натолкнуть на мысль воспроизвести ситуацию в промышленных масштабах.



    У меня тогда как раз накопился один инвайт, которым я решил поделиться с другом и заодно проверить теорию. Разумеется, кликать по одной статье за раз — это скучно и, тем более, не подобает уважающему себя разработчику. К тому же, не слишком безопасно, потому что есть риск просто попасться.


    Будем автоматизировать.


    Подслушиваем Habrahabr


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


    В качестве веб прокси будем использовать Charles для Mac. Крайне удобная вещь. Если вы разработчик, то рекомендую иметь её в своем джентельменском наборе. Позволяет также слушать трафик с любого подручного девайса, если вы, например, отлаживаете мобильное приложение.


    В рамках одной сессии успешно получаем все необходимые нам методы.



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


    Проверяем на практике


    Уже практически праздную победу, делаю запрос на создание поста:


    params = {
        :id => '',
        :post_type => 'simple',
        :flow => 5,
        :hubs => [20742],
        :title => 'test1',
        :text => 'test1',
        :tags_string => 'test1'
    }
    
    response = HTTParty.post('https://habrahabr.ru/json/topic/?action=save', headers: headers, body: params)
    # Получаем id поста для последующего использования
    params[:id] = JSON.parse(response.body)['redirect'].split('/')[2]

    Flow равное 5 и Hubs равное 20742 — это не случайные числа, а вполне осознанно выбранный наименее популярный поток 'Разное' и хаб 'Читальный зал', чтобы снизить вероятность быть уличенным в афере.


    Но тем не менее, Habr нам почему-то отвечает отказом:


    {
        "system_errors": [
            "Неизвестный тип публикации"
        ]
    }

    Странно. Ведь все параметры верны, post_type установлен и точно совпадает с нужным и все поля на месте. Проверяем запрос из прокси — работает. А из кода — ошибка.


    Как оказалось после веселой отладки, если отсутствует заголовок Referer, то любой запрос к API падает. Юзабилити на высоте. И еще один забавный случай: независимо от того какое значение указано в поле draft, публикация все равно будет создаваться черновиком:



    Даже если стоит 0 или вообще абракадабра.


    Но если поля вообще нет, то статья уже публикуется в общий поток.


    Хорошо, пост создали, можно голосовать. Тут все тоже довольно просто и завелось с первого раза:


    vote_headers = {
        'Cookie' => HTTP::Cookie.cookie_value(vote_jar.cookies(habr_uri)),
        'User-Agent' => 'Mozilla/5.0',
        'Referer' => 'https://habrahabr.ru/top/',
        'Content-Type' => 'application/x-www-form-urlencoded',
        'Accept' => 'application/json'
    }
    
    vote_body = {
    # Помните прошлый запрос? 
        'ti' => params[:id],
        'tt' => 2,
        'v' => 1
    }
    
    uri = URI.parse('https://habrahabr.ru/json/vote/')
    http = Net::HTTP.new(uri.host, uri.port)
    http.use_ssl = true
    request = Net::HTTP::Post.new(uri.path, vote_headers)
    request.body = URI.encode_www_form(vote_body)
    
    # Только для отладки
    puts http.request(request).body

    Запрос через HTTParty отчаянно отказывался работать с голосованием, пришлось пилить его через net/http. Аргументы, конечно, не самые говорящие в API, но в целом все понятно: id публикации и два магических параметра. Элементарно.


    Автоматизируем


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


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


    Оставим все как есть, и запустим процедуру в цикле. Крутим без какого-либо delay, но на второй же итерации натыкаемся на забавную ошибку с пасхалкой:


    {
        "system_errors": [
            "Повтор на втором игроке!"
        ]
    }

    Кто постарше помнит, что раньше была такая передача 'Пойми меня', где дети по цепочке объясняли друг другу слова. И если двое сделали это одинаково, то ведущий говорил: 'повтор на таком-то игроке!'. Ссылка на запись игры. Мне кажется, это многое говорит о возрасте тех, кто разрабатывал Хабр.


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


    Не будем наглеть, остановимся на 30 баллах, исчеркав все черновики Хабра:



    122 место, неплохо. Осталось чуть-чуть до первой сотни. А вот и сами тестовые посты:



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


    Заключение


    Вот таким нехитрым способом можно незаметно накрутить своему товарищу рейтинг.


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


    Спасибо за внимание.


    P.S. Не баньте меня, пожалуйста. Баньте его — sp1nfox, это ему рейтинг накручивали.


    UPD: Бана удалось избежать, а дырку залатали, введя лимит на количество постов в сутки. Спасибо команде Хабра и Boomburum за оперативность!
    UPD2: Лимит 3 поста в сутки.

    Поделиться публикацией
    Похожие публикации
    Реклама помогает поддерживать и развивать наши сервисы

    Подробнее
    Реклама
    Комментарии 100
    • +50

      Только на хабре можно писать про то, как взломать хабр, украсть инвайт и т.д.)

      • 0
        Ну на hackerone еще можно)
        • +8
          В свое время некий BrokenBrake написал сервис по взаимонакрутке кармы и статью об этом, за что был забанен. Так что аккуратнее)
          • +1

            А он именно пытался заработать на этом? На мой взгляд, одно дело — написать статью, а совсем другое это поставить процесс на поток.

            • +3
              Нет, «сервис» — просто страничка без регистрации. Все бесплатно. С бонусами Владимиру Шахиджаняну)
              • 0
                Интересно, а вы предупреждали администрацию хабра перед публикацией статьи?
            • +1
              Это который еще был известен как «Тормоз»?
              • +1
                Ага, вдохновленный)
              • +1

                Главное, чтобы комментаторов и всех, кто голосовал, не забанили)

            • +39
              Больше инвайтов этому джентльмену!
              • НЛО прилетело и опубликовало эту надпись здесь
                • +7

                  А пользователи со значками «Автор», «Старожил», «Звезда» могут накручивать в два раза быстрее, т.к. у них сразу два пункта за голосование :)

                • +17
                  На сколько я помню — рейтинг, вещь динамическая, пока пишешь — он высок, перестаёшь писать — он падает. Да и что, это собственно даёт, кроме ласкания ЧСВ?
                  • +26
                    Абсолютно ничего (:
                    У нас в интернетах все виртуальное, знаете ли.
                    • +3
                      Ну это же не пикабу, всё-таки, мне кажется тут люди больше внимание уделяют постам и камментам человека, а не что у него там в рейтинге.
                      • +5

                        После прочтения вашего комментария у меня возникло такое ощущение — когнитивный диссонанс.
                        То что «люди больше внимание уделяют постам и камментам человека, а не что у него там в рейтинге» абсолютно верно.
                        А вот «Ну это же не пикабу». Если сравнивать хабр и пикабу, то…
                        На хабре есть рейтинг пользователей, ссылка на виду рядом с логотипом, то есть вполне может буть сценарий пользователя зайти на эту страницу и подписаться на самых ретинговых авторов.
                        Рейтинг автора выводится под кнопками для голосования за статью. Для того чтобы увидеть рейтинг комментатора достаточно навести на аватарку курсор мыши. Это может влиять на восприятие.
                        Рейтинг, и в особенности карма, на хабре сильно влияют на возможности пользователя, некоторые регулярно лечат минусовую карму регистрацией новых аккаунтов.
                        И да, на упоминание кармы здесь есть какое-то табу. Да и рейтинг тоже не стоит.
                        В общем, что-то нездоровое с рейтингом на хабре есть, в сравненни с пикабу где ничего из списка выше замечено небыло.

                        • +5
                          Сужу конечно по себе, но я подписываюсь на тех, кто пишет интересные для меня материалы, а не от того, какой у человека рейтинг. Ладно я понимаю когда несколько человек постят котиков и стоит подписаться на того, у кого рейтинг выше (котики милее), но тут специализированный ресурс, но и тут есть множество направлений, которые не всем интересны. Если я и захожу в топ авторов, то в конкретных хабах, но опять-таки, сначала смотрю что человек пишет, на сколько интересен мне вектор его статей и тд.
                          • 0

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

                            • +1
                              вы фильтруете авторов по рейтингу
                              Нет. Рейтинг в хабах основывается на параметре «вклад в хабы», а не на рейтинге автора.
                              • 0

                                Вклад в хабы это тот же рейтинг, но полученый только в определенном хабе.

                                • 0
                                  Но работает то он как то иначе. Если я не ошибаюсь, если вы долго не пишите статей — общий рейтинг автора постепенно уменьшается. Вклад в хабы же не уменьшается (да и цифры там на порядок другие). Я согласен, что это то же рейтинг, но рассчитывается он как то совсем иначе.
                                  • 0

                                    Очень просто он рассчитывается — сумма оценок статей. Один фиг в общем.

                          • +3

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

                    • +28
                      Не баньте его, пожалуйста. Лучше возместите ему инвайт, потраченный на исследование.
                      • +1
                        За статью с рейтингом 100+ должны дать инвайт.
                        • +2
                          Два. Инвайт дают за каждые +50
                          • 0

                            Пишут, что только 1 инвайт за пост.


                            А вот способы заработать приглашение для друга (или просто про запас), если у вас уже есть полноправный аккаунт:
                            • набрать 50 единиц кармы (даётся 1 приглашение единовременно, даже если карму после этого понизят — приглашение остаётся на балансе аккаунта);
                            • написать публикацию, которая после окончания срока голосования получит рейтинг выше +50. За каждую такую публикацию, если это не хаб-оффтопик, выдаётся 1 приглашение.

                            https://habrahabr.ru/info/help/registration/

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

                        Прочитал вашу статью и улыбнулся: значит еще не совсем быдлокодер :)
                        • –36
                          ну накрутили вы, дальше что? солить его будете на зиму?
                          • +19

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

                            • –40
                              сами поняли, что сказали? смысла нет, но смысл есть.

                              ещё раз: накрутили вы счётчик, что дальше? пойдёте обналичивать свои плюсики в банкомате?
                              • +44

                                Мне кажется, вы слишком серьезно реагируете на что-то, что нельзя обналичить в банкомате.

                                • –18
                                  Мне кажется вы слишком серьёзно реагируете на бумажки из банкомата.
                                • +6
                                  Ну обналичили вы свои плюсики в банкомате, а что дальше?
                                  • 0
                                    Есть вещи которые не купишь за деньги, но которые куда ценнее чем кажутся. Смысл тут не в плюсиках, а в том что человеку интересно и он хочет этим поделится. Смотри на статью с другого угла тут интересный опыт. Который может быть использован и в рабочих целях. К Примеру в одной из компашек не что похожее использовалось. Для автоматизации отправки отчетности в MARTI. То что делают 10 человек 8 часов. Может сделать программа за 1 час. А хабр привели в пример, так как мы все на нем сидим сейчас. А значит есть почва для эксперимента) Так что автор молодец)
                                    • 0
                                      Дайте угадаю — одна из компашек это МТС?
                                      • 0
                                        В точку)
                                        • 0
                                          Как я с этим намучался) Там у админов любимое занятие было раз в квартал что ни будь менять)
                                          • 0

                                            Давно не попадались сотрудники МТС. Кодом поделитесь? :)

                                            • 0
                                              Я там уже 2 года не работаю… Разве что старыми без проблем.
                                        • –1
                                          Для автоматизации отправки отчетности в MARTI. То что делают 10 человек 8 часов. Может сделать программа за 1 час.

                                          Потом приходится парсер писать, что бы считать все что Вы там ввели.
                                    • +2
                                      Жизнь боль. Все тлен. Наслаждайся игрой.
                                      • 0
                                        Я для себя сделал вывод на счет своих программных продуктов. Ценный опыт на предмет возможных уязвимостей. Если уж НЛО имеет такие ошибки тонкие места, значит самому нужно быть более бдительным.
                                      • +17
                                        А я видел топик test1! Так и подумал что кто-то скрипты тестит)
                                        Но подумал что это уже кто-то хочет посты рассылать автоматом по всяким фейсбукам, вконтактам так еще и на хабру…
                                        • +40

                                          Вам показалось, это не те дроиды, которых вы ищите.
                                          image

                                        • 0

                                          У меня из за особенностей настройки всяких плагинов после нажатия "публиковать" не переключается на статью. При этом публикация появляется. Я привык так редактировать опубликованные статьи. А тут я новую опубликовал потом подправил снова нажал публиковать и пояаилась новая копия статьи. Я это понял когда id в скопированной ссылке со статейной не стала совпадать. Пришлось копии в черновики отправить а на редактирование оригинал отдельно открыть.

                                          • +6
                                            Еще немного и я смогу отрабатывать свой инвайт лайками
                                            • 0
                                              Давай уж опубликуй что-нибудь. А то видимо я не первый кто пытался тебе карму плюсануть и обломался )
                                              • 0

                                                Попробуйте сейчас поставить. С подсказки ivan386, достали из архива старую публикацию. В ленте уже не выводится, но на деле существует.

                                                • +1

                                                  Работает

                                                  • 0

                                                    Умное решение, спасибо за идею.

                                              • 0
                                                Неа. Карма без публикаций не сможет подняться выше 4. Так что увы. Если только ещё какой-нибудь трюк придумать…
                                                • 0

                                                  А вот и идея для следующей статьи подъехала)
                                                  Кстати. Публикации-то технически есть, даже много, но плюсануть все равно не дает.

                                                  • +2

                                                    Думаю, можно попробовать сделать следующим образом: я убираю свой плюс из кармы товарища завтра, как появится заряд, а кто-нибудь ставит лайк вместо меня.
                                                    Потом постится временный материал, как в статье, от лица sp1nfox, который я плюсую. Вуаля — 5 кармы без публикаций)

                                                  • +3

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

                                                    • 0

                                                      Можно прямо сейчас попробовать, такой пост есть. Идея хорошая.

                                                      • 0

                                                        Пост появился)

                                                  • +7
                                                    https://habrahabr.ru/post/322272/#comment_10089628 — вы просто повторили то, что я недавно описывал как очень древний баг.
                                                    • 0

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

                                                      • 0
                                                        Я пишу разработчикам, они (якобы) чинят. Смысл тратить время на посты? Хотя, один в планах у меня был — туманно намекнуть, чтобы народ сменил пароли ;-)
                                                        • +2

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

                                                          • 0
                                                            Мои баги они и так быстро фиксят. На Хабре раньше даже пасхалка была, делающая отсылку к моему нику. Но это не точно (после какого-то апдейта она пропала).
                                                          • +1
                                                            Смысл в том, что если пост хорошо написан и интересно читать, то не особо важно о чем он
                                                        • +1
                                                          Ну тебе, как всегда, лишь бы Хабр поломать)
                                                        • +2
                                                          «независимо от того какое значение указано в поле draft, публикация все равно будет создаваться черновиком»
                                                          Я тоже так делаю, это переменная флаг, отличный кейс)
                                                          • 0

                                                            Она просто проверяется по isset(), только и всего.

                                                            • 0
                                                              Да, ее существование и есть флаг. Даже если в переменной будет false.
                                                          • +7

                                                            Ох уж эти хакеры и солонки

                                                            • +27
                                                              Не столько уязвимость, сколько баг — побаловать свой аккаунт рейтингом, который через 30 дней вычтется (если повторно не накручивать)). В любом случае спасибо — интересный кейс, уже поправили (введя ограничение на количество публикаций в сутки, хотя были и другие варианты).

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

                                                              • +13

                                                                баночку варенья… и автомобииииль! (с)


                                                                Спасибо за оперативность, внес апдейт в статью.

                                                                • +1
                                                                  Не прошло и суток — как это ограничение уже (напрасно) сработало.
                                                                  • 0
                                                                    Нуу, так иногда бывает — нет ничего страшного в том, чтобы «разнести» цикл статей по времени. Ведь если какой-нибудь Микрософт выложит за день 5 постов про свой новый Ворд, начнут писать «Неделя Ворда на Хабре», «Горшочек не вари» итд. Ситуация, когда кому-то из пользователей надо опубликовать более 3 постов в сутки — довольно редкая.
                                                                    • 0
                                                                      Я чисто как забавный пример привёл, философский так сказать… "все ваши априорные предположения разобьются о реальность" (были тут статьи о форматах почтового адреса, времени, даты… Собственно, поэтому и циклы итерации любой разработки и вообще поэтому и возник мозг поверх ДНК)
                                                                • НЛО прилетело и опубликовало эту надпись здесь
                                                                • +3
                                                                  дырку залатали, введя лимит на количество постов в сутки

                                                                  И какой теперь лимит? Я, конечно, пишут от силы раз в четверть года, но знать-то полезно)
                                                                  • 0
                                                                    0,0109 статьи в сутки. Вам придется писать чуть пореже
                                                                    • +2

                                                                      Для всех, кто ждет — 3 поста в день теперь.

                                                                    • +26

                                                                      план прост, а потому прекрасен:
                                                                      накручиваешь рейтинг фейк аккаунту, пишешь про это => накручиваешь рейтинг себе

                                                                    • 0
                                                                      Утащил картинку с учёным. Весьма информативная)
                                                                      • 0
                                                                        Спасибо за Charles.
                                                                        • 0
                                                                          Мне кажется, это многое говорит о возрасте тех, кто разрабатывал Хабр.
                                                                          Телепередача шла с 1995 по 2000 и с 2013 по 2016 в разных вариациях. Что это говорит о возрасте?
                                                                          • 0
                                                                            Так же и родителям приходится смотреть детские передачи часто, старшим братьям и сестрам, а так же дедушкам и бабушкам. Допустимый диапазон возрастов, в итоге, охватывает всех практически.
                                                                            • 0
                                                                              Ну, в 90е она и не на детей была рассчитана.
                                                                          • 0
                                                                            Ну, кстати, эта штука была давным-давно, у меня были мисспосты с плюсиками, котрые до сих пор в черновиках валяются (а админка хабра не позволяет удалить). Но использовать его как средство автоматизированной накрутки рейтинга…
                                                                            • +1
                                                                              Очень импонирует стиль написания статьи, прочитал на одном дыхании!
                                                                              • 0
                                                                                Думаю, разработчикам Хабра интересно было такое почитать. :-)
                                                                              • 0
                                                                                Сегодня подсмотрел ещё один способ :)

                                                                                • +1

                                                                                  Просто сотрудники яндекса налайкали)

                                                                                • +1

                                                                                  Респект автору за проверку гипотезы и настойчивость)

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