• XSS.stack #1 – первый литературный журнал от юзеров форума

прочее Поиск рандомной старой статьи XSS - Расширение | Search for a random old XSS article (thread) - Extension

oceanaric

Developer
Пользователь
Регистрация
18.12.2022
Сообщения
134
Реакции
132
Гарант сделки
8
Депозит
1.11 Ł
Заметил сообщение от FantasticExploits в Предложениях по улучшению форума:
admin, я для себя обнаружил обсолютно нереальное кол-во крутых статей и материалов улетевших в глубь форума. Когда листаешь разделы или пользуешся поиском я редко захожу дальше второй страницы выдачи. Но время от времени, более пытливые участники откапывают такой материал и комментируют - я нахожу его в блоке с права, "новые сообщения". Моё предложение добавить в этот блок еще одну вкладку, как у википедии, что-то по типу рандомной статьи. Лично я бы с удовольствием переходил по таким ссылкам и читал. Возможно, в таком ключе можно подумать о возможности ее персональной настройки в профиле по тегам/интересам.

Подумал, что мне тоже интересно читать старые треды, поэтому сделал расширение TOR/Firefox для поиска рандомной статьи до 2015 года.
Мое первое расширение, сделанное в 4 утра, не будьте жестокими. Добавляется через Debug/Temporary extensions (инструкция на картинке ниже). При нормальном добавлении пишет "This add-on could not be installed because it appears to be corrupt", почитал, пишут что надо его подписать для возможности добавить нормально. Мне лень, кому не лень и нужно - можете сделать =).

1. Перейти в браузере на about:debugging#/runtime/this-firefox
2. Нажать "Load Temporary Add-on" и выбрать прикрепленный к этому треду .xpi файл dig_up.zip в build/dig_up.xpi
1733711569804.png


--
Шаги 3 и 4 для TOR
--

3. Перейти в браузере на about:addons -> нажать на 3 точки -> Manage
1733711621772.png

4. Разрешить работу в приватных окнах выбрав "Allow"

1733711686656.png

После установки возле кнопки DEPOSIT у вас появится кнопка BEGIN THE DIG (или НАЧАТЬ РАСКОПКИ для ру версии):
1733711804709.png

Нажимаете ее, расширение начинает поиск:
1733711824226.png

И вы попадаете на рандомную статью:
1733711844726.png

JavaScript:
console.log('"Dig Up" extension works!');

function getRandomNumber(min, max) {
  return Math.floor(Math.random() * (max - min + 1)) + min;
}

function createButton() {
  // to avoid duplicates
  if (document.querySelector("#searchOldThreadButton")) {
    return;
  }

  const newLi = document.createElement("li");

  const divContainer = document.createElement("div");
  divContainer.className = "p-navEl u-ripple rippleButton"; // for some suitable appearance

  const button = document.createElement("a");
  button.id = "searchOldThreadButton";
  button.textContent =
    document.documentElement.lang === "en-US"
      ? "BEGIN THE DIG"
      : "НАЧАТЬ РАСКОПКИ";
  button.className = "p-navEl-link";
  button.style.color = "#CFB53B"; // old gold color =)
  button.style.cursor = "pointer";
  button.href = "#";

  button.onclick = async function (event) {
    event.preventDefault();
    button.textContent =
      document.documentElement.lang === "en-US"
        ? "DIGGING..."
        : "РАСКАПЫВАНИЕ...";
    button.disabled = true;
    await tryRequest(100, button);
  };

  divContainer.appendChild(button);
  newLi.appendChild(divContainer);

  const navList = document.querySelector(".p-nav-list.js-offCanvasNavSource");
  if (navList) {
    navList.appendChild(newLi);
  } else {
    console.error("Place to insert the button not found.");
  }
}

async function tryRequest(retries = 100, button) {
  for (let i = 0; i < retries; i++) {
    const randomNumber = getRandomNumber(2000, 24500);

    const threadsEndpoint = `/threads/${randomNumber}`;
    const url = `${window.location.origin}${threadsEndpoint}`;

    button.textContent =
      document.documentElement.lang === "en-US"
        ? `DIGGING (${threadsEndpoint})...`
        : `РАСКАПЫВАНИЕ (${threadsEndpoint})...`;

    try {
      const response = await fetch(url);
      if (response.status === 200) {
        window.location.href = url;
        return;
      } else {
        console.log(
          `Attempt ${i + 1}: Request to ${url} failed with status: ${
            response.status
          }`
        );
      }
    } catch (error) {
      console.error(`Attempt ${i + 1}: Error making request to ${url}:`, error);
    }
  }

  // if 100 attemps to find a valid page fail
  button.textContent =
    document.documentElement.lang === "en-US"
      ? `НЕУДАЧА, ПОПРОБУЙ ЕЩЕ РАЗ :(`
      : `BAD LUCK, TRY AGAIN :(`;
  button.disabled = false;
}

createButton();


Получилось вполне залипательно, можно часами сидеть на форуме и играться, окунаться в прошлое. Это как тикток, только от него ты не становишься brainrot, а наоборот :)
Всем спасибо. Всем пока.
 

Вложения

  • dig_up.zip
    7.8 КБ · Просмотры: 9
Последнее редактирование:
Пожалуйста, обратите внимание, что пользователь заблокирован
красава, прикольная задумка.

Это как тикток, только от него ты не становишься brainrot, а наоборот
реально))))))))))))
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх