Новости по-русски

Скрипт отображения вариантов и стоимости доставки Aliexpress

D3.ru 

TLDR
Ссылка на расширение TamperMonkey для браузеров на движке Chromium и Firefox.
Сам скрипт на GreasyFork.
–––––––––––––––––––––––––––––––––––

Кому интересны подробности:
Все из нас видели какие, в последнее время, жуткие метаморфозы претерпевает Алиэкспресс: отсутствие каких–либо адекватных фильтров и сортировок, невнятная выдача с уловками на ценах, магазины–кидалы, накрученные отзывы, охуевший арбитраж и еще море других «инноваций».
Сначала проблема с фильтрами решалась переключением языка или валюты, но гайки закручивают все сильнее и сильнее. Теперь, чтобы попасть на старый интерфейс необходимо заводить отдельный аккаунт и перекидывать товары из одного в другой, либо переключать страну, что уже явно перебор. А самое главное: оставшиеся в нормальной версии фильтры не решают проблемы отображения стоимости доставки и страны отправления.
Зачастую Али выплевывает список товаров, сориентироваться в которых кроме как по цене и количеству продаж — невозможно. Смотришь на лот, выбираешь приемлемый по отзывам и цене, ныряешь в карточку, а доставка стоит его треть. И на фоне конкурентов он смотрится уже не так выгодно. Или товар тебе нужен срочно, тебе хочется наличия на складе в России, но понять этого, не перейдя по ссылке, невозможно. Таким образом, выбор превращается в увлекательный переход по куче ссылок и ручном сравнении. На это весь и расчет: человек потыкается туда–сюда и выберет что попало. Цена перестала быть основополагающим фактором выбора.
И если с фильтрами бороться не получится, то с доставкой решено было повоевать. Для начала я, конечно же, попытался найти готовые решения, но, к удивлению, ничего не обнаружил, потому было решено попробовать реализовать эти фишки самому.
Изначальная идея казалась слишком сложной и заключалась в том, чтобы парсить страницы товаров, выводимые в карточку поиска и это действительно оказалось слишком сложно и дорого. Но ведь на странице товара есть варианты способов доставки и переключение между ними не моментальное, а значит Али откуда–то подгружает эти данные. Покопавшись в девтулс я быстро обнаружил API Алиэкспресса, из которого страница с товаром дергала информацию о доставке. Немного побаловавшись с POST запросами, я достаточно быстро научился формировать валидный JSON для необходимого товара, набросал скрипт и проблема, казалось, была решена, но радость была недолгой.
К сожалению, апи Али представляет из себя кромешный ад. Сложилось впечатление, что это некая сборная солянка из разных версий. Единого стандарта нет. Какие–то параметры то появляются, то пропадают и так повсюду. При проверке часто обнаруживались некорректные данные по доставке, срокам или цене.
Глубоко копать и реверсить это дело не было ни желания, ни времени. Опытным путем было установлено, что минимальная цена заказа значительно влияет на варианты и стоимость доставки, поэтому все параметры максимально унифицированы. Также был высчитан некий усредненный коэффициент для валюты. (кому интересно, рубль к юаню они считают по курсу ~11.5, к доллару ~81.4) Я еще немного поковыряю апи, и, если кто–то что–то подскажет или посоветует – буду рад. А пока скрипт изредка показывает несуществующую доставку из России (видимо, временно недоступную), несильно ошибается в цене или дате причем в каких–то категориях чаще, каких–то реже. В общем, нужно тестить.
Под конец возникла проблема добавления новых элементов на поисковый сниппет. Али написан на супермодном фреймворке React, с которым я совершенно незнаком. Эта сволочь отказывалась каким–либо образом обнаруживаться при переходе по пагинатору, при этом любое изменение DOMа реактом начисто затирало все мои вмешательства. В добавок необходимо было добавлять элементы только после полной отработки скриптов портала, поэтому пришлось применить русскую смекалку © и наляпать обходных решений.
Т.к. я не вебдев, то в итоге вокруг кошмарного апи получился кошмарный скрипт, который я даже не пытался рефакторить и сделать красивым. Главное, что он не создает никакой нагрузки (плюс работает только на странице поиска), не глючит и делает то, что должен делать Али. На это неказистое решение я потратил два полных вечера, и, если хотя бы десяти людям он будет так же полезен, как мне, то я буду очень рад. Это далеко не первый мой скрипт и своим месседжем я хотел показать, что даже непрофессионал в состоянии значительно облегчить себе жизнь и повысить качество веб–серфинга. Обезьяна – мощь! Главное не бояться пробовать.

Написал smut на it.d3.ru / комментировать

Читайте на 123ru.net