Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Automatyczne kilkanie odnośnika
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
dark_root
Wiecie może jak zasymulować w js kliknięcie na odnośnik href?
zegarek84
po prostu link.click() ;D.... oczywiście jeśli chcesz mieć okreslone kliknięcie po obliczonym czasie to, żeby to szybciej działąło i nie szukało elementu w momencie klikania [co opóźnia] to ten element przypisz do jakiejś zmiennej wcześniej a o określonym czasie wykonaj akcję kliknięcia [o ile chodzi o jakiś pułautomat ze strony javascript]... niżej taki przykładzik kodzika z plemion do potwierdzania ataku o określonej godzinie, sekundzie i milisekundzie gdzie go pisałem dla znajomych - tutaj przykład klikania w formularz [a najlepsze to są aplikacje po stronie serwera ;D] - na tym forum rozdziela javascript
[JAVASCRIPT] pobierz, plaintext
  1. java script:(
  2. {dif:-63304, /* PRZECINKA NIE KASOWAĆ... raz na dzień trzeba to ustawić - do przybliżonej wartości jest inny skrypt */
  3.  
  4. kliknij:function(d_atak)
  5. {
  6. for(var i=0;i<=6;++i)d_atak[i]=~~d_atak[i];
  7. var czasTeraz = new Date(),
  8. czasAtak = new Date(d_atak[0],d_atak[1]-1,d_atak[2],d_atak[3],d_atak[4],d_atak[5],d_atak[6]),
  9. za_ile=czasAtak-czasTeraz-this.dif,
  10. doc=frames['main']?frames['main'].document:document,
  11. co=doc.forms[0],
  12. klik=function(){
  13. co.submit.click();
  14. };
  15. setTimeout(klik,za_ile);
  16. }/*[rok,miesiąc,dzień,godzina,minuta,sekunda,milisekunda]*/
  17. }).kliknij([2008,5,12,15,6,1,0])
[JAVASCRIPT] pobierz, plaintext
dark_root
ale click() do href nie działa na ff. Są jakieś inne, działające sposoby?
zegarek84
Cytat(dark_root @ 28.08.2010, 19:46:04 ) *
ale click() do href nie działa na ff. Są jakieś inne, działające sposoby?
rzeczywiście ;D - a dawniej sporo półautomatów popisałem i jakoś o tym zapomniałem - ale po rozwiązanie wystarczy zerknąć na stronę manualla js mozilli:
element.click
przejrzałem metody obiektu [for(var $key in $ob)...] i nie znajdując click() znalazłem metodę dispatchEvent() [jakoś jej nigdy nie używałem i przy tym problemie nie trzeba z niej kożystać - zależy które rozwiązanie wybierzesz]...

w kodzie daję 2 gotowe rozwiązanie także z użyciem event.initMouseEvent i podpięciem do element.dispatchEvent()... w kodzie są też podpięte na 2 sposoby zdarzenia onclick coby potwierdzić, iż kliknięcie zostało za symulowane [ZAPEWNE TO DO JAKIEGOŚ PÓŁ AUTOMATU POTRZEBUJESZ]... jeśli potem będziesz chciał przekierować stronę na inny adres skorzystasz po prostu z document.location=klikany_link.getAttribute('href'); -> czytaj komentarze w przykładzie...
[edit] - a rozdzieliłem dla czytelności na 2 kody ;p
  1. <head>
  2. <title>Timer</title>
  3. </head>
  4. <body>
  5. <a id="klik" href="http://www.google.pl/">samo się na google kliknie za 2s</a>
  6. <script type="text/javascript">
  7. var klikany_link=document.getElementById('klik');
  8. function przygotuj_zdarzenia_1($el){
  9. $el.onclick=function(e){alert('kliknięty na onklick:'+e.target.parentNode.getAttribute('href'));};
  10. $el.addEventListener('click', function(e){alert('adeventlistener:'+e.target.parentNode.getAttribute('href'));}, false);
  11. }
  12. function mojaWlasnaSymulacja_by_zegarek84($el){
  13. var input = document.createElement('input');
  14. input.type='submit';
  15. $el.appendChild(input);
  16. input.click();
  17. }
  18.  
  19. function jakas_po(){
  20. przygotuj_zdarzenia_1(klikany_link);
  21. mojaWlasnaSymulacja_by_zegarek84(klikany_link);
  22.  
  23. //PRZEKIEROWAĆ POTEM MOŻESZ NP. W TEN SPOSÓB:
  24. // document.location=klikany_link.getAttribute('href');
  25. }
  26. setTimeout(jakas_po, 2000); //czas jest w milisekundach dlatego 20000
  27. </script>
  28. </body>
  29. </html>

  1. <head>
  2. <title>Timer</title>
  3. </head>
  4. <body>
  5. <a id="klik" href="http://www.google.pl/">samo się na google kliknie za 2s</a>
  6. <script type="text/javascript">
  7. var klikany_link=document.getElementById('klik');
  8. function przygotuj_zdarzenia_2($el){
  9. $el.onclick=function(e){alert('kliknięty na onklick:'+e.target);};
  10. $el.addEventListener('click', function(e){alert('adeventlistener:'+e.target);}, false);
  11. }
  12. function simulateClick($el) {
  13. var evt = document.createEvent("MouseEvents");
  14. evt.initMouseEvent("click", true, false, window,
  15. 0, 0, 0, 0, 0, false, false, false, false, 0, null);
  16. $el.dispatchEvent(evt);
  17. }
  18. function jakas_po(){
  19.  
  20. przygotuj_zdarzenia_2(klikany_link);
  21. simulateClick(klikany_link);
  22.  
  23. //PRZEKIEROWAĆ POTEM MOŻESZ NP. W TEN SPOSÓB:
  24. // document.location=klikany_link.getAttribute('href');
  25. }
  26. setTimeout(jakas_po, 2000); //czas jest w milisekundach dlatego 20000
  27. </script>
  28. </body>
  29. </html>

