it-swarm.com.de

Wie kann man verhindern, dass Roboter ein Formular automatisch ausfüllen?

Ich versuche einen ausreichend guten Anti-Spam-Mechanismus zu entwickeln, um automatisch generierte Eingaben zu verhindern. Ich habe diese Techniken wie Captcha gelesen, 1 + 1 =? Sachen funktionieren gut, aber sie stellen auch einen zusätzlichen Schritt dar, der die freie schnelle Verwendung der Anwendung behindert (ich suche nicht nach so etwas bitte).

Ich habe versucht, einige verborgene Felder in allen meinen Formularen festzulegen, mit display: none; Ich bin jedoch sicher, dass ein Skript so konfiguriert werden kann, dass es die Formularfeld-ID verfolgt und sie einfach nicht ausfüllt.

Kennen Sie eine gute Anti-Automatik-Formulierroboter-Methode? Gibt es etwas, das nahtlos mit der Verarbeitung von HTML UND/ODER-Servern möglich ist und (fast) kugelsicher ist? (ohne JS da könnte man es einfach deaktivieren).

Ich versuche, mich nicht auf Sitzungen zu verlassen (d. H. Zu zählen, wie oft eine Schaltfläche angeklickt wird, um Überlastungen zu vermeiden).

95
Gal

Anti-Spam ist eine einfach zu implementierende, aber nicht narrensichere Methode (insbesondere bei "spezifischen" Angriffen), um die Zeit zwischen dem Senden von Formularen und dem Laden der Seite zu überwachen.

Bots fordern eine Seite an, analysieren die Seite und senden das Formular ab. Das geht schnell.

Menschen geben eine URL ein, laden die Seite, warten, bis die Seite vollständig geladen ist, scrollen Sie nach unten, lesen Sie den Inhalt, entscheiden Sie, ob Sie das Formular kommentieren/ausfüllen, benötigen Sie Zeit, um das Formular auszufüllen, und senden Sie es ab.

Der Zeitunterschied kann subtil sein; Um diese Zeit ohne Cookies zu verfolgen, ist eine serverseitige Datenbank erforderlich. Dies kann Auswirkungen auf die Leistung haben.
Außerdem müssen Sie die Schwellwertzeit anpassen.

70
Pindatjuh

Ich finde tatsächlich, dass ein einfaches Honey Pot-Feld gut funktioniert. Die meisten Bots füllen jedes -Feld aus, das sie sehen, in der Hoffnung, die erforderlichen Feldprüfer zu umgehen.

http://haacked.com/archive/2007/09/11/honeypot-captcha.aspx

Wenn Sie ein Textfeld erstellen, es in Javascript ausblenden, dann sicherstellen, dass der Wert blank auf dem Server lautet, werden 99% der Roboter draußen ausgesondert und 99% Ihrer Benutzer keines verursacht Frustration überhaupt. Bei den verbleibenden 1%, bei denen Javascript deaktiviert ist, wird das Textfeld weiterhin angezeigt. Sie können jedoch eine Meldung wie "Dieses Feld leer lassen" für solche Fälle hinzufügen (falls Sie sich überhaupt für sie interessieren).

(Beachten Sie auch, dass wenn Sie style = "display: none") auf dem Feld, dann ist es für einen Roboter viel zu einfach, das zu sehen und das Feld zu verwerfen.

70
Ben Scheirman

Was wäre, wenn - der Bot überhaupt keine form findet? 

3 Beispiele:

1. Fügen Sie Ihr Formular mit AJAX ein

wenn Sie mit Benutzern mit JS in Ordnung sind und kein Formular anzeigen/senden können, können Sie sie jederzeit mit <noscript><p class="error">ERROR: The form could not be loaded. Please, re-enable JavaScript in your browser to fully enjoy our services.</p></noscript> benachrichtigen. Als,

  1. Erstellen Sie einen form.html und platzieren Sie Ihre form in einem <div id="formContainer">-Element. 
  2. Verwenden Sie in der Seite, auf der Sie das Formular aufrufen müssen, einen leeren <div id="dynamicForm"></div> und diese jQuery:

