Letöltenék webes form kitöltése után

Fórumok

Hali!

Van több weboldal, ahonnan adatot szeretnék letölteni.

Kézzel így megy:
1) megadom az URL-t a login oldalhoz
2) megadom a felhasználónevet és jelszót, submit
3) az betöltés után megjelenő URL végére a #defaultakármi helyére #valamit kell írnom
4) ki kell választanom néhány combobox-ból, hogy mit akarok letölteni, milyen formában, stb, Submit

A kérdésem az, hogy lehet-e ezt automatizálni. Ideálisan elkészítenék egy scriptet, és hetente egyszer meghívná a cron.

Elsőre wget/curl jutott eszembe, de ezeket csak arra használtam korábban, hogy URL-lel megadható tartalmat töltsek le. Nem hiszem, hogy képesek olyasmire, mint formokat kitölteni és elküldeni. Feltételezem, hogy valami olyan klienst keresek, ami egy script alapján végig tudja csinálni a lépéseket. https kapcsolatot nyit, eltárolja a sütiket, megvárja a válaszokat és amikor megjött az, amire várt, akkor olyan választ küld, amit a másik oldal megért.

Gondolom olyan robotra van szükségem, amik ellen a captcha szokott védeni egyes oldalakon. Ezen az oldalon nincs robot elleni védelem.

Elérhető ilyen scriptelhető robot, vagy ezt a hacker/spammer ipar egyedileg fejleszti minden egyes oldalhoz?

Selenium esetleg használható lenne erre?

Nincs Seleniummal semmi tapasztalatom, csak a kollégáim használták projekteken. Ha több eszköz is van, olyasmit keresek, amit egyszerű beállítani.

Hozzászólások

Szerkesztve: 2020. 05. 12., k - 16:35

Amiket irtal, az mind mukodhet. Korabban sima curl/wget-et hasznaltam (egyszerubb esetekben ma is), aztan kesobb php-ban, ujabban pythonban (requests+bs4+re) irok hozza valamit. A Selenium is jo erre, bar azt nem hasznaltam meg. Talan bongeszo extensionok is vannak hasonlo celra.

Kb. mindegy miben irod, ha az oldal logikaja megkoveteli, ugyis a sajat kod lesz a sok. En abban irnam a helyedben, amihez ertesz.

ja, a curl tud formot postolni.. es a libcurl is, ha nem bashbol hasznalnad (az emlitett php-s megoldasban is az volt)

When you tear out a man's tongue, you are not proving him a liar, you're only telling the world that you fear what he might say. -George R.R. Martin

Ez attól is függ, hogy hogyan valósították meg az oldalt.

A wget is tud form-okat elküldeni POST és GET metódussal is, és a sütiket is lehet vele kezelni. Ha viszont JavaScipt is garázdálkodik az oldalon (pl. az rakja össze az url-t, ahová a form adatait küldeni kell), akkor sajnos tényleg nem lesz elég.

Nekem egyébként a mechanize jobban bejött, mint a wget-et paraméterezni, de a JS annak is gondot tud okozni.

Ha ezek nem elegek, akkor valószínűleg a Selenium lesz a befutó.

Valószínűleg megoldható wget/curl segítségével is, de a cookie/session kezelés, form post okozhat gondot.

Automatizált teszteléshez való eszközök viszont biztos, hogy tudnak ilyet, Selenium is jó lehet, de vess egy pillantást a casperjs/phantomjs párosra is.

ha van kis Python tapasztalatod, ott a requests eleg átláthatóan hasznlálható ilyesmihez, sessionnel szépen elkezelgeti magának a cookiekat is, gyorsan összedobható benne ilyen szkript.

https://requests.readthedocs.io/en/master/user/quickstart/

“May have been the losing side. Still not convinced it was the wrong one.”
"The clitoris has 8,000 nerve endings and still isn't as sensitive as a conservative man on the Internet"

Ja elfelejtettem irni: szamits arra, hogy par evente ujraird (minimum fixald), amikor valtoztatnak az oldalon! Ha nagy terhelest okozol (itt azt hiszem, ez nem valoszinu), akkor meg a(z idoszaki) kitiltas is elkepzelheto.

Publikus, hogy melyik oldal a celpont? Ha egyszerubb, ranezek.

When you tear out a man's tongue, you are not proving him a liar, you're only telling the world that you fear what he might say. -George R.R. Martin

Az, hogy időnként karban kell tartani, az nem gond.

Nem hiszem, hogy ha automatizálom azt, amit egyébként kézzel csinálnék, az jelentős különbséget okoz a terhelésben ;-)

Publikus, hogy melyik oldal a celpont? Ha egyszerubb, ranezek.

Köszi, de nem fogsz tudni ránézni csak úgy. Az egyik célpont egy bank, ahol nem hiszem, hogy ügyfél vagy, a másik meg egy cég, ahol szintén nem hiszem, hogy ügyfél vagy, de ha ügyfél lennél, akkor sem adhatnám oda az URL-t, kifejezetten megkértek, hogy ne adjam meg másoknak.

disclaimer: ha valamit beidéztem és alá írtam valamit, akkor a válaszom a beidézett szövegre vonatkozik és nem mindenféle más, random dolgokra.

Szerkesztve: 2020. 05. 12., k - 22:05

ha nincs tulbonyolitva az oldal akkor a wget/curl mukodhet.

chromeban devtoolbar network panelen tudsz url-re "copy as curl". megcsinalod a login, copyzod a curlos commandot, probalkozva kiszorod belole ami nemkell parameter (referer/accept-language/accept/pragma/etc). curlnak van --cookie-jar kapcsoloja, azzal lementi fajlba a kapott session cookiet.

majd ugyanez a moka csak most a letolto cuccal. elvileg a cookie-jar fajlt olvassa is, tehat letolteskor meglesz a session cookied.

wgetnel ugyanezt a moka: eloszor "loginolsz" (--save-cookies, --keep-session-cookies), majd letolteskor loadolsz (--load-cookies)

lehet van ilyenre kesz python cucc, nemtudom.

A vegtelen ciklus is vegeter egyszer, csak kelloen eros hardver kell hozza!