Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[Perl]Kliknięcie w przycisk na www

gucwa89 15 Cze 2012 10:33 2106 27
  • #1 15 Cze 2012 10:33
    gucwa89
    Poziom 10  

    Witam wszystkich.
    Używam biblioteki www::mechanize który daje możliwość parsowania i innych akcji na stronach. Otóż chcę kliknąć w przycisk na stronie którego kod to:

    Kod: html4strict
    Zaloguj się, aby zobaczyć kod


    Niestety ten przycisk nie jest w <form id="nr_id" itd> i biblioteka sobie nie radzi z tym. Pytałem wujka Google-a ale nic nie podpowiedział. Może znajdzie się ktoś tutaj który jest pasjonatem starego poczciwego Perla? Wystarczy odesłać mnie do jakiejś biblioteki lub udzielić jakiejś podpowiedzi.
    Z góry dzięki za jakiekolwiek podpowiedzi.[/code]

    0 27
  • #2 15 Cze 2012 14:25
    arnoldziq
    Moderator Programowanie

    Ten "input" nie jest wewnątrz żadnego "form"?

    0
  • #3 15 Cze 2012 17:07
    gucwa89
    Poziom 10  

    No właśnie nie jest. jakby był to nie było by problemu. jest na to jakiś inny sposób.

    0
  • #4 17 Cze 2012 17:18
    gucwa89
    Poziom 10  

    Ma ktoś jakiś pomysł??

    0
  • #6 18 Cze 2012 10:25
    arnoldziq
    Moderator Programowanie

    sedr napisał:
    Tak na marginesie to tutaj są sample jak używać [...] Mechanize z formami.

    No właśnie. Z formami. Jakby kolega poczytał dokładnie cały wątek, to by się kolega dowiedział, że żadnej formy tam nie ma.

    A wracając do tematu;
    Nie wiem, czy poza wywołaniem jakiegoś skryptu JS/VBS itd. taki "wolny" przycisk, nie związany z FORM może robić coś innego.
    FORM opisuje co (jaki zewnętrzny skrypt/strona itd) ma być wysłane, gdzie i w jaki sposób mają być przekazane dane. Bez tego to jest, po prostu, przycisk na stronie...
    Można przeczytać, zmienić lub poprawić jego wygląd, można zmusić stronę do jakiejś reakcji na niego. Ale to wszystko tylko i wyłącznie po stronie przeglądarki.
    Perl nie będzie miał do tego żadnego dostępu.

    Jest jeden trick, który można zastosować. Tylko nie wiem, czy spełni on oczekiwania.
    Jest to dynamiczne wygenerowanie formularza z ukrytymi obiektami, który będzie tworzony i wykonywany z poziomu Java Script.
    Np coś takiego, dopisane np. do metody onClick, tego konkretnego przycisku :
    Kod: javascript
    Zaloguj się, aby zobaczyć kod

    0
  • #8 18 Cze 2012 10:40
    arnoldziq
    Moderator Programowanie

    Ale inna biblioteka nic nie da.
    Jeżeli button nie będzie w formie, to nie wykona żadnej akcji... To jest właśnie problem.

    0
  • #9 18 Cze 2012 11:56
    gucwa89
    Poziom 10  

    Dodano po 3 [minuty]:

    arnoldziq napisał:
    wracając do tematu;
    Nie wiem, czy poza wywołaniem jakiegoś skryptu JS/VBS itd. taki "wolny" przycisk, nie związany z FORM może robić coś innego.
    FORM opisuje co (jaki zewnętrzny skrypt/strona itd) ma być wysłane, gdzie i w jaki sposób mają być przekazane dane. Bez tego to jest, po prostu, przycisk na stronie...
    Można przeczytać, zmienić lub poprawić jego wygląd, można zmusić stronę do jakiejś reakcji na niego. Ale to wszystko tylko i wyłącznie po stronie przeglądarki.
    Perl nie będzie miał do tego żadnego dostępu.

    Eh niby sam przycisk a Perl sobie nie poradzi.
    arnoldziq napisał:
    Ale inna biblioteka nic nie da.
    Jeżeli button nie będzie w formie, to nie wykona żadnej akcji... To jest właśnie problem.

    A masz jakiś inny sposób? Nawet w innym języku programowania? Jakiś przykład? Ja nic nie znalazłem. Ciekawych bibliotek do Perla też nie.

    0
  • #10 18 Cze 2012 12:36
    arnoldziq
    Moderator Programowanie

    Nie chodzi o to, że akurat Perl sobie nie poradzi. Żaden język serwerowy sobie nie poradzi, bo NIC NIE WYSYŁASZ jeżeli przycisk znajduje się poza FORM.
    I nie jest to wina Perl-a. PHP też nic tutaj nie zrobi.
    Co do rozwiązania tego problemu, to można zastosować ten trick, który podałem w poprzednim poście.

    Kod: html4strict
    Zaloguj się, aby zobaczyć kod

    0
  • #11 18 Cze 2012 13:31
    gucwa89
    Poziom 10  

    arnoldziq a musi być w formie? A jak jest w innym znaczniku np label?

    Kod: html4strict
    Zaloguj się, aby zobaczyć kod

    0
  • #12 18 Cze 2012 13:54
    arnoldziq
    Moderator Programowanie

    Jeżeli użyjesz mojej metody, to możesz nawet zrezygnować z przycisku całkowicie. Albo otoczyć go czym sobie zechcesz. Byle tylko metoda onClick wskazywała odpowiedni skrypt.
    Ale jakiś (nawet dynamicznie generowany) form musi tam być. Nie ma innej możliwości przesłania danych. Albo form albo link do strony (<a> + tekstowe GET). Inaczej dane nie opuszczą przeglądarki.

    A z drugiej strony się zastanawiam. Skoro tak na prawdę FORM jest nie widoczne w przeglądarce, to czemu się wzbraniasz z jego zastosowaniem?
    Co ma na celu przyciskanie przycisku, który niczemu nie służy?

    0
  • #13 18 Cze 2012 14:14
    gucwa89
    Poziom 10  

    Ja nie mam dostępu do kodu źródłowego i próbuję zautomatyzować operację ;)

    0
  • #14 18 Cze 2012 14:22
    arnoldziq
    Moderator Programowanie

    Aha. No super.
    W takim wypadku jak chcesz przechwycić jakiekolwiek zdarzenia na stronie, skoro nie masz takiej możliwości? Co Ty chcesz tam zautomatyzować?
    Kompletnie bez sensu.

    0
  • #15 18 Cze 2012 14:23
    gucwa89
    Poziom 10  

    No właśnie jak był <form> to nie było problemu. Schody zaczęły się jak był tylko <input> bez forma.

    0
  • #16 18 Cze 2012 14:28
    arnoldziq
    Moderator Programowanie

    Dobra. Bo zaczynam się denerwować.
    1. Nie masz dostępu do kodu strony.
    2. Nie ważne czy jest form, czy nie, skoro kod nie kieruje danych/zdarzeń do konkretnego skryptu/serwera/strony, to i tak ich nie odczytasz.
    3. Żeby kod wysyłał cokolwiek do Ciebie, musisz go zmienić.
    4. Patrz punkt pierwszy.

    O co tutaj chodzi?
    Może w końcu napiszesz dokładnie jaka jest sytuacja i co chcesz uzyskać?

    0
  • #17 18 Cze 2012 14:32
    gucwa89
    Poziom 10  

    Jak jest form to za pomocą biblioteki www::mechanize można kliknąć na przycisk, ale na danej stronie nie ma forma i jest problem i dlatego tutaj napisałem czy ktoś mi pomoże.

    0
  • #18 18 Cze 2012 14:39
    arnoldziq
    Moderator Programowanie

    Dobra. Nareszcie do czegoś dochodzimy.
    Czyli tak :
    1. To nie jest twoja strona, którą chcesz "zmechanizować".
    2. Chcesz wygenerować zdarzenie na obcej stronie.

    Może chociaż podasz link do tej strony? Albo zamieścisz jej kod?
    Co się dzieje na tej tajemniczej stronie, jak normalnie klikniesz na przycisku myszką?

    0
  • #20 18 Cze 2012 17:11
    gucwa89
    Poziom 10  

    Arnoldziq oto kod:

    Kod: html4strict
    Zaloguj się, aby zobaczyć kod


    Wejdz na stronę likemore.pl później pod adres: http://likemore.pl/index.php?p=action

    I tam trzeba klikać Lubię To. Próbuję to zautomatyzować

    0
  • #21 18 Cze 2012 18:35
    arnoldziq
    Moderator Programowanie

    No dobrze, a gdzie w tym kodzie jest ten tajemniczy button, który nic nie robi ?

    0
  • #22 18 Cze 2012 22:21
    gucwa89
    Poziom 10  

    Kod: html5
    Zaloguj się, aby zobaczyć kod
    To jest przycisk do omijania akcji, przekazuje do jakiejś funkcji 0,7581, i nazwe profilu. 7581 to pewnie Id usera. W kodzie jest też chyba w javie funkcja do której można przekazać wartość 1 lub 2
    Kod: html5
    Zaloguj się, aby zobaczyć kod


    Tylko zastanawia mnie czemu to jest odkomentowane.

    Dodano po 25 [sekundy]:

    Kod: html5
    Zaloguj się, aby zobaczyć kod
    To jest przycisk do omijania akcji, przekazuje do jakiejś funkcji 0,7581, i nazwe profilu. 7581 to pewnie Id usera. W kodzie jest też chyba w javie funkcja do której można przekazać wartość 1 lub 2
    Kod: html5
    Zaloguj się, aby zobaczyć kod


    Tylko zastanawia mnie czemu to jest odkomentowane.
    Masz jakiś pomysł??

    0
  • #23 29 Cze 2012 15:53
    gucwa89
    Poziom 10  

    No dobra nikt nie udzielił odpowiedzi. Nie zakładając nowego, zapytam czy jest możliwość "za symulować " kliknięcie myszki na www podając współrzędne?

    0
  • #24 29 Cze 2012 15:56
    arnoldziq
    Moderator Programowanie

    Jest.
    Ale prościej i lepiej jest podejrzeć, co przeglądarka wysyła do serwera w przypadku naciśnięcia takiego przycisku i po prostu wysyłać tę informację.

    0
  • #25 30 Cze 2012 12:06
    gucwa89
    Poziom 10  

    arnoldziq napisał:
    Jest.
    Ale prościej i lepiej jest podejrzeć, co przeglądarka wysyła do serwera w przypadku naciśnięcia takiego przycisku i po prostu wysyłać tę informację.


    No właśnie rozmawialiśmy wyżej w temacie. W kodzie patrzyłem i nie ma forma.
    A w jaki sposób odbywa się podawanie tych współrzędnych? Zapodałbyś bibliotekę albo przykład. Szukałem w google i nie znalazłem.

    0
  • #26 02 Lip 2012 10:17
    arnoldziq
    Moderator Programowanie

    Używasz Firefox-a?
    Zainstaluj sobie dodatek TamperData.
    Przy jego pomocy możesz śledzić całą komunikację pomiędzy przeglądarką a serwerem.

    0
  • #27 02 Lip 2012 13:51
    kubatek94
    Poziom 17  

    Gucwa89, to, ze nie ma forma, nie znaczy, ze dane nie sa wysylane do serwera. Akurat tutaj, wywolywana jest funkcja Action, a kod tej funkcji mozna podejrzec w "action.js" :) Jest tam POST do pliku "gadzina.php", wysylane sa argumenty send("show="+show+"&ad="+ad+"&source="+source).. z reszta mozesz podzialac sam :P

    0
  • #28 04 Lip 2012 18:01
    gucwa89
    Poziom 10  

    arnoldziq podasz przykład według tych współrzędnych??

    0
  Szukaj w 5mln produktów