jednym słowem nie ma rzeczy nie możliwych... masz łeb i h* to kombinuj ;p
dark_root
no niby komunikaty się pojawiają, ale lokalizacja strony nie zmienia się na google.pl. Potrzebuje to bo na stronie jest taki input tylko nie w formularzu i na końcu nie ma buttona tylko jest href i to wysyła zawartość pola tekstowego na serwer. Jednak skoro tu nie zmienia lokalizacji na google.pl to tam chyba nie wyśle tego na serwer bo coś nie do końca u mnie to działa. dry.gif U Ciebie zmienia lokalizacje strony?
zegarek84
GDZIE TY WIDZISZ TEN INPUT DOKŁADNIE questionmark.gif - przy górnym jest submit ale nie na końcu formularza i na dolnym formularzu podobnie - napisz dokładniej o które miejsce Ci chodzi to rozwiąże problem kliknięcia w js mimo tego co niżej napisałem - ale nie napiszę algorytmu do obchodzenia tych statystyk - zdarzenie mousedown sam sobie będziesz musiał wykombinować...

Cytat(dark_root @ 28.08.2010, 22:07:00 ) *
U Ciebie zmienia lokalizacje strony?
a przeczytać treść i komentarz jak zmienić adres strony to nie raczy??
wiem - zapewne chcesz wykonać akcję ajax jaka jest na stronie - a o takich narzędziach jak livehttpheaders lub ieHTTPHeaders to słyszał w ogóle [za pomoca których można sprawdzić nagłówki i co zostało wysłane nawet w tle...] - wszystko mam za Ciebie robić ;p questionmark.gif

po za tym na google większość akcji jest podpiętych pod onmousedown gdzie najczęściej podmieniają linki do statystyk - i tu mnie śmieszą co niektórzy jak piszą, iż daje coś pingowanie swoich stron - jaki to ma mieć sens?? - kiedy trzeba choćby botem klikać odpowiednie linki byle nie za często ;p [lepiej rzadziej jak częściej i nie regularnie - a za refererem na swoją stronę wcale nie trzeba przecież podążać]

aby na szybko sprawdzić to co napisałem o podmianie linków to kliknij myszką link i szybko naciśnij klawisz esc po czym przez livehttpheaders sprawdź wartość href tego linka [lub w adresie przez userscript]

dałem wiele wskazówek nawet do złożenia bota w php...

na tym forum nie pomaga się w obchodzeniu zabezpieczeń więc gotowca na google nie dam - podałem narzędzia i to co wyżej powinno Ci wystarczyć - kombinuj winksmiley.jpg [więcej tak też się nauczysz...]
everth
Tutaj masz podaną odpowiednią funkcję. Cały wątek traktuje o wywoływaniu zdarzeń.

@DOWN: Masz rację - ale przeczyta to się czegoś nauczy. Poza tym jak widzę niepokolorowanego JSa to przewijam tongue.gif (tutaj zwróciłem uwagę tylko na funkcję simulateClick())
zegarek84
Cytat(everth @ 28.08.2010, 22:27:00 ) *
Tutaj masz podaną odpowiednią funkcję. Cały wątek traktuje o wywoływaniu zdarzeń
toż samo masz w drugim przykładzie ;p - fakt, pominąłem ie - ale tam bodajże działa zwykły click() ;p NO I NA BANK ZADZIAŁA TEŻ PIERWSZY SPOSÓB [pierwszy przykład z dodaniem formularza]
dark_root
zegarek84 ta opcja zmiany lokalizacji strony odpada, bo na tej stronie href="#" sadsmiley02.gif nawet nie tyle chodzi o zmianę lokalizacji co poprostu o wysłanie tej zmiennej z input na serwer. Próbując doszedłem do takiego czegoś:
  1. <head><script type="text/javascript">
  2.  
  3. function simulateClick() {
  4. var evt = document.createEvent("MouseEvents");
  5. evt.initMouseEvent("click", true, true, window,
  6. 0, 0, 0, 0, 0, false, false, false, false, 0, null);
  7. var cb = document.getElementById("button");
  8. var canceled = !cb.dispatchEvent(evt);
  9.  
  10. }
  11.  
  12.  
  13.  
  14. <input type="button" value="aa" id="button" onclick="alert('aaa')"><input checked="checked" id="checkbox" type="checkbox"><a href="http://page.pl" id="href">asasa</a>
  15. <input onclick="simulateClick();" value="Simulate click" type="button">

No i działa z button, checkbox, ale za nic nie współpracuje z href. Co w tym kodzie należałoby zmienić?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.