Aliexpress i GreaseMonkey, podejście drugie.

Jakiś czas temu, postanowiłem zapoznać się z GreaseMonkey, czego owocem był pewien skrypt, opublikowany tutaj. Pobawiłem się z nim trochę więcej i dodałem sporo nowych rzeczy. Warto je opisać.

Zwiększanie rezultatów wyszukiwania.

Jeśli na Aliexpress, rezultaty wyszukiwania są dziwne, to najprawdopodobniej jest to wina ciasteczek. Czemu się tak dzieje?
W serwisie działa program afiliacyjny (partnerski). Innymi słowy, większość linków do przedmiotów w serwisie, zamieszczonych w internecie, to reflinki. Powodują ustawienie ciasteczek w ten sposób, że jeśli potem kupimy coś w serwisie, to afiliant dostaje od tego prowizję. Z nieznanych mi przyczyn, jeśli mamy takie ciastka, to wyniki wyszukiwania są zawężane. Czyżby jakaś zryta polityka w programie afiliacyjnym? Nie wiem, ale da radę to usunąć i powiedzieć afiliantom „spieprzaj dziadu”.
Skrypt w tej chwili filtruje URLa i ciastka, a następnie przeładowuje stronę.

Za samo kaszanienie wyników odpowiada ciastko „xman_us_f”, stąd zawsze jest kasowane. Jeśli skrypt wykryje reflinka, to kasuje ciastko od programu afiliacyjnego „aeu_cid”, a następnie składa URL na nowo, usuwając parametry go ustawiające.

Pobieranie mobilnej ceny na komputerze.

Aliexpress ma swoją aplikację na androida. Niektóre przedmioty mają „mobile discount”, czyli jeśli dokonamy zakupu w aplikacji mobilnej, to zniżka jest większa. Niestety, o wartości tej zniżki możemy się przekonać dopiero w momencie załadowania strony przedmiotu na androidzie, bądź ubogiej, mobilnej stronie (m.aliexpress.com).

Na szczęście, JavaScriptem możemy wykorzystać technikę AJAX, czyli załadować tą cenę w tle i podmienić ją na ekranie.

Warto zauważyć użycie funkcji zapewnianej przez GreaseMonkey, czyli GM_xmlhttpRequest. Czemu nie możemy użyć zwykłego XMLhttpRequest? Tutaj dochodzi kwestia bezpieczeństwa, czyli mechanizmu Same-Origin Policy. Skrypt jest wywoływany dla domeny aliexpress.com, a pobieramy html z domeny m.aliexpress.com. Czyli domena się nie zgadza, przeglądarka nie pozwoli normalnie działającemu skryptowi na coś takiego. Przez funkcje GreaseMonkey już nas to nie ogranicza.
Skrypt działa tylko na stronie przedmiotu. Czemu nie można pobrać wszystkich cen mobilnych na raz? Zbyt duża ilość requestów spowoduje aktywację zabezpieczeń w serwisie, np. captcha.

Ceny z dostawą.

Podstawowe wyszukiwanie w wielu serwisach – cena wraz z wysyłką, na serwisie Aliexpress nie jest obsługiwane. Stąd większość przedmiotów ma cenę wysyłki zawartą w cenie towaru. Da jednak radę przeszukać wszystkie elementy na stronie, policzyć łączną cenę, a następnie posortować. Wady? Na następnej stronie mogą się znaleźć przedmioty, które mają mniejszą łączną cenę.

Warto odnotować, funkcje GreaseMonkey, GM_getValue i GM_setValue służą do zapisu stanu przycisku, który aktywuje tą funkcję.

Automatyczny update

Skrypt aktualizuje się u użytkowników automatycznie, jeśli zostanie podniesiona jego wersja i zostanie wgrana na serwer. W nagłówku skryptu można zawrzeć URL, skąd GreaseMonkey będzie sprawdzał/pobierał nową wersję. Musi być to jakiś stały adres, a w dodatku po połączeniu szyfrowanym (https). Nadaje się do tego np. sekcja „Downloads” w serwisie Bitbucket.org

Jest to powód, dla którego skrypt dalej ma pierwotną nazwę i jest dostępny pod tym samym linkiem 🙂

Podsumowanie

GreaseMonkey pozwala na stworzenie narzędzi, które ułatwiają poruszanie się po wielu stronach, z których nie chcemy przestać korzystać, a których twórcy są na bakier z naszymi potrzebami. Może jednak pisać je samemu, warto poszukać w internecie?
Jest ich cała masa.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *