L'assegnazione del valore degli elementi di input tramite console non è sufficiente per completare l'invio del modulo

1

Questo rientra tra la sicurezza delle informazioni e la codifica JavaScript:

Gli sviluppatori di un determinato sito web hanno disabilitato l'opzione per salvare i dati modulo . Neanche i nomi utente possono essere salvati, quindi ho provato a superare questo problema con uno script Greasemonkey, tramite:

document.querySelector('#username').value = "myUsername";

Posso riempire tutti i campi non password in questo modo, ma questo non sarà sufficiente:

Dopo aver riempito tutti i campi non password con un'operazione document.querySelector simile, e dopo aver inserito manualmente la password, ho fatto clic su "Invia", ma mi viene detto che "tutti i campi sono necessari"; sembra che le assegnazioni value non siano "riconosciute" dal sito.

Problema 1:

Il contenuto viene riconosciuto se, ad esempio, elimino l'ultima lettera del value assegnato, ovvero se navigo con il mouse su un determinato campo (il campo del nome utente in questo caso), cancella l'ultimo lettera da myUsername in modo che diventi myUsernam e poi se restituisco la e 'e ripetuto questa azione, allora l'invio è eseguito correttamente.

Problema 2:

In entrambi i casi, sembra che sia sempre necessario fare clic su ciascun campo modulo con il mouse (ovvero, attivare un evento onclick per ogni campo); facendo così per tutti i campi si attiva un modale (un popup) con un piccolo tipo di quiz "mostraci che non sei un robot".

document.querySelector('#username').click(); non sembra attivare una risposta adeguata (I get "undefined" in console); Niente sta succedendo rispetto a un vero clic del mouse sul campo.

Ho provato a inviare un evento change() per ogni campo, ma non cambia la situazione.

La mia domanda

Come superare i 2 problemi dei valori non riconosciuti e la necessità di cliccare su ogni campo e come posso superarlo con JavaScript vanigliato?

    
posta user9303970 18.06.2018 - 09:42
fonte

1 risposta

3

I tried to dispatch a change() event per each field but it doesn't change the situation.

Penso che il problema sia in effetti il fatto che il JavaScript nella pagina si aspetti un evento. Se inserisci testo normalmente, attiverete keydown , input e altri eventi. Ognuno di questi eventi può copiare il valore del campo di testo in qualche variabile JavaScript. Se cambi il valore del campo di testo ma non attiverai l'evento, il JavaScript non noterà la modifica.

Ispeziona il campo di immissione con gli strumenti debugger nel browser e elenca gli eventi associati . Questo ti darà un indizio su quale evento usare. Quindi, attiva questo evento in questo modo:

element.dispatchEvent(new Event("input"));
    
risposta data 18.06.2018 - 10:14
fonte

Leggi altre domande sui tag