Thread Verfasser: MaZzIMo24
Thread ID: 1771
Thread Info
Es gibt 1 Beiträge zu diesem Thema, und es wurde 1659 Mal angesehen.
 Thema drucken
Stopspam, Bottracker.api - Deaktivierung der Eingabemöglichkeit
MaZzIMo24
Eine einfache Methode um die Eingabe durch Bots auf deiner Webseite zu unterdrücken.
Hierbei wird die von mir entwickelte und kostenfreie Bottracker.api verwendet.

Der Javascript Code im überblick:
let request = new XMLHttpRequest();
var urlToApi = "https://mazzimo24.net/api/bot.php?check=true&as=json";
request.open("GET", urlToApi, true);
request.onload = () => {
// parse JSON obj to var
  var req = JSON.parse(request.responseText);
  // relevant code for desable: input, textarea & select fields
  if(req.bot !== "false") {
   // Disable all relevant fields
   document.querySelectorAll('form > *,form').forEach(function(thisItem){
      thisItem.querySelectorAll('input,textarea,select').forEach(function(thisThis){
         thisThis.disabled=true;
         thisThis.style.cursor = "no-drop";
      });
   });
  }
  console.log(req.bot)
}
request.send();


Info! Der Skriptcode sollte in einer Hauptdatei eingebunden werden!
Jede Homepage ist etwas anders aufgebaut.

Wenn du eine Dynamische Homepage betreibst wirst du sicherlich eine "Kopf / Fuss" (Header/footer) Datei haben.
Hier brauchen wir denn die "Fuss" (footer) Datei, da das Skript am ende des Quellcodes eingebunden wird.


Hier ein Beispiel, eine einfache Datei mit einem Eingabeformular


<!DOCTYPE html>
<html>
<head></head>
<!-- Quelle: w3schools.com -->
<body>
<h2>HTML Forms</h2>

<form action="/action_page.php">
  <label for="fname">First name:</label><br>
  <input type="text" id="fname" name="fname" value="John"><br>
  <label for="lname">Last name:</label><br>
  <input type="text" id="lname" name="lname" value="Doe"><br><br>
  <input type="submit" value="Submit">
</form>

<p>If you click the "Submit" button, the form-data will be sent to a page called "/action_page.php".</p>

</body>
</html>


Info! Wenn wir jetzt den Code einbauen im unteren Bereich der Datei könnte das ganze so aussehen:


<!DOCTYPE html>
<html>
<body>
<h2>HTML Forms</h2>

<form action="/action_page.php">
  <label for="fname">First name:</label><br>
  <input type="text" id="fname" name="fname" value="John"><br>
  <label for="lname">Last name:</label><br>
  <input type="text" id="lname" name="lname" value="Doe"><br><br>
  <input type="submit" value="Submit">
</form>

<p>If you click the "Submit" button, the form-data will be sent to a page called "/action_page.php".</p>

<script>
let request = new XMLHttpRequest();
var urlToApi = "https://mazzimo24.net/api/bot.php?check=true&as=json";
request.open("GET", urlToApi, true);
request.onload = () => {
  // parse JSON obj to var
  var req = JSON.parse(request.responseText);
  // relevant code for desable: input, textarea & select fields
  if(req.bot !== "false") {
   // Disable all relevant fields
   //document.querySelectorAll('form > *, form.bot-protect, form.protect,form').forEach(function(thisItem){
   document.querySelectorAll('form > *,form').forEach(function(thisItem){
      thisItem.querySelectorAll('input,textarea,select').forEach(function(thisThis){
         thisThis.disabled=true;
         thisThis.style.cursor = "no-drop";
      });
   });
  }
  console.log(req.bot)
}
request.send();
</script>
</body>
</html>


Info! Um deinen Erfolg zu testen kannst du zum Beispiel einen user-agent changer nutzen.


Success! Wenn du alles ordnungsgemäß eingebunden hast ist es nun unmöglich für Bot's deine Eingabeformulare zu nutzen.


Bearbeitet von MaZzIMo24 am 10. April 2021 11:55:59
Projects: MZ.CMS | MZ.Fusion | Bot.API
Programmierkenntnisse: PHP, Html(5), CSS / SCSS, jQuery, Javascript, Sql, RegExp
Information:
PHP Version: 8.2.x •  MySQL Version: 8.0 •  PHP-Fusion: IUP-FIX-PHP7
 
Springe ins Forum: