Tworzenie Bota (Prośba o wskazówkę)

0

Cześć, w celu douczenia i ewentualnego wykorzystania chciałem stworzyć bota, który będzie wykonywał listę kroków:
a) Logował się wpisanymi danymi na witrynę.
b) Po zalogowaniu korzystał z podanego linka do produktu.
c) Wykonywał próbę dodania tego produktu do koszyka (jeżeli się uda, to działanie bota zakończone.)
Chciałem to zrobić za pomocą inputów i JS, jednak przeszukując internet nie znalazłem żadnego artykułu, który by mi to objaśnił.
Jak zczytac dane ze strony i na niej działać? Czy można zrobić to na zwykłym JS, czy trzeba do tego użyc PHP?

0

Da się to zrobić, pisząc własne rozszerzenie do przeglądarki. Wtedy używasz JS + trochę poleceń specyficznych dla rozszerzeń przeglądarkowych:
http://sebastianczech.com/2016/05/01/zbuduje-wlasne-rozszerzenie-do-chrome/
https://developer.chrome.com/extensions/getstarted
http://www.adambarth.com/experimental/crx/docs/samples.html#0262260daf0c8f7b28feff2ef23b05e7abf9d1e0

1

Poczytaj o Selenium.

2

Z opisu wynika że bardziej niż bota chciałbyś stworzyć test e2e. Do niedawna używało się w tym celu Selenium orginalnie napisanego w Javie ale przeportowanego też do innych języków. Od jakiegoś czasu jest też Cypress. Framework w JS, ale niestety nie używałem

0

Dzięki wielkie za odpowiedź, najlepsze wydaje mi się dla mnie selenium, jednak ciężko mi znaleźć jakiś sensowny tutorial, który pozwoliłby mi się na nim oprzeć, żeby stworzyć takie coś.

1

Możesz wybrać np. https://www.cypress.io/, a tutaj łap tutorial jak napisać własny test - https://docs.cypress.io/guides/getting-started/installing-cypress.html#System-requirements (w Twoim przypadku własnego bota). Pierwszy krok będzie wyglądał jakoś tak:

describe('super bot', function() {
  it('should login', function() {
    cy.visit('http://sklep.pl');
    cy.get('#login').type('john');
    cy.get("#password").type('123456');
    cy.get('button').click();
  })
})
0

Hej, mam pewien problem, bo sama formuła logowania działa dobrze, tylko po kliknięciu w przycisk zaloguj, wyskakuje błąd (widoczny na ss). Czy jest to jakaś zapora antybotowa? Chciałby ktoś podpowiedzieć co zrobić, żeby ominąć ten błąd?

0
kogucik1337 napisał(a):

Hej, mam pewien problem, bo sama formuła logowania działa dobrze, tylko po kliknięciu w przycisk zaloguj, wyskakuje błąd (widoczny na ss). Czy jest to jakaś zapora antybotowa? Chciałby ktoś podpowiedzieć co zrobić, żeby ominąć ten błąd?

Nie wiem, co konkretnie dzieje się na tej akurat stronie, ale pamiętam inną, gdzie do zalogowania nie wystarczyło wkleić loginu, hasła i zrobić click(), ale konieczne było zasymulowanie całego procesu ustawienia fokusa na polach, wciśnięcia i puszczenia na nich klawisza (symulowane ctrl+v) i dopiero w takiej postaci to działało, więc możliwe, że tutaj jest coś podobnego.

0

A jest jakaś możliwość czego dokladnie wymagają? Symulowane kliknięcie nie działało, ale kiedy ręcznie klikam to loguje bez problemu, więc możliwe że właśnie o to chodzi, pokombinuje.

1
kogucik1337 napisał(a):

A jest jakaś możliwość czego dokladnie wymagają? Symulowane kliknięcie nie działało, ale kiedy ręcznie klikam to loguje bez problemu, więc możliwe że właśnie o to chodzi, pokombinuje.

Bardzo prawdopodobnie nie sprawdzaja nawet focus-a/blur-a ale to czy mysz jest faktycznie nad button-em gdy robisz click ja uzywam puppeteer i tam mozesz np zrobic tak:

await page.mouse.move(100, 100);
await page.mouse.down();
await page.mouse.move(200, 200);
await page.mouse.up();

Problem jest taki ze wszystko zalezy jakie zabezpieczenia ma akurat wp.pl bo mozna wykryc ze browser jest headless lub nawet gdy nie jest headless sa pewne rzeczy ktore mozna sprawdzic ktore po prostu pozwalaja rozpoznac ze jest to puppeteer mysle ze tak samo bedzie z selenium i innymi browser automation po prostu ich runtime ma niektore rzeczy rozpoznawalne, wszystko zalezy od tego ile zalezy ludzia po drugiej stronie zeby wykryc takie boty.

Ja zrobilem juz parenascie botow do fb,tw,linkedin,gmail,instagram i kilku innych i w niektorych przypadkach musialem symolowac ruszanie myszki na poziomie OS-u czyli za pomoca puppeteer-a wyciagalem współrzędne elementu do najechania/klikniecia i potem robilem to z zewnatrz efekt jest taki ze po kilku miesiacach dzialania botow na roznych kontach nie zablokowali mnie jeszcze na ani jednim z nich.

Wiec technik jest duzo pokombinuj fajna sprawa :)

0
kogucik1337 napisał(a):

A jest jakaś możliwość czego dokladnie wymagają?

Teoretycznie możesz analizować JS z ich strony, ale myślę, że szybciej i tak wyjdzie drogą eksperymentów.

No i jest jeszcze właściwość isTrusted:
https://www.w3schools.com/jsref/event_istrusted.asp
Jeśli ktoś tego użyje, to właściwie nie do obejścia z poziomu skryptów w przeglądarce i trza by wtedy wywoływać jakieś zewnętrzne mechanizmy, jak zauważył przedmówca.

0

Poradziłem sobie z logowaniem, jak i wybieraniem produktu, tylko nie do końca wiem jak stworzyć warunek poprawny. To chcę zrobić:
Jeżeli (to istnieje)
to dodaj do koszyka
w przeciwnym wypadku
odśwież stronę i spróbuj ponownie
Tylko, że w przeciwnym wypadku zamiast wykonać polecenie, to wywala mi error (elementu nie znaleziono) i test stoi w miejscu. Zrobienie warunku, że jeżeli wyskoczy error to wtedy odświeżyć stronę pomoże?

1 użytkowników online, w tym zalogowanych: 0, gości: 1