WebSite X5Help Center

 
Michele G.
Michele G.
User

Sostituire il "captcha" che propone il programma.  it

Autore: Michele G.
Visite 418, Followers 2, Condiviso 0  

Buongiorno alla community.

Per una migliore leggibilità del captcha generato dal programma, vorrei cambiarlo con uno più facilmente leggibile come quello proposto da KolAsim in un altro post.

@KolAsim: ho inserito il tuo codice captcha in un template di prova utilizzando il tab "esperto" nelle proprietà della pagina ma il codice si visualizza all'esterno della homepage e non all'interno del modulo "contatti" (vedere allegato) anche se comunque funziona perfettamente.

Essendoci nel template una sola pagina (la home) non riesco a capire in quale altra proprietà di pagina si possa inserire.

La prova che ho fatto è visibile qui.

Grazie.

Postato il
15 RISPOSTE - 4 UTILI
Giancarlo B.
Giancarlo B.
User

Ciao Michele, non ho seguito tutto il discorso, comunque guardando il tuo link forse il codice lo hai inserito nella sezione sbagliata, non ho il codice per testarlo ma prova ad inserirlo in un oggetto HTML.

Secondo, non so se hai provato, ma hai pensato al qcaptcha di google?

Ciao

Leggi di più
Postato il da Giancarlo B.
Giancarlo B.
Giancarlo B.
User

come alternativa vedi se ti è utile questo, ciao

Leggi di più
Postato il da Giancarlo B.
 ‪ KolAsim ‪ ‪
 ‪ KolAsim ‪ ‪
Moderator
Utente del mese IT
Michele G.
... ... ... @KolAsim: ho inserito il tuo codice captcha in un template di prova utilizzando il tab "esperto" nelle proprietà della pagina ma il codice si visualizza all'esterno della homepage e non all'interno del modulo "contatti" (vedere allegato) anche se comunque funziona perfettamente.... ... ... 
  Ciao, … come promesso sono tornato nel tuo nuovo topic personale...
… Ho visto la tua pagina: avevi fatto tutto bene, solo che la struttura non combacia con il mio codice...
… adesso ho appena rivisto il codice per renderlo più facilmente fruibile, conglobando tutte le ricorrenze diverse in un’unica routine, con una sola variabile da dichiarare in modo semplice, una sola volta all’inizio del codice.
… Quello che devi fare tu, che richiede un minimo di praticità e attenzione, consiste nell’individuare l’ID del form mail da dichiarare. …per la tua pagina in questione si tratta di quello nel corpo della pagina, che attualmente ha questo ID(*):
#imObjectForm_7_form
… Il codice, così com’è, non è adatto per un mail-form nell’header, perché quest’ultimo ha una struttura fissa e non è contemplato nel mio attuale codice, che ho sviluppato sei-sette anni fa. Quindi il form nell’header puoi lasciarlo per altri scopi, se ti interessa, ma non verrà considerato dal mio codice...
… Quello che devi fare adesso è eliminare tutto il mio codice extra da dove lo avevi inserito precedentemente...
… Il mio nuovo codice va inserito in:
>> Passo 3 > Proprietà della pagina > Esperto > Codice personalizzato > terza opzione > Prima della chiusura del tag /head...
...(...In alternativa, se lo ritieni più comodo, puoi incollarlo in un oggetto Codice HTML, anche di 1 px, nella stessa pagina che contiene il form...)...
… Nel codice puoi personalizzare facilmente l’ID nella prima variabile dichiarata, ben visibile; se vuoi, puoi anche modificare l’immagine di contrasto e l’icona per il reload, entrambe facilmente individuabili nel codice.
… Queste immagini attualmente hanno un URL assoluto prelevato da una fonte online…
... Se le scarichi e le alleghi al progetto, utilizzando poi un URL relativo, sarebbe ancora meglio, ed in questo caso se vuoi chiarimenti, avvisami...
… Come al solito, il codice si applicherà con un semplice copia-incolla nel punto indicato…
… seguirà il codice …
.
.

Leggi di più
Postato il da  ‪ KolAsim ‪ ‪
 ‪ KolAsim ‪ ‪
 ‪ KolAsim ‪ ‪
Moderator
Utente del mese IT

... + + ... (*) ... si rileva con il destro del mouse > ispeziona:

.

Leggi di più
Postato il da  ‪ KolAsim ‪ ‪
 ‪ KolAsim ‪ ‪
 ‪ KolAsim ‪ ‪