$("#dynamicForm").load("form.html #formContainer");

2. Erstellen Sie Ihr Formular vollständig mit JS

// THE FORM
var $form = $("<form/>", {
  appendTo : $("#formContainer"),
  class    : "myForm",
  submit   : AJAXSubmitForm
});

// EMAIL INPUT
$("<input/>",{
  name        : "Email", // Needed for serialization
  placeholder : "Your Email",
  appendTo    : $form,
  on          : {        // Yes, the jQuery's on() Method 
    input : function() {
      console.log( this.value );
    }
  }
});

// MESSAGE TEXTAREA
$("<textarea/>",{
  name        : "Message", // Needed for serialization
  placeholder : "Your message",
  appendTo    : $form
});

// SUBMIT BUTTON
$("<input/>",{
  type        : "submit",
  value       : "Send",
  name        : "submit",
  appendTo    : $form
});

function AJAXSubmitForm(event) {
  event.preventDefault(); // Prevent Default Form Submission
  // do AJAX instead:
  var serializedData = $(this).serialize();
  alert( serializedData );
  $.ajax({
    url: '/mail.php',
    type: "POST",
    data: serializedData,
    success: function (data) {
      // log the data sent back from PHP
      console.log( data );
    }
  });
}
.myForm input,
.myForm textarea{
  font: 14px/1 sans-serif;
  box-sizing: border-box;
  display:block;
  width:100%;
  padding: 8px;
  margin-bottom:12px;
}
.myForm textarea{
  resize: vertical;
  min-height: 120px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="formContainer"></div>

3. Bot-Köder Eingabe

bots wie (wirklich like) saucy Eingabeelemente wie:

<input
  type="text"
  name="email"
  id="email"
  placeholder="Your email"
  autocomplete="nope"
  tabindex="-1" />

sie geben gerne einen Wert ein, wie sie es tun [email protected]

als (nach der Verwendung des obigen HTML) verwenden Sie CSS wie folgt:

input[name=email]{ /* bait input */
    /*
         don't use display:none or visibility:hidden
         cause that will not fool the bot
    */
    position:absolute;
    left:-2000px;
}

nun, da Ihre Eingabe für den Benutzer nicht sichtbar ist, erwarten Sie in PHP, dass Ihr $_POST["email"]leer sein soll (ohne irgendeinen Wert)! Ansonsten senden Sie das Formular nicht ab. 

Jetzt müssen Sie nur noch eine weitere Eingabe wie <input name="sender" type="text" placeholder="Your email">after (!) Der Eingabe "bot-bait" für die tatsächliche E-Mail-Adresse des Benutzers erstellen.

Danksagungen:

Developer.Mozilla - Deaktivieren von Formularautovervollständigung
StackOverflow - Tabindex ignorieren

20
Roko C. Buljan

Was ich getan habe ist, ein verstecktes Feld zu verwenden, den Zeitstempel darauf zu setzen und ihn dann mit dem Zeitstempel auf dem Server zu vergleichen, der PHP verwendet.

Wenn es schneller als 15 Sekunden war (abhängig davon, wie groß oder klein Ihre Formulare sind), war das ein Bot.

Ich hoffe das hilft

16
adnhack

Um Spam praktisch auszuschließen, besteht ein sehr effektiver Weg darin, ein Textfeld mit Text wie "Entfernen Sie diesen Text zum Senden des Formulars!" und dieser Text muss entfernt werden, um das Formular abzusenden.

Wenn das Textfeld bei der Formularüberprüfung den ursprünglichen Text oder einen beliebigen zufälligen Text enthält, senden Sie das Formular nicht ab. Bots können Formularnamen lesen und automatisch Felder für Name und E-Mail-Adresse ausfüllen. Sie wissen jedoch nicht, ob sie tatsächlich Text aus einem bestimmten Feld entfernen müssen, um sie zu senden.

Ich habe diese Methode auf unserer Unternehmenswebsite implementiert und damit den Spam, den wir täglich bekamen, vollständig eliminiert. Es funktioniert wirklich!

15
HawleyTronics

Wie wäre es mit einem Eingabefeld für ein Textfeld, dessen Farbe dem Hintergrund entspricht, der leer bleiben muss Dadurch wird das Problem der Anzeige eines Bot-Lesers umgangen: Keine

11
Steve

http://recaptcha.net/

reCAPTCHA ist ein kostenloser Antibot-Service, der Bücher digitalisieren hilft

Es wurde von Google erworben (2009):

Siehe auch

8
Anantha Kumaran

Viele dieser Spam-Bots sind nur serverseitige Skripte, die das Web durchsuchen. Sie können viele von ihnen bekämpfen, indem Sie die Formularanforderung mit etwas Javascript vor dem Senden bearbeiten (dh, ein zusätzliches Feld basierend auf einer Clientvariablen festlegen). Dies ist keine vollständige Lösung und kann zu vielen Problemen führen (z. B. Benutzer ohne Javascript, auf mobilen Geräten usw.), kann jedoch Teil Ihres Angriffsplans sein.

Hier ist ein triviales Beispiel ...

<script>
function checkForm()
{
    // When a user submits the form, the secretField's value is changed
    $('input[name=secretField]').val('goodValueEqualsGoodClient');

    return true;
}
</script>

<form id="cheese" onsubmit="checkForm">
<input type="text" name="burger">

<!-- Check that this value isn't the default value in your php script -->
<input type="hidden" name="secretField" value="badValueEqualsBadClient">

<input type="submit">
</form>

Irgendwo in deinem PHP-Skript ...

<?php

if ($_REQUEST['secretField'] != 'goodValueEqualsGoodClient')
{
    die('you are a bad client, go away pls.');
}

?>

Außerdem sind Captchas großartig und wirklich die beste Verteidigung gegen Spam.

6
John Himmelman

Ich bin überrascht, dass noch niemand diese Methode erwähnt hatte:

  • Fügen Sie auf Ihrer Seite ein kleines verstecktes Bild hinzu.
  • Platzieren Sie beim Servieren dieses Bildes einen Cookie.
  • Überprüfen Sie bei der Verarbeitung der Formularübermittlung das Cookie.


Pros:

  • bequem für Anwender und Entwickler
  • scheint zuverlässig zu sein
  • kein JavaScript

Nachteile:

  • fügt eine HTTP-Anfrage hinzu
  • setzt voraus, dass Cookies auf dem Client aktiviert sind


Diese Methode wird beispielsweise vom WordPress-Plugin Cookies for Comments verwendet.

4
Gras Double

Mit dem Aufkommen von Headless-Browsern (wie Phantomjs), die alles nachahmen können, kann Sie können nicht Folgendes annehmen:

  • spam-Bots verwenden kein Javascript,
  • sie können Mausereignisse verfolgen, um Bot zu erkennen,
  • sie werden nicht sehen, dass ein Feld visuell verborgen ist,
  • sie werden nicht eine bestimmte Zeit warten, bevor sie abschicken.

Wenn das wahr war, ist es nicht mehr wahr.

Wenn Sie keine benutzerfreundliche Lösung haben möchten, geben Sie ihnen einfach ein schönes "Ich bin ein Spammer" Senden-Button :

 <input type="submit" name="ignore" value="I am a spammer!" />
 <input type="image" name="accept" value="submit.png" alt="I am not a spammer" />

Natürlich können Sie mit zwei input[type=image]-Tasten spielen, indem Sie die Reihenfolge nach jedem Laden ändern, die Textalternativen, den Inhalt der Bilder (und deren Größe) oder die name der Tasten. was einige Serverarbeit erfordert.

 <input type="image" name="random125454548" value="random125454548.png"
      alt="I perfectly understand that clicking on this link will send the
      e-mail to the expected person" />
 <input type="image" name="random125452548" value="random125452548.png"
      alt="I really want to cancel the submission of this form" />

Aus Gründen der Barrierefreiheit müssen Sie eine korrekte Textalternative eingeben, aber ich denke, ein langer Satz ist für Benutzer von Bildschirmlesern besser, als als Bot betrachtet zu werden.

3
Adam

Eine sehr einfache Möglichkeit besteht darin, einige Felder wie <textarea style="display:none;" name="input"></textarea> anzugeben und alle Antworten zu löschen, die diese Angaben enthalten.

Ein anderer Ansatz besteht darin, das gesamte Formular (oder nur die Feldnamen) mithilfe von Javascript zu generieren. wenige Bots können es ausführen.

Gegen Live-"Bots" aus Taiwan oder Indien, die 0,03 USD pro Link erhalten, wird es nicht viel sein, und so verdienen sie ihren Lebensunterhalt.

2
SF.

Ich habe einen einfachen Ansatz, um Spammer zu stoppen, der zumindest in meiner Erfahrung zu 100% wirksam ist und die Verwendung von reCAPTCHA und ähnlichen Ansätzen vermeidet. Nachdem ich diesen Ansatz implementiert hatte, bin ich in den letzten 5 Jahren von nahezu 100 Spam-Mails pro Tag in einem der HTML-Formulare meiner Websites auf Null gegangen.

Es nutzt die E-Mail-ALIAS-Funktionen der meisten HTML-Formularverwaltungsskripts (ich verwende FormMail.pl) zusammen mit einem "Code" für die Übermittlung von Grafiken, der leicht in den einfachsten Grafikprogrammen erstellt werden kann. Eine solche Grafik enthält den Code M19P17nH und die Aufforderung "Bitte geben Sie den Code links" ein. 

Dieses spezielle Beispiel verwendet eine zufällige Folge von Buchstaben und Zahlen, aber ich neige dazu, nicht-englische Versionen von Wörtern zu verwenden, die meinen Besuchern vertraut sind (z. B. "pnofrtay"). Beachten Sie, dass die Eingabeaufforderung für das Formularfeld in die Grafik integriert ist und nicht im Formular angezeigt wird. Für einen Roboter bietet dieses Formfeld somit keinen Hinweis auf seinen Zweck.

Der einzige echte Trick besteht darin, sicherzustellen, dass Ihr Formular-HTML diesen Code der "Empfänger" -Variable zuordnet. Stellen Sie dann in Ihrem E-Mail-Programm sicher, dass jeder von Ihnen verwendete Code als E-Mail-Alias ​​festgelegt ist, der auf die E-Mail-Adressen verweist, die Sie verwenden möchten. Da auf dem Formular keine Aufforderung zum Lesen für einen Roboter und keine E-Mail-Adressen vorhanden ist, hat er keine Ahnung, was er in das leere Formularfeld eintragen soll. Wenn nichts in das Formularfeld oder etwas anderes als akzeptable Codes eingefügt wird, schlägt die Formularübermittlung mit dem Fehler "Ungültiger Empfänger" fehl. Sie können eine andere Grafik in verschiedenen Formularen verwenden, obwohl dies meiner Erfahrung nach nicht wirklich notwendig ist. 

Natürlich kann ein Mensch dieses Problem im Nu lösen, ohne all die Probleme, die mit reCAPTCHA und ähnlichen, eleganteren Schemata verbunden sind. Wenn ein menschlicher Spammer auf den Empfängerfehler reagiert und den Bildcode in den Roboter einprogrammiert, können Sie ihn leicht ändern, sobald Sie feststellen, dass der Roboter für die Reaktion hartcodiert wurde. In fünf Jahren, in denen ich diesen Ansatz verwendet habe, hatte ich noch nie einen Spam von einem der Formulare, auf dem ich ihn verwende, oder ich habe jemals eine Beschwerde von einem menschlichen Benutzer des Formulars erhalten. Ich bin sicher, dass dies mit der OCR-Funktion des Roboters unterbunden werden könnte, aber ich habe es noch nie auf einer meiner Websites gemacht, die HTML-Formulare verwenden. Ich habe auch "Spam-Fallen" (versteckter "come here hither" -Html-Code, der auf meine Anti-Spam-Richtlinien verweist) mit gutem Erfolg verwendet, aber sie waren nur etwa 90% effektiv.

2
user2643367

Ich denke hier an viele Dinge:

  1. verwenden von JS (obwohl Sie es nicht möchten), um Mausbewegung, Tastendruck und Mausklick zu verfolgen
  2. abrufen der Referral-URL (die in diesem Fall eine Domain aus derselben Domäne sein muss) ... Der normale Benutzer muss vor dem Erreichen des Kontaktformulars durch die Website navigieren: PHP: Wie bekomme ich die Referrer-URL?
  3. verwenden einer $ _SESSION-Variablen zum Abrufen der IP und Überprüfen des Formulars anhand dieser Liste von IPs
  4. Füllen Sie ein Textfeld mit Dummy-Text aus, den Sie auf Serverseite überprüfen können, ob er überschrieben wurde
  5. Überprüfen Sie die Browserversion: http://chrisschuld.com/projects/browser-php-detecting-a-users-browser-from-php.html ... Es ist klar, dass ein Bot keinen Browser verwendet aber nur ein Skript.
  6. Verwenden Sie AJAX, um die Felder einzeln zu senden und den Zeitunterschied zwischen den Einsendungen zu prüfen
  7. Verwenden Sie eine gefälschte Seite vor/nach dem Formular, um eine weitere Eingabe zu senden
1
valicu2000

Ich habe meinen Formularen eine Zeitprüfung hinzugefügt. Die Formulare werden nicht eingereicht, wenn sie in weniger als 3 Sekunden ausgefüllt werden. Dies hat insbesondere für die langen Formulare für mich funktioniert. Hier ist die Formularüberprüfungsfunktion, die ich über die Schaltfläche "Senden" anrufe 

function formCheck(){
var timeStart; 
var timediff;

$("input").bind('click keyup', function () {
    timeStart = new Date().getTime();          
}); 
 timediff= Math.round((new Date().getTime() - timeStart)/1000);

  if(timediff < 3) { 
    //throw a warning or don't submit the form 
  } 
  else submit(); // some submit function

}
0
Harika Y

Mit immer komplexeren Spam-Bots und Techniken wie automatisierten Browsern wird es schwieriger, die Quelle von Spam zu ermitteln. Aber ob es sich um Software handelt, um Spam oder Spam, ist Spam aufgrund seines Inhalts. Ich denke, die beste Lösung ist, die veröffentlichten Inhalte über eine Anti-Spam-API wie Cleantalk oder Akismet auszuführen. Es ist relativ günstig und effektiv und stört den Benutzer nicht. Sie können die Formularübermittlungszeiten und die anderen traditionellen Überprüfungen auf weniger komplexe Bots überprüfen, bevor Sie die API aufrufen.

0
nmit026

die einfachste Möglichkeit, dies zu tun, besteht darin, ein Feld mit einem Wert anzugeben und den Benutzer zu bitten, den Text in diesem Feld zu entfernen. da Bots sie nur füllen. Wenn das Feld nicht leer ist, bedeutet dies, dass der Benutzer kein Benutzer ist und nicht gebucht wird. Es ist der gleiche Zweck eines Captcha-Codes.

0
matthew

Es ist nur eine Idee, ich habe das in meiner Anwendung verwendet und funktioniert gut

sie können einen Cookie für die Mausbewegung mit Javascript oder Jquery erstellen und auf der Serverseite prüfen, ob ein Cookie vorhanden ist, da nur Menschen Maus haben. Cookies können nur von ihnen erstellt werden. Der Cookie kann ein Zeitstempel oder ein Token sein, der validiert werden kann

0
h0mayun

Eigentlich die Falle mit display: none wirkt wie ein Zauber. Es ist hilfreich, die CSS-Deklaration in eine Datei zu verschieben, die globale Stylesheets enthält, wodurch auch Spam-Bots dazu gezwungen werden müssen, diese zu laden (eine direkte style = "display: none;" - Deklaration könnte wahrscheinlich von einem Spam-Bot interpretiert werden (ebenso wie eine lokale Deklaration im Dokument selbst).

In Kombination mit anderen Gegenmaßnahmen sollte es für Spam-Bots überflüssig sein, ihren Müll zu entladen (ich habe ein Gästebuch, das mit einer Vielzahl von Maßnahmen gesichert ist, und bisher haben sie meine primären Fallen gefunden - sollte jedoch jeder Bot diese dort umgehen sind andere bereit zum auslösen).

Was ich verwende, ist eine Kombination aus gefälschten Formularfeldern (auch als ungültige Felder bezeichnet, falls ein Browser verwendet wird, der CSS im Allgemeinen nicht handhabt oder Anzeige: keine im Besonderen) Format der Eingabe gültig?), Zeitstempel (zu schnelle und zu langsame Übermittlung), MySQL (zur Implementierung von Blacklists basierend auf E-Mail- und IP-Adressen sowie Flood-Filter), DNSBLs (z. B. die SBL + XBL von Spamhaus) , Textanalyse (z. B. Wörter, die ein starker Hinweis auf Spam sind) und Bestätigungs-E-Mails (um festzustellen, ob die angegebene E-Mail-Adresse gültig ist oder nicht).

Ein Hinweis zu Bestätigungsmails: Dieser Schritt ist völlig optional. Wenn Sie sich jedoch für die Implementierung entscheiden, muss dieser Prozess so einfach wie möglich sein (dh, es muss sich auf einen in der E-Mail enthaltenen Link klicken) ) und veranlassen, dass die betreffende E-Mail-Adresse für einen bestimmten Zeitraum auf die Positivliste gesetzt wird, so dass spätere Überprüfungen vermieden werden, falls der Benutzer zusätzliche Beiträge erstellen möchte.

0
Robidu

Anstatt zufällige Buchstaben und Zahlen zu verwenden, wie dies bei vielen Websites der Fall ist, können auch Bilder von erkennbaren Objekten gemacht werden. Bitten Sie den Benutzer, entweder die Farbe des Bildes oder das Objekt selbst einzugeben.

Alles in allem wird jede Lösung ihre Vor- und Nachteile haben. Sie müssen einen glücklichen Mittelwert zwischen zu harten Benutzern finden, um den Antispam-Mechanismus zu überwinden, und der Anzahl der Spam-Bots, die durchkommen können.

0
Brian

Roboter können kein JavaScript ausführen. Sie können also beispielsweise ein verstecktes Element mit JavaScript in die Seite einfügen und dann das Vorhandensein des Elements vor dem Absenden des Formulars erkennen. Beachten Sie jedoch, dass bei einigen Benutzern JavaScript deaktiviert ist

Ansonsten denke ich, dass Sie gezwungen sein werden, eine Form des Kundennachweises für "Menschlichkeit" zu verwenden.

0
Nick Allen

Es gibt ein Tutorial dazu auf der JQuery-Site. Obwohl es sich um JQuery handelt, ist die Idee unabhängig vom Framework.

Wenn JavaScript nicht verfügbar ist, müssen Sie möglicherweise auf den CAPTCHA-Ansatz zurückgreifen.

