Allegro Seller Info 0.1.19

tech • 210 słów • 1 minuta czytania

Jak to zawsze bywa z UserScript-ami, niespodziewanie i nagle przestają działać. Allegro znów musiało coś pod maską pozmieniać, bo brakuje wyświetlania lokalizacji użytkownika na stronach aukcji.

Po szybkim sprawdzeniu okazuje się, że nic się tym razem nie wywala, tylko ten node, który zawsze zawierał bebechy Reacta już ich nie ma i getReactInst zwraca undefined. Po testach wyszło na jaw, że po pierwszym odpaleniu zakładki (boxa) z informacjami o “Dostawie i płatności” te wewnętrzne elementy pojawiają się w obiekcie DOM-owym.

Nie chce kombinować nad tym jak zmusi stronę do “załadowania: tych danych, nie chce tez powracać do ręcznego parsowania z HTML-a zawartej lokalizacji. Pozostaje poszukać innego rozwiązania…

Skądś ten React pobiera te dane do propsów i całkiem przypadkiem znalazłem te obiekty w serializowanej postaci:

Łatwo udało mi się sparsować i wykorzystać w dalszym kodzie, jak gdyby nic się nie zmieniło:

node = document.querySelector(`script[data-serialize-box-id="${id}"]`);
var item = JSON.parse(node.textContent);

Pozostaje tylko kwestia identyfikatora do danych, ale spojrzenie na miejsce znajdowania się boxa mówi wszystko.

Zmiana jednej linijki kodu do pobierania node i mamy poszukiwany data-box-id:

// pobierz lokalizacje z serializowanych danych "Dostawa i platnosc"
var node = document.getElementsByName('shippinginfoshow')[0].parentElement;
...
var id = node.getAttribute("data-box-id");

Całkiem sprawnie poszła aktualizacja skryptu do współdziałania z wprowadzonymi zmianami w serwisie Allegro.

Nową wersję wrzuciłem do swojego repozytorium UserScripts.

Komentarze (0)

Dodaj komentarz

/dozwolony markdown/

/nie zostanie opublikowany/