Кастомизируйте поиск на Авито

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

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

В этом нам поможет:

  • Плагин - Custom JavaScript for Websites 2 (for Chrome)
  • Код - скопировать можно ниже, требуются ручные корректировки

Код требует правки одной строки. Об этом помощь-навигация ниже.

if (document.readyState !== 'loading') { console.log('document is already ready, just execute code here'); myInitCode(); } else { document.addEventListener('DOMContentLoaded', function() { console.log('document was not ready, place code here'); myInitCode(); }); } function myInitCode() { var query = window.location.search.substring(1); console.log('query=' + query); var vars = query.split("&"); var radius_adding = true; var qsearch = false; for (var i = 0; i < vars.length; i++) { var pair = vars[i].split("="); if (pair[0] == 'radius') { radius_adding = false; }; if (pair[0] == 'q') { qsearch = true; }; console.log(pair[0]); }; if (radius_adding && vars.length >= 1 && qsearch) { // alert(vars.length); location.href = location.href + '\&radius=50\&searchRadius=50\&geoCoords=55.160026%2C61.402590\&s=104' }; }

Особенности кода. Он простой, работает без подключаемых внешних библиотек, типа jqyery, и срабатывает ещё до окончания загрузки всей страницы в целом.

Принцип действия кода:

  • Забираем часть адресной строки из вкладки браузера;
  • Извлекаем из строки ключи с параметрами (через символ &);
  • Перебираем (внутри массива) название ключей, обязательно найдя два нужных: radius= и q=;
  • Если в адресной строке вкладки найден ключ с названием radius=, то значит мы уже используем гео-фильтр по радиусу. В этом случае мы одно из условий, которое по умолчанию true (истина), меняем на false (ложь);
  • Если так же найден ключ с названием q=, то значит открытая вкладка браузера сайта Авито является результатом поиска на авито (вы ввели запрос в поисковой строке Авито, и перешли к результату). В таком случае, мы сохраним =true для переменной, которая изначально была создана со значением =false, и отвечает за это условие (открыта страница поиска = да);
  • В конце кода проверяем 2 условия: радиус геопоиска - не задан И поисковый запрос - задан. В случае выполнения обоих условий, добавляем к нашей адресной строке дополнительные ключи, указанные в "последней" строчке кода.

Что править, чтобы у меня работало так же, но для моего города, а не Челябинска?

&geoCoords=55.160026%2C61.402590

Координаты:

55.160026

61.402590

Нужно заменить на свои

А где взять координаты для своего города?

Всё просто, на Авито осуществляете поиск по запросу, уточняете свой поиск, указав радиус поиска. В адресной строке у вас появятся эти координаты:

Откуда взять координаты для активации радиуса при поиске Авито
Откуда взять координаты для активации радиуса при поиске Авито

Копируете координаты для своего города (то что для вас будет по умолчанию если скрипт будет включен).

Что за "s=104" в коде в конце строки?

Это ключ и значение, которое переводит выдачу поиска от варианта по умолчанию (реклама вверху, неизвестное и неудобное для конечного пользователя ранжирование объявлений алгоритмом Авито), на вариант сортировки - по дате.

PS: Ранее сортировка по дате выдавалась как инструкция от поддержки Авито, чтобы исключить наличие чужих городов из выдачи. Лично меня это дико бесило, что ищешь товар который купишь лишь приехав лично на встречу именно сегодня (завтра он мне уже не нужен), а Авито выбранный город просто не показывает в списке. Отмечу, что сейчас это малоэффективно, а вот добавить радиус - ещё работает.

Куда вставить код?

Для начала, скачать расширение для браузера: Custom JavaScript for Websites 2

Дальше, кликнуть по расширению, появится окно. Фото расширения - ниже.

Куда вставить код для Авито для быстрого поиска с ограничением по радиусу
Куда вставить код для Авито для быстрого поиска с ограничением по радиусу

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

  • После вставки кода - нажать SAVE, страница браузера в этот момент перезагрузится.
  • Enable cjs - если вам временно не нужно пользоваться поиском по своему городу, можно скрипт выключить и нажать ещё раз Save.
  • Ещё один кружок с NONE - это подключаемые библиотеки, в данном случае - ничего не нужно (так код работает быстрее).

Зачем нужен этот код, и что за расширение для браузера такое?

  • По части безопасности расширения - это из официального магазина Chrome/Google. Если не устраивает это из официального магазина расширений, найдите другое с таким же функционалом - они есть.
  • А зачем такой код, ведь можно по умолчанию каждый раз выставлять все фильтра, или сделать макрос для продвинутой мышки, которая сама всё прокликает то же самое за 1-3-5 секунд?

По части зачем нужно. Лично меня не устраивает указывать эти фильтра постоянно - очень много времени трачу на это, плюс, бывает временно плохой интернет, или сам Авито лагает.

А если не туда нажмешь, или воспользуешься подсказкой поиска от Авито, то вкладка сразу забывает все ранее выставленные фильтра (типа ограничение цены, новое/бу, продавец частное/магазин, гео-радиус поиска, выдача по свежести - то есть сортировка по дате).

Почему свой код к сайту, а не макрос/кликер? Потому что это самый быстрый способ сделать один раз работающее решение проблемы, за которую никто не хочет браться. В сети просто нет некоторых уникальных решений, поэтому кастомизация кода - наше всё)

А зачем такая инструкция или пример с кодом?

Ведь, любой кто захочет его сам напишет для себя!

Потенциальный комментатор

Дело в том, что не любой.

А ещё, это отличный пример демонстрации как работает код на благо пользовательского комфорта.

А так же. Сейчас очень много сайтов начинает внедрять агрессивные выпадающие виджеты / баннеры / меню (наплевав на раздражение от пользвания). Поэтому, немного поняв алгоритм работы кода по этому примеру, можно уже с большим пониманием написать свой алгоритм для других сайтов.

Да и чтобы не потерять этот код самому, на будущее)

Начать дискуссию