Moderator
Utente del mese IT

... ecco il codice, ... nulla da invidiare ai metodi noti, concetto semplice, in chiaro e non assorbe risorse, meno di 5KB; ...se servono chiarimenti, avvisami ... ciao e buon lavoro:

<script>
/** captcha extra x WSx5 by KolAsim **/
$(window).on("load", function() { /*K*/
const contenitoreK = "#imObjectForm_7_form"; /* ID del modulo FORM-MAIL*/
/*--K--*/
const invioOrigK = contenitoreK + ' input[type="button"]'; /* ID pulsante INVIO del modulo */ /*--K--*/ const style = ` <style> ${invioOrigK} { display: none; } #captchaWrapper{text-align:center;} .inline { position:relative ; font-size:32px;padding:0px} .inline img:hover { rotate: 90deg; } .inline img:active { transform: scale(0.9); filter: drop-shadow(0 0 3px black); transition: filter 0s; rotate: 180deg; } #submit { width:150px; font-size:24px; } #btn { width:150px; font-size:24px; color: aqua; background-color: brown; } #sfondo { position:relative; width:200px; height:60px; margin-left:50%; left:-100px; overflow:hidden; text-align:center; } #contenitore { position:absolute; top:0px; display:flex; width:200px; height:55px; background-repeat:no-repeat; background-size:cover; background-position:center center; } #contenitoreIMG { position:relative; top:-75px; border: 1px solid #333; width:200px; height:200px;
/*--K--*/
background-image: url("https://cdn.pixabay.com/photo/2016/05/27/09/18/background-1419306_640.jpg");
/*--K--*/
background-repeat:no-repeat; background-size:200px 200px; background-position:center center; filter: blur(1px); } .box { width:50px; height:50px; display:flex; align-items:center; justify-content:center; font-size:50px; text-shadow: -2px -2px 5px white, 2px 2px 5px black; font-weight:bold; font-family:times; } #fakeRecaptcha { margin:auto; width:260px; border:1px solid #ccc; padding:10px; font-family:Arial; background:#f9f9f9; margin-bottomXX:10px; } #recaptchaBox { align-items:center; gap:10px; } #checkRobot { width:20px; height:20px; } #loadingBox { margin-top:10px; font-size:14px; color:#555; display:none; } </style> `; $("head").append(style); /*--K--*/ const html = ` <div id="captchaWrapper"> <div id="fakeRecaptcha"> <div id="recaptchaBox"> <input type="checkbox" id="checkRobot"> <label for="checkRobot">Non sono un robot</label> </div> <p id="key"></p> <div id="sfondo"> <div id="contenitoreIMG"></div> <div id="contenitore"></div> </div> <div id="user-input" class="inline"> <input type="text" id="submit" placeholder="Captcha" /> </div> <div class="inline">
<!-- >>> -->
<img class="reloadK" src="https://www.iconpacks.net/icons/2/free-icon-convert-3215.png" title="Reload Captcha">
<!-- <<< -->
</div> <input type="button" id="btn" value="INVIO" /> <div id="loadingBox">Verifica in corso...</div> </div> </div> `; $(contenitoreK).parent().append(html); /*--K--*/ let uniquechar = ""; let captchaAttivo = false; function generate() { $("#contenitore").html(""); $(".inline").fadeOut(300).fadeIn(300); $("#submit").val(""); uniquechar = ""; const chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; for (let i = 0; i < 4; i++) { uniquechar += chars.charAt(Math.floor(Math.random() * chars.length)); } $("#contenitore").attr("title", uniquechar); setTimeout(() => { uniquechar.split("").forEach(c => { $("#contenitore").append(`<div class="box">${c}</div>`); }); const colori = ["Red","Orange","Yellow","Green","Blue","Violet","Indigo"]; $(".box").each(function () { $(this).css({ transform: `rotate(${Math.random()*60-30}deg)`, color: colori[Math.floor(Math.random()*colori.length)] }); }); $("#contenitoreIMG").css("transform", `rotate(${Math.random()*360}deg)`); }, 1000); } function verifica() { if (!captchaAttivo) { $("#key").html("Conferma prima di non essere un robot"); return; } if ($("#submit").val() === uniquechar) { $("#key").html("Captcha accettato"); $( invioOrigK).click(); } else { $("#key").html("Captcha NON accettato!"); } } /*--K--*/ $(document).on("click", "#btn, #verifica", verifica); $(document).on("click", ".reloadK", generate); $(document).on("change", "#checkRobot", function () { if (this.checked) { $("#loadingBox").show().text("Verifica in corso..."); setTimeout(() => { $("#loadingBox").text("Verifica completata ✔"); captchaAttivo = true; generate(); }, 1200); } else { captchaAttivo = false; $("#loadingBox").hide(); $("#contenitore").html(""); } }); /*--K--*/ $(document).on("keydown", "form", function (e) { if (e.key === "Enter") { e.preventDefault(); return false; } }); /*--K--*/ setTimeout (function(){ $(".inline img").click() },500); /**K**/ });
</script>  

