|
[+] Bash i Javascript jak wywołać polecenie z konsoli
rryk - 25-01-2010 13:36
W jaki sposób mogę wywołać polecenie javascript przez skrypt bash ważne aby mieć możliwość importu ciasteczek (javascript potrzebuje zalogowanego użytkownika, więc bez tego ani rusz). Wiem że zarówno wget jak i curl takich opcji nie posiadają (przynajmniej wbudowanych), ale słyszałem że da się to jakoś obejść przez ajaxa lub po prostu skorzystać z jakiegoś innego programu.
lessmian2 - 25-01-2010 15:09
zarówno wget jak i curl takich opcji nie posiadaja(przynajmniej wbudowanych)
A skąd masz takie informacje?
polikarp% man curl | grep cookie tication, ftp upload, HTTP post, SSL connections, cookies, file trans‐ -b/--cookie <name=data> (HTTP) Pass the data to the HTTP server as a cookie. It is sup‐ name to use to read previously stored cookie lines from, which also activates the "cookie parser" which will make curl record incoming cookies too, which may be handy if you’re using this in the file to read cookies from should be plain HTTP headers or the Netscape/Mozilla cookie file format. NOTE that the file specified with -b/--cookie is only used as input. No cookies will be stored in the file. To store cookies, use the -c/--cookie-jar option or you could even save the HTTP -c/--cookie-jar <file name> Specify to which file you want curl to write all cookies after a completed operation. Curl writes all cookies previously read from a specified file as well as all cookies received from remote server(s). If no cookies are known, no file will be writ‐ ten. The file will be written using the Netscape cookie file cookies will be written to stdout. NOTE If the cookie jar can’t be created or written to, the whole then be read in a second curl invoke by using the -b/--cookie option! The -c/--cookie-jar option is however a better way to store cookies. -j/--junk-session-cookies (HTTP) When curl is told to read cookies from a given file, this option will make it discard all "session cookies". This will Typical browsers always discard session cookies when they’re polikarp% man wget | grep cookie --no-cookies Disable the use of cookies. Cookies are a mechanism for cookie using the "Set-Cookie" header, and the client responds with the same cookie upon further requests. Since cookies allow the default is to use cookies; however, storing cookies is not on by --load-cookies file Load cookies from file before the first HTTP retrieval. file is a cookies.txt file. issuing an HTTP cookie upon receiving and verifying your credentials. The cookie is then resent by the browser when Mirroring such a site requires Wget to send the same cookies your by --load-cookies---simply point Wget to the location of the cookies.txt file, and it will send the same cookies your browser cookie files in different locations: The cookies are in ~/.netscape/cookies.txt. Mozilla’s cookie file is also named cookies.txt, located ~/.mozilla/default/some-weird-string/cookies.txt. You can produce a cookie file Wget can use by using the File If you are using a different browser to create your cookies, --load-cookies will only work if you can locate or produce a cookie file in the Netscape format that Wget expects. If you cannot use --load-cookies, there might still be an alternative. If your browser supports a "cookie manager", you can use it to view the cookies used when accessing the site you’re mirroring. Write down the name and value of the cookie, and manually instruct Wget to send those cookies, bypassing the "official" cookie support: wget --no-cookies --header "Cookie: <name>=<value>" --save-cookies file Save cookies to file before exiting. This will not save cookies cookies"), but also see --keep-session-cookies. --keep-session-cookies When specified, causes --save-cookies to also save session cookies. Session cookies are normally not saved because they are meant to be Since the cookie file format does not normally carry session cookies, Wget marks them with an expiry timestamp of 0. Wget’s --load-cookies recognizes those as session cookies, but it might confuse other browsers. Also note that cookies so loaded will be treated as other session cookies, which means that if you want --save-cookies to preserve them again, you must use --keep-session-cookies again. wget --save-cookies cookies.txt \ wget --load-cookies cookies.txt \ If the server is using session cookies to track user authentication, the above will not work because --save-cookies will not save them (and neither will browsers) and the cookies.txt file will be empty. In that case use --keep-session-cookies along with --save-cookies to force saving of session cookies.
rryk - 25-01-2010 22:03
Nie chodziło mi o obsługę ciasteczek lecz o obsługę javascriptu, że tego wget ani curl nie obsługuje, a jak uważasz inaczej to daj mi pełne polecenie, którym wykonam to polecenie javascriptu (zmyślone):
javascript:akceptuj('reg',%20'zaznacz_reg');
Na stronie załóżmy debian.linux.pl z wykorzystaniem ciasteczek zapisanych w pliku ciastko.txt.
lessmian2 - 25-01-2010 22:28
Napisałeś to tak, że zrozumiałem że ani curl ani wget nie obsługują ciastek :-> Co do javascritpu, rzeczywiście, oba programy nie umożliwiają wykonania skryptów, które normalnie są wykonywane po stronie klienta. Jeśli to zwykły javascript, musisz to sobie sam wykonać, jeśli to jednak AJAX, to musisz się odwołać bezpośrednio do strony do której odwołuje się kod AJAX'owy. Niestety nie podam Ci gotowych rozwiązań, bo ich nie mam/nie znam :->
rryk - 26-01-2010 09:48
To zwykły javascript jak powiedziałem dosłownie jedno polecenie w javascrypcie ale nie moge sobie sam tego wykonać bo tworze coś w rodzaju bot'a który ma to robić za mnie :D dlatego szukam jakiegoś programu który mógłby zostać wywołany z konsoli a po wykonaniu javascriptu po prostu by się wyłączył...
lessmian2 - 26-01-2010 10:10
A tak w ogóle to co ten kod javascript robi?
rryk - 26-01-2010 11:16
Klikam jeden przycisk na pewnej stronie, nie mogę więcej zdradzić.
Edycja: Ostatnio natknąłem się na to: http://cplus.about.com/b/2009/01/26/...plications.htm Może ktoś zna się dobrze na C++ i napisze prosty program (konsolowy), który wczyta ciasteczka i wykona na podanej stronie odpowiednie polecenie w javascript?
lessmian2 - 26-01-2010 11:38
klika jeden przycisk na pewnej stronie
Więc w czym jest problem, żeby go samemu kliknąć?
rryk - 26-01-2010 11:52
w tym że to ma robić sie samo omg :D robie skrypt który to za mnie robi kiedy mnie nie ma czaisz?
lessmian2 - 26-01-2010 11:55
Nie samemu, że paluchem na myszce, tylko samemu, że dokonując dodatkowego żądania, za pomocą curla czy wgeta, naciskającego ten przycisk. Rozumiesz?
rryk - 26-01-2010 12:23
Gdyby to działało raczej bym tutaj nie pisał.
Edycja: Przykładowo curl wyświetla coś takiego:
curl: (6) Couldn't resolve host 'javascript:...........
a wget:
--2010-01-26 12:28:49-- ftp://javascript/polecenie(..........) => `-' Translacja javascript... nieudane: Name or service not known. wget: nie udało się rozwiązać adresu hosta `javascript'
lessmian2 - 26-01-2010 13:19
Jeśli robisz coś w stylu
curl http://javascript/polecenie
to jakim cudem ma to działać? Musisz sprawdzić jakie żądanie wysyła przeglądarka w czasie kliknięcia na button i zrobić to samo za pomocą curl'a. Jeśli nie wiesz jak to sprawdzić w konsoli, to zainstaluj sobie np. LiveHttpHeaders do firefoxa i będziesz wszystko ładnie widział.
rryk - 26-01-2010 13:32
Nie. Wpisuję np.
curl -b ciastka.txt javascript:akceptuj('reg',%20'zaznacz_reg')
albo:
wget --load-cookies=ciastka.txt -O - javascript:akceptuj('reg',%20'zaznacz_reg')
Rozumiesz ale programy interpretują to inaczej a tak poza tym ta twoja wtyczka nie rejestruje tego co wciskam.
[Dodano: |26 Sty 2010|, 2010 13:55] Bardzo przepraszam już rejestruje a mój program działa wyśmienicie.
lessmian2 - 26-01-2010 14:02
Eh. Proponuję przed napisaniem jakiegokolwiek posta, pomyśleć, policzyć do 100, jeszcze raz pomyśleć i dopiero pisać :->
zanotowane.pldoc.pisz.plpdf.pisz.plminister.pev.pl
|