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

Tworzenie Bota (Prośba o wskazówkę)
K1
  • Rejestracja:ponad 5 lat
  • Ostatnio:5 miesięcy
  • Postów:25
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?

Freja Draco
Freja Draco
  • Rejestracja:prawie 7 lat
  • Ostatnio:ponad 3 lata
  • Postów:3394
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


Patryk27
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:ponad rok
  • Lokalizacja:Wrocław
  • Postów:13042
1

Poczytaj o Selenium.


Maciej Cąderek
Maciej Cąderek
Albo puppeteer
KamilAdam
  • Rejestracja:ponad 6 lat
  • Ostatnio:3 dni
  • Lokalizacja:Silesia/Marki
  • Postów:5505
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


Mama called me disappointment, Papa called me fat
Każdego eksperta można zastąpić backendowcem który ma się douczyć po godzinach. Tak zostałem ekspertem AI, Neo4j i Nest.js . Przez mianowanie
K1
  • Rejestracja:ponad 5 lat
  • Ostatnio:5 miesięcy
  • Postów:25
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ś.

MA
  • Rejestracja:prawie 17 lat
  • Ostatnio:4 dni
  • Postów:644
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:

Kopiuj
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();
  })
})
edytowany 3x, ostatnio: Markuz
K1
  • Rejestracja:ponad 5 lat
  • Ostatnio:5 miesięcy
  • Postów:25
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?

Freja Draco
Freja Draco
  • Rejestracja:prawie 7 lat
  • Ostatnio:ponad 3 lata
  • Postów:3394
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.


K1
  • Rejestracja:ponad 5 lat
  • Ostatnio:5 miesięcy
  • Postów:25
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.

marcio
  • Rejestracja:ponad 17 lat
  • Ostatnio:około 2 godziny
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:

Kopiuj
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 :)

Freja Draco
Freja Draco
  • Rejestracja:prawie 7 lat
  • Ostatnio:ponad 3 lata
  • Postów:3394
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.


marcio
jesli mnie pamiec nie myli to event-y trigger-owane przez puppeteer akurat maja isTrusted na true
K1
  • Rejestracja:ponad 5 lat
  • Ostatnio:5 miesięcy
  • Postów:25
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?

Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)