-------------------------

.

Leggi di più
Postato il da  ‪ KolAsim ‪ ‪
Roberto M.
Roberto M.
User

Negli ultimi giorni ho visto diversi utenti condividere soluzioni CAPTCHA personalizzate per WebSite X5. Sono tutti lavori interessanti, ognuno con il proprio stile e approccio, e questo è sicuramente un valore per la community.

Detto questo, ci tengo a fare una riflessione tecnica generale, perché molti codici – pur funzionando visivamente – condividono alcune caratteristiche comuni:

Punti positivi ricorrenti che ho notato:

  • il captcha si vede e funziona graficamente
  • la generazione casuale è corretta
  • l’integrazione con WSX5 è fatta bene
  • il pulsante di invio viene gestito correttamente
  • gli effetti grafici sono piacevoli

Fin qui tutto ok.

Ma c’è un punto fondamentale: i CAPTCHA lato client potrebbero presentare dei problemi.

E questo comporta inevitabilmente alcuni limiti:

  • il codice può essere letto da un bot
  • può essere bypassato
  • può essere forzato
  • non offre una protezione reale

Un bot, per esempio, può leggere il contenuto del DOM e ottenere il codice senza alcuna difficoltà. Questo non dipende da chi scrive il codice: è proprio un limite strutturale del lato client. Un esempio?

document.querySelector("#contenitore").title ....

E ha già il codice. Fine della sicurezza.

Detto questo, ci sono differenze importanti tra i vari approcci.

Alcuni codici tendono a mescolare:

  • CSS + HTML + JS in un’unica stringa
  • blocchi da decine di KB difficili da manutenere
  • animazioni non standard
  • click simulati
  • pulsanti nascosti tramite CSS iniettato via JS
  • agganci al form un po’ “creativi”

Altri invece presentano:

  • CSS ordinato e leggibile
  • HTML pulito e strutturato
  • JS modulare
  • nessun hack strano
  • nessun comportamento imprevedibile
  • gestione del pulsante tramite classi CSS
  • approccio più stabile e professionale

La differenza si vede, anche se entrambi restano comunque CAPTCHA lato client.

Si può fare di più? Sì.

Per chi vuole una protezione più forte, esiste un approccio più robusto:

✔ Honeypot invisibile + Token criptato

Questo sistema:

  • non espone il codice reale nel DOM
  • non permette ai bot di leggerlo
  • non può essere bypassato con un semplice script
  • aggiunge un livello di sicurezza reale
  • resta compatibile con WebSite X5
  • non richiede server esterni o servizi terzi
  • codificato in base64 o anche hash SHA‑256 invece del base
  • non riconoscibile
  • non interpretabile senza conoscerne la logica

Non è un CAPTCHA “militare”, ma è decisamente più rompiscatole di altri.

Conclusione

Tutte le soluzioni condivise finora sono utili e mostrano creatività. Ma è importante distinguere tra:

  • captcha visivi (funzionano, ma sono aggirabili)
  • captcha strutturati (più puliti e manutenibili)
  • captcha con protezione rinforzata (honeypot + token criptato)

Il confronto tra i vari metodi ci ha incuriosito e ci ha spinto a lavorare su una soluzione più robusta, integrabile anche nei codici già esistenti. Stiamo sviluppando un sistema basato su tecniche come honeypot invisibile, token criptato e temporizzazione dei tentativi con blocco automatico, che riduce drasticamente la possibilità di bypass da parte dei bot e aumenta la sicurezza complessiva del modulo.

Il codice è già disponibile gratuitamente nella nostra pagina contatti tramite ispezione della pagina raggiungibile dal nostro profilo ma attenzione: ne il nostro ne il codice di altri utenti può fare qualcosa contro un bot programmato apposta per un singolo sito. 

Questo tipo di bot:

  • viene scritto da uno sviluppatore
  • analizza il vostro JavaScript
  • capisce come funziona il token
  • capisce come funziona l’honeypot
  • replica la logica del CAPTCHA
  • invia la risposta corretta