0
Pool
  1. Ich benutze eine Methode, bei der es ein verstecktes Textfeld gibt. Da Bots die Website analysieren, füllen sie sie wahrscheinlich aus. Dann überprüfe ich, ob es leer ist, wenn es keine Website gibt.

  2. E-Mail-Bestätigung hinzufügen Der Benutzer erhält eine E-Mail und muss auf einen Link klicken. Ansonsten verwerfen Sie den Beitrag in einiger Zeit.

0
cookie

Wenn das Formular nur ein "Kontaktformular" ist, benötigen Sie meiner Meinung nach keine besonderen Maßnahmen. Spam wird anständig von Webmail-Diensten gefiltert (Sie können Webform-Anforderungen über Serverscripts nachverfolgen, um zu sehen, welche E-Mails effektiv ankommen. Natürlich gehe ich davon aus, dass Sie über einen guten Webmail-Dienst verfügen: D)

Übrigens versuche ich, mich nicht auf Sitzungen zu verlassen (z. B. wie Viele Male auf eine Schaltfläche geklickt wird, um Überlastungen zu vermeiden).

Ich finde es nicht gut. Tatsächlich möchte ich E-Mails von Benutzern erhalten, die bestimmte Aktionen ausführen, da dies die Benutzer sind, die mich interessieren (z. B. Benutzer, die die "Lebenslauf" -Seite angesehen und den richtigen Kontakt verwendet haben bilden). Wenn der Benutzer etwas tut, was ich möchte, fange ich an, seine Sitzung zu verfolgen und ein Cookie zu setzen (ich setze immer ein Session-Cookie ein, aber wenn ich keine Sitzung starte, ist es nur ein gefälschtes Cookie, um zu glauben, dass der Benutzer eine Sitzung hat). Wenn der Benutzer etwas Unerwünschtes tut, kümmere ich mich nicht um eine Sitzung für ihn, also keine Überlastung usw.

