it-swarm.com.de

Wie kann ich mit .htaccess auf URLs, die eine Abfragezeichenfolge enthalten, mit dem Status 403 Verboten antworten?

Einige Bots haben meine Site für jeden Link gecrawlt, der auf Folgendes endet:

?utm_source=dlvr.it&utm_medium=Twitter

Ich habe die IP nicht ausgecheckt.

Dann folgen andere Bots (10+) den Linkregeln ?utm_source=dlvr.it&utm_medium=Twitter und crawlen auch meine Site. Dies führt zu einem hohen Verkehrsaufkommen, das dann dazu führt, dass meine Website geschlossen wird. Ich habe mehr als 10 andere Bots mit dem Statuscode HTTP 403 zu meiner Blacklist hinzugefügt, wenn sie auf meine Site zugreifen.

Aber ich denke, der beste Weg ist, den ersten Bot herauszufinden, der meine Site für jeden Link gecrawlt hat, der endet mit:

?utm_source=dlvr.it&utm_medium=Twitter

Oder verwenden Sie einen HTTP 403 -Umleitungsstatuscode, wenn die URL Folgendes enthält:

?utm_source=dlvr.it&utm_medium=Twitter

Ich kenne einige Möglichkeiten, um . Htaccess Code hinzuzufügen, der verhindern würde, dass jemand meine xmlrpc.php -Seite crawlt, wie zum Beispiel:

<Files xmlrpc.php>
Order Deny,Allow
Deny from all
</Files>

Aber was ist mit einer Abfrage in URL?

5
space and time

Wenn Sie das Modul mod_rewrite installiert haben, können Sie dieses in Ihre Datei .htaccess im Stammverzeichnis Ihrer Website (normalerweise im Ordner public_html) einfügen ):

RewriteEngine On
RewriteRule ^\?utm_source\=dlvr.it\&utm_medium\=Twitter$ - [R=403,NC,L]

Möglicherweise müssen Sie den \ aus dem = entfernen. Ich kann mich nicht erinnern, ob es notwendig ist, zu entkommen.

Eine andere Möglichkeit wäre, wenn Sie irgendwo in der URL nach der Zeichenfolge suchen:

RewriteEngine On
RewriteRule ^(.*)\?utm_source\=dlvr.it\&utm_medium\=Twitter(.*)$ - [R=403,NC,L]

Das NC am Ende unterscheidet nicht zwischen Groß- und Kleinschreibung. Wenn der Text also in Großbuchstaben geschrieben ist, werden die Bots auf einen Fehler 403 verwiesen.

4
Mike

? utm_source = dlvr.it & utm_medium = Twitter

utm_source und utm_medium werden von Google Analytics (und möglicherweise auch von anderen Trackern) zur Überwachung von Kampagnen verwendet. Das Sperren des Zugriffs nur auf diese Abfragezeichenfolge fühlt sich jedoch nicht "richtig" an, wenn dies in Ihrer Situation korrekt ist dann OK...

Ein wichtiger Punkt, den Sie mit Abfragezeichenfolgen realisieren sollten, ist, dass sie nicht allein mit dem RewriteRule von mod_rewrite abgeglichen werden können (oder mit der Request_URI -Variablen in mod_setenvif - wie in Kommentaren vorgeschlagen). Die Abfragezeichenfolge wird aus dem URL-Pfad entfernt vor sie wird mit dem Muster RewriteRule abgeglichen.

Aktivieren Sie die Rewrite-Engine (mod_rewrite), falls noch nicht geschehen:

RewriteEngine On

Sie müssen die Anweisung RewriteCond verwenden. Um also ein "403 Forbidden" für alle Anforderungen zu liefern, die mit der obigen Abfragezeichenfolge übereinstimmen, können Sie Folgendes verwenden:

RewriteCond %{QUERY_STRING} =utm_source=dlvr.it&utm_medium=Twitter
RewriteRule .* - [F]

Dies ist eine genaue Übereinstimmung für die angegebene Abfragezeichenfolge (es handelt sich nicht um eine Regex, daher muss Punkt nicht maskiert werden). Das Flag L ist nicht erforderlich, wenn das Flag F angegeben wird (dies ist impliziert). (F steht für R=403.)

Wenn Sie möchten, dass es weniger restriktiv ist und mit allen Abfragezeichenfolgen übereinstimmt, die nur mit der obigen Abfragezeichenfolge beginnen, verwenden Sie einen regulären Ausdruck:

RewriteCond %{QUERY_STRING} ^utm_source=dlvr\.it&utm_medium=Twitter
RewriteRule .* - [F]

Sie können die Groß- und Kleinschreibung des regulären Ausdrucks auch unter Verwendung des Flags NC (NOCASE) aufheben. Verwenden Sie diese Option jedoch nur, wenn Sie die Groß- und Kleinschreibung im Spiel ignorieren möchten. Die Leute neigen dazu, diese Flagge aus Gewohnheit anzufügen, aber es ist oft unnötig (oder manchmal sogar falsch) und lässt die Regex-Engine nur ein bisschen härter arbeiten.

Dies ist nicht besonders effizient, da jede Anfrage bearbeitet wird. Wenn beispielsweise nur die URLs im Pfad /path/to/files als Ziel angegeben werden, können Sie das Muster RewriteRule restriktiver gestalten:

RewriteRule ^path/to/files/ - [F]
3
MrWhite