IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Comportement bizarre avec un mouselogger


Sujet :

Python

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Comportement bizarre avec un mouselogger
    Bonjour, bonsoir !

    (Une autre question à la con pour ceux qui ont du temps à perdre...)

    Je m'amuse à faire un robot pour cliquer sur la coche du reCAPTCHA (parce que je m'ennuie) et je suis face à un comportement étrange des variables globales (avec IDLE) :

    Faites le test chez vous avec ces 2 codes, appuyez sur Entrée pour lancer le mouselogger puis Echap pour arrêter le script puis cliquez au hasard.
    Je ne comprends pas pourquoi avec ce premier code la touche Echap ne stoppe le while li mais avec le second code oui ni pourquoi le faite de cliquer arrête bien le while li cette fois-ci.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    import win32gui, threading, time, random
    from pynput.keyboard import Key, Listener
    from pynput.mouse import Listener as Listener2
     
    li = 0
    mo = 0
    coords = []
    pressed_coords = []
     
    def mouse_listener():
        print('START OF MOUSE LISTENER')
        with Listener2(on_click=on_click) as listener2:
                listener2.join()
        while li:
            t = random.random()
            time.sleep(t)
            x,y = win32gui.GetCursorPos()
            coords.append([x,y,t])
        print('END OF MOUSE LISTENER')
     
    def on_click(x, y, button, pressed):
        global li
        print('{0} at {1}'.format('Pressed' if pressed else 'Released',(x, y)))
        pressed_coords.append([x,y])
        li = 0
        # Stop listener
        return False
     
    def on_release(key):
        global li, mo
        print('{0} release'.format(key))
        if key == Key.esc and li:
            li=0
            # Stop listener
            return False
     
        elif key == Key.enter and not li:
            li=1        
            threading.Thread(target=mouse_listener).start()
     
     
     
    # Collect events until released
    with Listener(on_release=on_release) as listener:
        listener.join()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    import win32gui, threading, time, random
    from pynput.keyboard import Key, Listener
    from pynput.mouse import Listener as Listener2
     
    li = 0
    mo = 0
    coords = []
    pressed_coords = []
     
    #-----------------1ERE PARTIE QUI CHANGE-------------------------
    def mouse_listener2():
        with Listener2(on_click=on_click) as listener2:
            listener2.join()
    #----------------------------------------------------------------
     
    def mouse_listener():
        print('START OF MOUSE LISTENER')
     
        #-----------------2nde PARTIE QUI CHANGE-------------------------
        threading.Thread(target=mouse_listener2).start()
        #----------------------------------------------------------------
     
        while li:
            t = random.random()
            time.sleep(t)
            x,y = win32gui.GetCursorPos()
            coords.append([x,y,t])
        print('END OF MOUSE LISTENER')
     
    def on_click(x, y, button, pressed):
        global li
        print('{0} at {1}'.format('Pressed' if pressed else 'Released',(x, y)))
        pressed_coords.append([x,y])
        li = 0
        # Stop listener
        return False
     
    def on_release(key):
        global li, mo
        print('{0} release'.format(key))
        if key == Key.esc and li:
            li=0
            # Stop listener
            return False
     
        elif key == Key.enter and not li:
            li=1        
            threading.Thread(target=mouse_listener).start()
     
     
     
    # Collect events until released
    with Listener(on_release=on_release) as listener:
        listener.join()
    Sûrement un truc de débutant que j'ai pas compris...

    PS : Je viens de faire un test sur la démo de reCAPTCHA, il m'a proposé de trouver les images quand j'ai repris la main mais pas avant
    Dernière modification par Invité ; 30/01/2021 à 21h52.

Discussions similaires

  1. Comportement bizarre avec un pointeur
    Par esteban dans le forum Langage
    Réponses: 7
    Dernier message: 15/07/2010, 14h05
  2. [XSL-FO] comportement bizarre avec tableau
    Par titouille dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 25/11/2009, 12h47
  3. [A-07] Comportement bizarre avec Jointure
    Par mayekeul dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 06/02/2009, 12h48
  4. Comportement bizarre avec le SQL a la carte
    Par fatatov dans le forum Deski
    Réponses: 2
    Dernier message: 11/07/2008, 16h47
  5. [TRANSAQ SQL] INSERT comportement bizarre avec les REAL
    Par argyronet dans le forum Langage SQL
    Réponses: 2
    Dernier message: 02/12/2005, 11h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo