Weet iemand van jullie wat een spam-bot eigenlijk "ziet"?
Een voorbeeld ... ik zet in een formulier een selectbox met als label "niet aanvinken" en vervolgens haal ik met javascript die selectbox en label weer weg ... ziet die spam-bot die selectbox en label dan wel of niet?
Het ligt er maar net aan. Als het een eenvoudige HTML reader is ziet hij de originele HTML. Wanneer hij ook javascript uit kan voeren wordt het al wat spannender. Zie bijvoorbeeld PhantomJS.
Ik vermoed dat je me niet helemaal goed hebt begrepen. Volgens mij heb jij het over spam-detectie. Ik bedoel echter een spam-bot die op je website komt en probeert een contactformulier in te vullen.
Het idee is om aan het contactformulier een selectbox of inputveld toe te voegen dat de gebruiker niet ziet, maar een spam-bot wel. Als die selectbox of inputveld dan is ingevuld, weet ik dat het om een spam-bot gaat en wordt het bericht niet verzonden.
De vraag is, wat is de beste manier om dat inputveld of selectbox te verbergen zodat een normale bezoeker die niet te zien krijgt, maar de spam-bot wel?
Volgens mij zijn er 2 manieren: verbergen via css of via javascript. Maar welke manier is beter, of moet ik ze beiden toepassen?
>> Ah, sorry Ozzie, nu zie ik hoe je de vraag bedoelt.
No problem :-)
>> Is de "no CAPTCHA reCAPTCHA" van Google misschien nog een alternatief?
Op zich wel, maar ik wil mensen die een vraag willen stellen niet lastigvallen met een captcha.
Wat ik nu dus wil doen is een inputveld maken dat ik verberg. Als het is ingevuld gaat het om een spam-bot. Maar hoe zal ik dat invulveld voor de 'normale' bezoeker verbergen? Via css en/of js?
Ja/nee. Niet ook in CSS als je hetzelfde element verbergt, want dan geef je in de CSS al een hint over iets dat je met JavaScript juist probeert te verhullen.
Stel, een spambot beheerst CSS en geen JavaScript. Als je dan hetzelfde element verbergt in CSS, is alleen dat al een hint dat je hetzelfde doet in JavaScript. Of anders gezegd: zelfs zonder ook maar iets JavaScript te begrijpen, weet de spambot dan al dat hij wordt misleid met dat element. De CSS en het JavaScript moeten idealiter daarom compleet gescheiden hun eigen ding doen.