Как выгрузить все площадки из биржи Miralinks.ru и проверить качество доноров перед покупкой ссылок

Биржа Miralinks не предоставляет API для управления аккаунтом и не идет ни на какое сотруничество с нами (полагаю, что и со всеми остальными тоже). Также у биржи нет возможности экспортировать каталог площадок. Поэтому остается либо довольствоваться теми данными, что предоставляет сама биржа, либо бороться с наложенными ограничениями. Мы за второй вариант! И специально для вас подготовили js-скрипт, который автоматически пролистает все страницы каталога, сохранит все ссылки на представленные сайты и подготовит для вас список.

Все очень просто, вам нужно совершить всего несколько шагов, описанных ниже.

Экспорт списка площадок из биржи Miralinks

Авторизуйтесь и заходите в свой аккаунт. Сразу можно переходить к списку площадок, даже если у вас не создано ни одного проекта.

Рекомендуем вам настроить фильтрацию, заранее указав требуемые параметры (например, ИКС, кол-во страниц в индексе, возможно, тематику, но главное - стоимость, незачем проверять площадки, на которых вы точно не будете размещаться). Скорость парсинга каталога площадок зависит от количества страниц, помните об этом. Рассчет следующий: 1 страница = 10 секунд. При этом существует вероятность блокировки на время, если система заподозрит автоматизацию действий.

Итак, находясь на странице со списком площадок в Miralinks, необходимо нажать клавишу F12, чтобы открыть панель разработчика, и выбрать вкладку "Консоль".

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

const DISPLAY_LENGTH = 50; // Number of rows per page

let generateBody = (params) => {
  let formData = new FormData();
  for (const key in params) {
    formData.append(key, params[key]);
  }

  formData.append("tsDataTableType", "with_checking");
  formData.append("tsDataTableConfigType", "dataTable.Catalog");
  formData.append("iDisplayLength", DISPLAY_LENGTH);
  formData.append("iSortingCols", 1);
  formData.append("searchData", JSON.stringify(ML.Storages.getUsersRemoteStorage().__STORE__.lastCatalogFilter));

  for (const key in window.dataTables) {
    if (key.startsWith('Catalog_')) {
      const settings = window.dataTables[key].fnSettings()
      for (const index in settings.aaSorting) {
        formData.append(`bSortable_${index}`, true);
        formData.append(`iSortCol_${index}`, settings.aaSorting[0][0]);
        formData.append(`sSortDir_${index}`, settings.aaSorting[0][1]);
      }
    }
  }

  return formData;
}


let result = [];
const download = () => {
  let e = document.createElement("a");
  e.setAttribute(
    "href",
    "data:text/plain;charset=utf-8," + encodeURIComponent(result.join("\n"))
  );
  e.setAttribute("download", "domainList.txt");
  (e.style.display = "none");
  document.body.appendChild(e);
  e.click();
  document.body.removeChild(e);
}


const load = async (params) => {
  const res = await fetch("https://www.miralinks.ru/ajaxPort/loadDataTableDataCatalog", {
    method: "POST",
    body: generateBody(params),
    headers: {
      "x-requested-with": "XMLHttpRequest",
    },
  });
  const data = await res.json();
  const urls = [];
  for (const row of data.aaData) {
    const rowData = row.rowData;
    if (rowData['@count'] >= 2) {
      await load({
        sGroupValue: rowData['@groupby'],
        iDisplayStart: 0,
      });
      continue;
    }

    const url = rowData['Ground.folder_url_wl'];
    if (!url) {
      continue;
    }
    
    urls.push(url);
  }
  
  result.push(...urls)
  console.log("Собрано: ", result.length, "URLs: ", urls);

  if (data.aaData.length === 0 || DISPLAY_LENGTH > data.aaData.length) {
    return;
  }


  await new Promise((resolve)=>{
    setTimeout(async () => {
      const subParams = {
        iDisplayStart: params.iDisplayStart + DISPLAY_LENGTH,
      };
      if (params.sGroupValue) {
        subParams.sGroupValue = params.sGroupValue;
      }
      await load(subParams).then(() => {
        resolve();
      });
    }, 2000)
  });
}

await load({
  iDisplayStart: 0,
});

download();

Получится так (не обращайте внимания, что на скриншоте другой код - менять скриншот каждый раз, когда меняется скрипт, просто не хочется):

Нажимаем Enter и смотрим, как скрипт собирает площадки, в консоли вы увидите весь процесс работы.

Пока скрипт не дойдет до последней страницы, он не выдаст результат. Когда скрипт дойдет до последней страниц, он заваршит свою работу и браузер скачает файл domainList.txt (ищите его в загрузках).

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

Дальше со списком ссылок мы будем рабоать в CheckTrust.

Проверка списка площадок в CheckTrust

Теперь авторизуйтесь в личном кабинете Чектраста, выбирайте "Новый проект" в меню и проект типа "Проверка произвольных ссылок".

Полученный из биржи список площадок можно вставить сразу в окошко, не используя файл (скажу по секрету - ограничение в 1000 строк в окошке намного больше, но 1 млн. строк туда вставлать я все же не рекомендую).

Дальше вы все знаете сами: отмечаете нужные параметры и создаете проект. За несколько минут он полностью обработается. На этом этапе многих будет ждать расстройство, потому что большинство площадок, отмеченных биржей как супер качественные (Miralinks Rating = 100), будут иметь Траст < 10! Понятно, что площадки, цена размещения на которых от 3000р и выше будут иметь средний или высокий траст, но почему тогда площадки за 200р и 10000р имеют рейтинг системы 100%? Нам эта система не понятна.

Это наше личное мнение и вы можете его не разделять. Да и потом, мы всего лишь рассказываем о том, как выгрузить площадки и проверить их качество.

Создание списка качественных площадок

Прямо в проекте в Чектрасте вы можете применить фильтр "Хорошие доноры" (в эту выборку попадут также и отличные доноры) и сразу же сделать экспорт списка по фильтру:

В полученном при экспорте файле выделяем первую колонку "Хост" и копируем в буфер (ctrl+c). Возвращаемся в аккаунт биржи и выбираем пункт меню "Списки площадок".

Заходим в список "Избранное" и нажимаем кнопку "Добавить адреса". Вставляем наш список и сохраняем.

Теперь в каталоге площадок и при работе с проектами в Miralinks единственная настройка, которую вам стоит выбирать - Выбрать площадки из списка "Избранное".

Дальше вы можете работать с системой и покупать ссылки, как вы всегда это делали - выбираете площадки и заказываете размещение!

Теперь вы будете размещать свои ссылки только на качественных площадках!

В качестве послесловия

Где-то раз в месяц можно выгружать список новых площадок, благо соответствующий фильтр поиска есть, и его анализировать, тем самым держа свою базу всегда в актуальном состоянии.

Спасибо за внимание и до новых встреч.