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.
- 200 megtekintés
Hozzászólások
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)
A strange game. The only winning move is not to play. How about a nice game of chess?
- A hozzászóláshoz be kell jelentkezni
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ó.
- A hozzászóláshoz be kell jelentkezni
https://github.com/puppeteer/puppeteer
Aktivan hasznaltam, data crawler megoldaskent microservice rendszereknel.
- A hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni
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.
“Any book worth banning is a book worth reading.”
- A hozzászóláshoz be kell jelentkezni
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.
A strange game. The only winning move is not to play. How about a nice game of chess?
- A hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni
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!
- A hozzászóláshoz be kell jelentkezni