Как накрутить 40к просмотров на Хабрахабр. Баг или фича?
Всем доброго времени суток, скриншот выше сделан как раз перед публикацией статьи, о нём сегодня и пойдёт речь.
В процессе создания и публикации статей на Хабре, я заметил одну очень интересную особенность работы счетчика просмотров. Заключалась она в том, что каждый раз при любом редактировании статьи, которая ещё не опубликована и сохранена как черновик, счётчик каждый раз увеличивается на +1.
Получалось, что к примеру к моменту публикации, статья уже могла иметь от 1 до N просмотров. Я решил проверить свою догадку, и создал тестовую статью, которую сохранил как черновик:
Вносим несколько изменений, каждый раз сохраняя статью, чтобы удостовериться в том, что счетчик просмотров действительно увеличивается:
Хорошо, а что если создать скрипт, который будет делать тоже самое, но без участия пользователя? Наиболее простым вариантом тут было бы использовать JavaScript и запустить исполнение прямо в браузере. Скачав плагин Tampermonkey, я набросал в нём небольшой скрипт:
// ==UserScript==
// @name New Userscript
// @namespace http://tampermonkey.net/
// @version 0.1
// @description try to take over the world!
// @author You
// @match https://habrahabr.ru/*
// @grant none
// ==/UserScript==
var postID = 322272;
(function() {
'use strict';
// Your code here...
setInterval(fakeEdit, 1000);
})();
function fakeEdit() {
if (location.href.indexOf('post/' + postID.toString()) > 0)
location.href = 'https://habrahabr.ru/topic/edit/' + postID.toString() + '/';
else {
text = document.getElementById('text_textarea');
text.value = Math.random().toString(36).substring(2) +'\n'+ Math.random().toString(36).substring(2);
to_draft = document.getElementsByName('draft')[0];
to_draft.click();
}
}
Что тут происходит:
- Мы запускаем бесконечный цикл с интервалом итерации в 1 секунду, цикл в свою очередь выполняет функцию fakeEdit
- Функция fakeEdit проверяет текущий адрес страницы:
2.1. если на данный момент это страница редактирования, то мы изменяем содержимое поля text_textarea, в котором как раз расположен текст статьи, затем имитирует сохранение, путём клика по кнопке «В черновики»;
2.2. если адрес текущей страницы содержит post, то переходим к редактированию статьи
Таймаут тут нужен, для того, чтобы после загрузки страницы, все элементы успели прогрузиться. Запускаем и оставляем его на несколько дней. В результате через небольшой промежуток времени получаем примерно вот такой результат:
Я не считаю описанное выше мной — уязвимостью, но всё же перед публикацией этой статьи, уведомил администрацию Хабра о таком нестандартном поведении счётчика, и вот их ответ:
Здравствуйте!
Приносим извинения за задержку с ответом. Счетчик просмотров, действительно, считает не только уникальные просмотры (собственно, как и подобные счетчики на большинстве ресурсов в сети Интернет). До вашего обращения нам не приходило в голову рассматривать это как уязвимость, ведь злоупотребить этим в нашем сообществе довольно трудно: если плохой материал попадет в «самое читаемое», то привлечет внимание большого числа пользователей, которые, в свою очередь, «сольют» рейтинг материала и карму автора, так что он сам себя накажет, а если попадет хороший, то и не жалко.
Конечно каждый решает сам, использовать полученные знания или нет, но главное помнить, что у всего есть последствия. Я решил остановить скрипт на 40000 просмотрах, но вопрос о том есть ли предел, всё ещё остаётся, а так же что произойдёт при превышении этого передела?
Комментарии (3)
26 февраля 2017 в 16:14
0↑
↓
Я решил остановить скрипт на 40000 просмотрах, но вопрос о том есть ли предел, всё ещё остаётся, а так же что произойдёт при превышении этого передела?
если там integer обычный то зае;%%сь крутить
On 32-bit system, this would normally be 2147483647 (2.1 109). On a 64-bit system, it would usually be 9223372036854775807 (9.2 1018).
26 февраля 2017 в 16:32 (комментарий был изменён)
0↑
↓
Вы не учли, что обычный integer со знаком (в большинстве языков).
26 февраля 2017 в 16:30
0↑
↓
Не хочу вас разочаровывать, но вы открыли Америку…Накрутчик существует уже больше года