Es wäre auch schön für mich, dass Werbedienstleistungen eine Art API bieten (möglicherweise bereits vorhanden), um zu sehen, ob der Nutzer die Anzeige "angeschaut" hat. Wahrscheinlich sind Nutzer, die auf Anzeigen schauen, echte Nutzer, aber wenn nicht echt gut zumindest bekommst du sowieso 1 blick so nichts verloren. (und vertrauen Sie mir, die Anzeigensteuerelemente sind anspruchsvoller als alles, was Sie alleine tun können.)

0
GameDeveloper

Die beste Lösung, die ich gefunden habe, um nicht von Bots gespickt zu werden, ist die Verwendung einer sehr banalen Frage oder eines Feldes in Ihrem Formular.

Versuchen Sie, ein Feld wie dieses hinzuzufügen:

  • Kopiere "Hallo" in die Box
  • 1 + 1 =?
  • Kopieren Sie den Namen der Website in das Feld

Bei diesen Tricks muss der Benutzer verstehen, was in das Formular eingegeben werden muss, was es viel schwieriger macht, das Ziel einer massiven Bot-Formfüllung zu sein.

EDIT

Die Rückseite dieser Methode ist, wie Sie in Ihrer Frage angegeben haben, der zusätzliche Schritt für die Überprüfung des Formulars durch den Benutzer .. Allerdings ist es meiner Meinung nach viel einfacher als ein Captcha und der Aufwand beim Ausfüllen des Formulars nicht länger als 5 Sekunden, was aus Anwendersicht akzeptabel erscheint.

0
Thibault Falise

Verwenden Sie 1) Formular mit Token 2) Überprüfen Sie das Formular, um die Verzögerung mit der IP-Adresse 3.

0
Vivian

Sie können versuchen, Spam-Roboter zu betrügen, indem Sie nach der Validierung von Javascript die richtige Aktion hinzufügen. Wenn also der Roboter Javascript blockiert, senden Sie das Formular niemals korrekt ab.

HTML

<form id="form01" action="false-action.php">
    //your inputs
    <button>SUBMIT</button>
</form>

JAVASCRIPT

$('#form01 button').click(function(){

   //your Validations and if everything is ok: 

    $('#form01').attr('action', 'correct-action.php').on("load",function(){
        document.getElementById('form01').submit()
    });
})

Ich füge nach .attr () einen "Rückruf" hinzu, um Fehler zu vermeiden

0
Santi Nunez