Ankündigung

Einklappen
Keine Ankündigung bisher.

bots fernhalten

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • bots fernhalten

    Bots sollen nicht weiter kommen.
    Hi! Ich habe ein Problem.
    Ich denke mein script funktioniert nicht und ich weiss nicht warum.
    Bitte um Hilfe.

    PHP-Code:
    <?php
    //Bots facebookexternalhit|Googlebot|google|yahoo|
      
    $XbotX '0';                             
      if (
    preg_match(strtolower('/bot|netcraft|MegaIndex|adscanner|AhrefsBot|SemrushBot|BLEXBot|seokicks|YandexBot|Baiduspider|MSIE|MJ12bot|Exabot|crawl|curl|dataprovider|search|get|spider|find|java|majesticsEO|teoma|contaxe|yandex|libwww-perl/i'), $_SERVER['HTTP_USER_AGENT']))
         { 
    $XbotX '1'header("Location: http://www.google.de/"); }
      if (
    preg_match('/0.0.0.0|91.64.173.0/i'getenv("REMOTE_ADDR")))
         { 
    $XbotX '1'header("Location: http://www.google.de/"); }


    //Mail
    if($XbotX == '1')
    {
       
    //Nix machen...
    }
    else
    {                             
       if (
    preg_match('/91.64.185.51|77.111/i'getenv('REMOTE_ADDR')))
       {
           
    // Nix machen
       
    }
       else
       {
           
    $empfaenger "email@gmx.de";
           
    $betreff strtolower($_SERVER['HTTP_USER_AGENT']) . "       " getenv("REMOTE_ADDR");
           
    $from    "....## Homepage ##....";
           
    $text    strtolower($_SERVER['HTTP_USER_AGENT']) . "\n" getenv("REMOTE_ADDR");
           
    mail($empfaenger$betreff$text$from);
       }
    }
    ?>

  • #2
    1. Bitte sinnvolle Fehlerbeschreibung!
      Was passiert statt des Erwarteten?
    2. Der Punkt in regulären Ausdrücken hat ohne Escaping eine Bedeutung.
    3. mail() rundet den Code nicht gerade positiv ab.
      Nutze eine Mailer-Klasse, wie bspw. PHPMailer
    Competence-Center -> Enjoy the Informatrix
    PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

    Kommentar


    • #3
      Du kannst Bots nicht fern halten, da Bots wie User agieren und auch nicht von denen unterscheidbar sind. Es sei denn Du schließt Deinen Service komplett nach Außen und machst einen Kennwortzugang. Dann erreichen die Bots nur den Zugang.
      bitcoin.de <- Meine Freelancerwährung

      Kommentar


      • #4
        Die email funktioniert bestens aber die Bots kommen trotzdem durch und werden einfach nicht umgeleitet zu google.

        Kommentar


        • #5
          Man leitet die Bots auch nicht einfach eine fremde Seite um sondern sendet einen entsprechenden http Request.
          Wenn andere ihre Bots zu deiner Seite umleiten würden würde die das sicher auch nicht gefallen.

          Kommentar


          • #6
            Zitat von Spikie1977 Beitrag anzeigen
            Die email funktioniert bestens aber die Bots kommen trotzdem durch
            Das macht für mich keinen Sinn. Wenn du schon erkannt hast, dass Bots durchkommen, an welchen Kriterien machst du das fest, und warum blockierst du bei entsprechenden Merkmalen dann nicht?
            [I]You know, my wife sometimes looks at me strangely. „Duncan“, she says, „there's more to life than Solaris“. Frankly, it's like she speaks another language. I mean, the words make sense individually, but put them together and it's complete nonsense.[/I]

            Kommentar


            • #7
              Ich brauche Hilfe... Ich versehe nicht warum das nicht funktioniert.
              Bots kommen einfach durch.
              Hier mein neues script:

              PHP-Code:
              <?php
              $SpikeX 
              $_SERVER["HTTP_USER_AGENT"];
              $badwords = array                                          
              (   
              'MJ12bot'
                 
              ,'bot','MegaIndex','adscanner','AhrefsBot','SemrushBot'
                 
              ,'BLEXBot','seokicks','YandexBot','Baiduspider','MSIE','Exabot'
                 
              ,'crawl','curl','dataprovider','search','get','spider','find','java'
                 
              ,'majesticsEO','teoma','contaxe','yandex','libwww-perl','zgrab'                  
              );
              foreach(
              $badwords as $badword)
              {
                      if (!(
              is_bool(strpos($SpikeX$badword))))
                      {
                         
              // Bot gefunden - Email senden
                         
              $empfaenger "spike@gmx.de";
                         
              $betreff "__Bot__" $badword "__***__" getenv("REMOTE_ADDR");
                         
              $from    "__Bot__";
                         
              $text    "__Bot__: " $badword "\n" $_SERVER['HTTP_USER_AGENT'] . "\n" getenv("REMOTE_ADDR");
                         
              mail($empfaenger$betreff$text$from);
                         exit;
                      }
                      else
                      {
                         
              // Normaler User - Email senden
                         
              $empfaenger "spike@gmx.de";
                         
              $betreff "__Normal__" $_SERVER['HTTP_USER_AGENT'] . "___" getenv("REMOTE_ADDR");
                         
              $from    "__Normal__";
                         
              $text    "__Normal__" "\n" $_SERVER['HTTP_USER_AGENT'] . "\n" getenv("REMOTE_ADDR");
                         
              mail($empfaenger$betreff$text$from);
                         break;
                      }
              }
              ?>
              Ergebnis: __Normal__Mozilla/5.0 (compatible; MJ12bot/v1.4.8; http://mj12bot.com/)

              Ergebnis das eigentlich sein müsste:__Bot__Mozilla/5.0 (compatible; MJ12bot/v1.4.8; http://mj12bot.com/)

              Was soll da nur falsch sein? Wo ist der blöde Fehler...

              Kommentar


              • #8
                Zitat von Spikie1977 Beitrag anzeigen

                Was soll da nur falsch sein? Wo ist der blöde Fehler...
                Der sitzt vor dem Bildschirm und ignoriert sämtliche Hilfestellungen!

                Kommentar


                • #9
                  Spikie1977 gehst du eigentlich auch irgendwann mal darauf ein was du hier an Feedback bekommst, oder warum ignorierst du alles? Lass dir die Infos die du oben bekommen hast mal durch den Kopf gehen.
                  The string "()()" is not palindrom but the String "())(" is.

                  Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                  PHP.de Wissenssammlung | Kein Support per PN

                  Kommentar


                  • #10
                    Ich gehe auch nicht davon aus, dass Bots den User Agent Header mit senden, bzw. dort angeben dass sie ein Bot sind.

                    Kommentar


                    • #11
                      Ihr seht doch meinen code oder? Ihr seht das ich kein fortgeschrittener bin oder?
                      Warum nicht mal einer sagt: "Pass mal auf so geht das und nicht so wie du das machst"
                      Nein...Ich muss mein Problem selber lösen...

                      Kommentar


                      • #12
                        Zitat von Spikie1977 Beitrag anzeigen
                        Ihr seht doch meinen code oder? Ihr seht das ich kein fortgeschrittener bin oder?
                        Warum nicht mal einer sagt: "Pass mal auf so geht das und nicht so wie du das machst"
                        Nein...Ich muss mein Problem selber lösen...
                        Weil das was du vorhast nicht Möglich ist und dir hier ja schon einige Gründe genannt wurden, warum das so ist.

                        Kommentar


                        • #13
                          1. Verwende stripos, um Groß-und Kleinschreibung ncht berücksichtigen zu müssen
                          2. Stell die Bedingung um und frage nach stripos() === false
                          Competence-Center -> Enjoy the Informatrix
                          PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

                          Kommentar


                          • #14
                            Zitat von Spikie1977 Beitrag anzeigen
                            Was soll da nur falsch sein? Wo ist der blöde Fehler...
                            Wie wäre es den mit testen? Spaghetti Code lässt sich schlecht testen?! Dann versuchs mit etwas Struktur... z.B. eine Funktion würde sich für den Einstieg anbieten.

                            PHP-Code:
                            function isBadUserAgent($user_agent): bool
                            {
                                
                            //das überlass ich dir
                                
                            return rand(1100) > 50;
                            }


                            var_dump(isBadUserAgent('Mozilla/5.0 (compatible; MJ12bot/v1.4.8; http://mj12bot.com/)'));
                            var_dump(isBadUserAgent('Mozilla/5.0 (compatible;)'));
                            var_dump(isBadUserAgent('Apple/5.0')); 

                            Dann würde vielleicht auch auffallen wo der Fehler ist (wahrscheinlich würde der mit einer Funktion gar nicht passieren) und du würdest vielleicht auch merken das du jeden IE User blockst.

                            Kommentar


                            • #15
                              Zitat von Zeichen32 Beitrag anzeigen
                              Ich gehe auch nicht davon aus, dass Bots den User Agent Header mit senden, bzw. dort angeben dass sie ein Bot sind.
                              Das ist der entscheidende Satz.
                              Wenn ich eine Spam Bot programmieren müsste, dann würde ich ihn mit einem normalen UA tarnen, die Session und Cookies speichern und auch verwenden. Das Einzige was mich abhalten würde wäre Javascript.

                              Nutze also ein hiddenfeld als honeypot, sowie einmalige token und Javascript in deinem Formular. Verwende Sessions und werte die Zeit aus die vom Anfordern des Formulars bis zum Abschicken vergeht.

                              Viel mehr kannst du eigentlich nicht machen, aber damit solltest in den meisten Fällen klar kommen.

                              Damit du nicht alles selbst programmieren musst hat ein Helfer hier sich schon die Arbeit gemacht und das für dich erstellt. Laut Aussage einer User hier funktioniert das auch ziemlich zuverlässig.
                              Der Link zi jspits antibot.http://jspit.de/?page=antibot

                              Und verwende den PHPMailer um Mails zu versenden. Das was du machst ist wie Lotto spielen, meistens verlierst du.

                              Kommentar

                              Lädt...
                              X