Среда , 26 Сентябрь 2018
ДомойПубликацииМассовая проверка ИКС: скрипт на PHP

Массовая проверка ИКС: скрипт на PHP

31 августа 2018 Яндекс официально отказался от традиционного тИЦ из-за его морального устаревания. При этом, пользователи были успокоены: на замену «плохому» показателю пришёл «хороший» — ИКС (индекс качества сайта).

Оставим в стороне моральную и этическую сторону вопроса замена одной пузомерки другой. Не будем рассуждать и строить теории относительно формулы расчёта — благо, это делают СЕО-гуру, до которых мне расти и расти. Мы остановимся на более приземлённом, а именно: получении значения параметра ИКС.

Параметр Яндекс ИКС

Если хотите просто получить скрипт — перейти к ссылке на скачивание.

Мне знакомы два способа получения параметра: через панель Яндекс.Вебмастер и через изображение. В последнем случае Яндекс поступил весьма продумано: код, показывающий ранее «денежку тИЦ», теперь показывает параметр ИКС. Пользователям на своих сайтах ничего менять не нужно.

Теперь представим, что Вы захотели проверить ИКС группы сайтов. Причём, не только своих (для этого достаточно добавить сайты в панель Webmaster), но и конкурентов. Можно воспользоваться одним из сервисом массовой проверки, но они (насколько мне известно) имеют некоторые ограничения на число одновременно проверяемых сайтов. Для решения данной проблемы я сделал небольшой скрипт. Его можно залить на свой хостинг и самостоятельно устраивать массовые проверки. Либо сделать ещё один сервис «массовой проверки ИКС», бесплатно и без регистрации.

Как это работает

Как я уже говорил, мне известны 2 способа: через запрос к панели Вебмастера и посредством получения картинки. В скрипте реализован второй вариант. Конечно, «в лоб» и через ЯВ-панель проще получить параметр, но там, если не ошибаюсь, может вылазить капча. Значит, нужно будет заставлять пользователей или расшифровывать эти самые капчи, или ожидать ответа, пока скрипт не обратится к одному из сервису-разгадывателю (порядка 15 секунд). Если запросов будет слишком много, Яндекс может просто заблокировать IP (да, это сервер, на котором расположен Ваш сайт).

Друзья, это моё предположение. Если Яндекс на самом деле не банит адреса при тысячах запросов, сообщите пожалуйста в комментариях. Реализация этого метода будет проще и поможет снизить нагрузку на хостинг при проверке.

Вариант с изображением картинок лишён данного недостатка. Пару лет назад у меня приводилось немного аналитики по тИЦу для русских доменов. Для написания статьи на сервера Яндекс было отправлено более 6 миллионов (!) запросов, при этом ни разу не получил бан по IP.

Итак, с скрипту. Он совершает запрос на получение «экс-денежки» и переводит графическое представление ИКС в текстовое. Эдакий FineReader в миниатюре. Ну да, всего-то.

Немного о реализации

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

Сначала нужно было получить изображение, вырезать из него кусок, который может содержать значение. После этого к картинке применялось несколько фильтров, а затем пиксели переводились в такой вид:

тИЦ в текстовом виде

Далее, для каждого знака в расчёт брались только «важные пиксели» (составляющие символ), на основании чего формировались маски. Для указанного примера была такая штука:

'7,12,15,3,3,7,9'     => 'C',
'1,2,5,8,11,10,7,4,1' => 'Y',

Т. е. в первом ряду буквы C было 7 важных пикселей (единицы), во втором — 12, потом 15, 3 и т. д.

Главный недостаток этого подхода — при разных значениях тИЦ какие-то пиксели могли выпадать или появляться (классическое сглаживание + перевод картинки в формат .gif). Поэтому в процессе обучения для цифры 0 (ноль) появилось три маски:

'7,13,5,2,15,11' => '0',
'7,13,6,2,15,11' => '0',
'8,13,6,3,15,11' => '0',

Самой сложной оказалась цифра 8, она со временем разрослась до 8 масок.

Подход, который использую сейчас, более продвинутый. Сначала так же нужно получить картинку с параметром и вырезать оттуда определённую область. После чего изображение переводится в текст: фон помечается точкой, пиксели другого цвета — буквой x.

В данной версии скрипта цвет фона жёстко завязан на текущий — 0x878787. В дальнейшем, если Яндекс решит-таки его менять, можно будет добавить первичный проход по изображению с целью получить главенствующий цвет, который и является фоном.

После следует выбрасывание пустых (не значимых) рядов, состоящих целиком из фона. А далее формируется «вытянутая» последовательность для очередного символа. Каждый символ имеет размер 8×11, кроме цифры 1 — у неё 5×11.

Осталось довольно простое действо: «набираем» очередной символ и сравниваем его с эталонными — YandexIks::$reference. Для сравнения используется встроенная в PHP функция similar_text(). Функция возвращает количество совпадающих символов. В качестве граничного значения принимаю отклонение в 9%, что составляет 81+ для всех символов, кроме единицы — для её «узнавания» нужно 51 или больше. Если мои разъяснения не понятны, читайте подробности по ссылке выше или смотрите код.