È un attacco mirato con una grossa perdita di tempo e risorse per programmarlo. È come se qualcuno studiasse il tuo sito per ore e scrivesse un software su misura per superare il tuo CAPTCHA.

Ne vale la pena? Io penso di no! 

Purtroppo X5 non ha BackEnd ma se lo avesse avuto.....

  • il codice reale sarebbe sul server
  • il bot non potrebbe leggerlo
  • non potrebbe replicarlo
  • non potrebbe bypassarlo
  • non potrebbe simulare la verifica
  • non potrebbe ignorare il limite tentativi
  • non potrebbe ignorare il blocco IP

In pratica: un altro pianeta.

Leggi di più
Postato il da Roberto M.
Roberto M.
Roberto M.
User

Se decidete di utilizzarlo dovete modificare il vostro ID del pulsante SEND del modulo contatti e inserirlo al posto di quello che trovate sul codice originale esattamente come dice la guida di Giancarlo WEB che vi consiglio di vedere. 

Leggi di più
Postato il da Roberto M.
Roberto M.
Roberto M.
User

Vi viene così ▼

Leggi di più
Postato il da Roberto M.
Michele G.
Michele G.
User
Autore

Salve a tutti,

mi scuso per il lungo silenzio ma ho avuto grossi problemi di salute e adesso, spero, in via di guarigione.

A titolo informativo, per i frequentatori dell’Help Center, ho provato sia codice di KolAsim che quello di Giancarlo e sono perfettamente funzionanti e ringrazio anche Roberto per la sua precisa e attenta disamina sull'argomento.

Saluti.

Leggi di più
Postato il da Michele G.
Giancarlo B.
Giancarlo B.
User

Di nulla Michele figurati, auguri di una pronta e veloce ripresa.

Leggi di più
Postato il da Giancarlo B.
 ‪ KolAsim ‪ ‪
 ‪ KolAsim ‪ ‪
Moderator
Utente del mese IT
Michele G.
Salve a tutti, mi scuso per il lungo silenzio ma ho avuto grossi problemi di salute e adesso, spero, in via di guarigione. ... ... ... 

Ciao Michele, ...grazie per il riscontro; ... ...più che altro mi dispiace per quel che hai dovuto e che stai affrontando e con gli auguri di una pronta guarigione...

... però visto che ci sono colgo anche l’occasione per fare una precisazione...
.... nel codice condiviso in questo topic ho notato una forte somiglianza con una soluzione che avevo pubblicato tempo fa sul forum (parliamo di diversi anni fa, come idea di partenza per un captcha extra su WebSite X5, unico).
… posso giustificare il prendere spunto o migliorare codice esistente, ma avrei apprezzato un piccolo riferimento alla fonte o almeno evitare di presentarlo come completamente originale (v.Flash of Genius)...
... per completezza, avevo anche fatto confrontare le due versioni a due motori AI: il risultato simile è che il codice recente risulta chiaramente un’evoluzione di quello iniziale...
... tutto qui, giusto per correttezza e trasparenza verso chi legge...

.

ciao

.

Leggi di più
Postato il da  ‪ KolAsim ‪ ‪
Giancarlo B.
Giancarlo B.
User

Premetto che questo non mi sembra il luogo né il contesto adatto per polemizzare, e non ho alcuna intenzione di farlo per questioni di questo tipo, che ritengo francamente marginali.

Non ho mai presentato come esclusivamente mie idee o contenuti che non lo fossero. Quando utilizzo materiale altrui, cito sempre la fonte, ed è una prassi che ho sempre seguito con coerenza.

Per quanto riguarda lo script in questione, definirlo “esclusivo” non è corretto: non si tratta di qualcosa di unico né di particolarmente complesso. È piuttosto uno script abbastanza standard, con alcune personalizzazioni.

Un paragone semplice può essere quello della cucina: gli ingredienti di base sono gli stessi per tutti, ma il risultato finale può variare in base a come vengono combinati.

Spero che questo chiarisca la mia posizione in modo completo.

Leggi di più
Postato il da Giancarlo B.
Roberto M.
Roberto M.
User

Carissimo Giancarlo devi sapere una cosa anzi dovete sapere una cosa TUTTI.

Se tu dai ad un’AI:

  • due codici lunghi
  • entrambi contengono la parola “captcha”
  • entrambi generano caratteri random
  • entrambi hanno un pulsante
  • entrambi usano jQuery

…l’AI di default risponde:

“Sì, sono simili perché fanno la stessa cosa.”

Perché? Perché l’AI ragiona a livello concettuale, non a livello di struttura del codice.

Per lei:

  • generare caratteri random = simile
  • mostrare un codice = simile
  • verificare un input = simile

È come chiedere:

“Una Fiat Panda e una Ferrari sono simili?”

Un’AI ingenua risponde:

“Sì, entrambe hanno 4 ruote, un volante e un motore.”

Ma tecnicamente NON sono simili. Pariment dicasi come nel caso di specie:TECNICAMENTE, I TRE CODICI NON SONO SIMILI

E questo è un fatto, non un’opinione.

Il primo codice postato → è un codice artistico, caotico, pieno di effetti

Il secondo codice postato è un → codice pulito, standard, lineare

La tecnica suggerita nel terzo esempio è → un codice avanzato, con sicurezza, blocchi, SVG, honeypot, pannello tema 

TUTTI GLI ESEMPI NON CONDIVIDONO:

  • struttura
  • logica
  • architettura
  • funzioni
  • approccio
  • stile
  • obiettivi

Condividono solo il concetto universale di CAPTCHA, che esiste da 20 anni.

Rimango convinto che quando si interroga AI bisogna saper cosa dire:

Ritengo personalmente che se si fosse chiesto :

“Questi codici sono strutturalmente simili?” “Uno deriva dall’altro?” “Hanno la stessa logica interna?” “Condividono parti di codice?”

L’AI avrebbe risposto:

NO, sono completamente diversi.

Confermato anche dopo una attenta analisi comparativa approfondita dei tre script, effettuata sia manualmente sia tramite strumenti di diff strutturale; non esiste alcuna somiglianza architetturale, logica o implementativa tra i codici presentati.

È importante distinguere tra: 1) somiglianza concettuale (inevitabile in qualunque CAPTCHA) 2) somiglianza strutturale del codice (che qui non è presente).

1. Struttura e architettura del codice

  • il primo script utilizza una struttura altamente personalizzata, con HTML generato dinamicamente, CSS iniettato via JavaScript, numerose animazioni, effetti grafici e un approccio “artistico” non standard.

  • il secondo script segue un modello classico: HTML statico, CSS pulito, generazione di caratteri random e verifica diretta. È un’implementazione tipica dei CAPTCHA alfanumerici.

  • Il terzo script introduce invece un’architettura avanzata: limitazione tentativi, blocco temporaneo con timer, honeypot, distorsione SVG, token cifrato, pannello tema con variabili CSS, localStorage, e una logica di sicurezza molto più articolata.

2. Logica interna e flusso di esecuzione

Le tre implementazioni adottano flussi completamente diversi:

  • il primo si basa la logica su eventi grafici, animazioni e manipolazioni DOM complesse.

  • il secondo utilizza un flusso lineare: genera → mostra → verifica → sblocca.

  • Il terzo script implementa un flusso di sicurezza multilivello: genera → cifra → verifica → gestisce tentativi → applica blocco → aggiorna timer → personalizza tema.

3. Pattern di programmazione

  • il primo esempio usa un approccio “procedurale dinamico” con forte coupling tra stile e logica.

  • il secondo esempio usa un approccio modulare e leggibile, tipico dei CAPTCHA standard.

  • Il terzo script utilizza pattern moderni: separazione logica, funzioni pure, gestione stato, variabili CSS, SVG filters, localStorage.

4. Conclusione tecnica

A livello di concetto, tutti e tre gli script generano un codice e ne verificano l’inserimento: questo è comune a qualunque CAPTCHA alfanumerico.

A livello di codice, invece, non esiste alcuna derivazione, copia o evoluzione diretta tra gli script.

Le differenze sono così marcate da rendere impossibile una correlazione strutturale.

Per questo motivo, eventuali valutazioni basate su AI generiche possono aver rilevato similitudini concettuali (inevitabili), ma non esiste alcuna similitudine tecnica significativa tra le tre implementazioni.

Quindi non vi arrabbiate.wink

Leggi di più
Postato il da Roberto M.
Giancarlo B.
Giancarlo B.
User
Roberto M.
Quindi non vi arrabbiate.

Buongiorno Roberto, non sono affatto arrabbiato; mi sembrava solo corretto chiarire tutto qui. Ma arrabbiato per una cosa così da poco? Ma figurati!laughing

Leggi di più
Postato il da Giancarlo B.