Скачать PHP скрипт для массовой проверки ИКС

Отказ от ответственности
Скачивая данный скрипт Вы соглашаетесь, что все возможные последствия от его использования берёте на себя. Скрипт поставляется «как есть», без каких-либо гарантий. Автор ни в коей мере не несёт ответственности за любой возможный ущерб — как прямой, так и косвенный. Если Вы с этим не согласны, не скачивайте файлы и не устанавливайте их на свои сервера.

Скрипт тестировался в PHP версий 5.4+ и 7.0+

Для скачивания нажмите кнопку ниже:

Скачать скрипт массовой проверки ИКС

После этого распакуйте архив и залейте его на свой хостинг. Содержание архива:

  • YandexIks.php — главный класс, с помощью которого можно получать значения параметра ИКС.
  • example.php — пример работы со скриптом.
  • readme.txt — отказ от ответственности.

Пример использования

Для получения значения ИКС нужно скопировать YandexIks.php на свой хостинг, после чего подключить его. Для работы следует использовать метод getValueFromImage(), а в качестве параметра передать домен.

Если класс расположен в директории с рабочим скриптом, для вывода значения параметра ИКС код будет такой:

include_once 'YandexIks.php';
echo 
YandexIks::getValueFromImage('google.ru');

Либо распакуйте скачанный архив и залейте его на сервер. После чего скрипт вызывается через адресную строку браузера:
vash.site/put/do/skripta/example.php

Пример работы со скриптом:
Параметр Яндекс ИКС

По сути, всё просто до безобразия: в текстовое поле вводится группа доменов, нажимается кнопка ok и… всё, ожидается результат.


Подумал тут, что не очень хорошо презентовать скрипт без примера работы. Что же, сделано!
Представленная ниже форма имеет ограничения на проверку: до 3-ёх доменов.


Об ошибках и пожеланиях можете писать в комментариях. Как первое, так и второе, не факт что окажется реализованным, но 100% будет прочитано.

Рейтинг: 0

Автор публикации

1 872
не в сети 4 дня

x64 (aka andi)

Комментарии: 2738Публикации: 383Регистрация: 02-04-2009
Так себеНеплохоХорошоЗамечательноСупер! (3 голосов, в среднем: 5,00 из 5)
Загрузка...

18 комментариев

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

    Рейтинг: 1
    • Александр, спасибо на добром слове smile
      Честно говоря, мне не очень понятно, для чего люди пользуются какими-то сервисами для определения такого рода параметров. Ладно PR от Гугл, там, если не ошибаюсь, подобного не было. Но что ТИЦ раньше, что ИКС сейчас, можно получить с помощью сервисов Яндекса. Если требуется массовая проверка… а зачем? Свои сайты почти наверняка в панели Вебмастера есть, а чекать сотни/тысячи конкурентов в сервисах — долго, вряд ли кто согласится бесплатно предоставить неограниченную проверку доменов.
      В любом случае, со скриптом появилось чуть больше выбора. Хочешь — пользуешься панелью Вебмастера. Хочешь — заливаешь скрипт себе на хостинг и проверяешь домены в количествах, которое позволит система.

      Рейтинг: 0
  2. Вы меня заинтересовали smile , нужно будет установить скрипт на сайт!

    Рейтинг: 1
  3. Анди, а в сайтбаре можно данный скрипт подключить?

    Рейтинг: 1
    • Андрей,
      доброго дня.
      Самый простой способ — через айфрейм. Залить скрипт на хостинг, после чего подключить (совсем как ролики с ютуба):

      <iframe src="/путь/к/скрипту/example.php" width="100%" height="300"></iframe>

      Тогда будет даже без перезагрузки страницы работать. Собственно, в этой статье так и сделано)
      Если хотите полноценно интегрировать, то понадобится чутка поколдовать, что можно сделать с помощью одного из плагинов, позволяющих выполнять PHP-код, либо править файл темы и интегрировать туда.
      Но я всё же рекомендую iframe юзать, как более простое решение. Просто заходите в виджеты, добавляете новый, и меняете example.php под себя, чтобы надпись/текстовая область влезали без горизонтального скролла.

      Рейтинг: 0
  4. Так и хочется сказать про ТИЦ и ИКС — хрен редьки не слаще. Но может, все к лучшему? И еще. Почему Анди — может делать толковые скрипты, а сервисы — нет? smile

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

      Рейтинг: 0
  5. Молодец, респектую) Технология отгадывания капчи в такой насущной проблеме)) drinks

    Рейтинг: 0
  6. Огромное спасибо за статью и скрипт, пригодятся.

    Рейтинг: 0
  7. Привет, дружище, огромное спасибо за скрипт. Но у меня две просьбы 1) можешь сделать так, чтобы домены без икс вообще не показывались ? 2) нельзя ли организовать выгрузку доменов в excel ?

    Рейтинг: 0

Оставить комментарий

Ваш email не будет опубликован.Необходимы поля отмечены *

*

Добавьте изображение (jpg/gif/png)

Политика конфиденциальности

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

Принять

Авторизация

Регистрация

Пароль не введен

Генерация пароля