Ist das ein Repricer?

Programmierung, Templatedesign & Codeschnipsel
Antworten
Benutzeravatar
Woody-HH
PLUS-Mitglied
PLUS-Mitglied
Beiträge: 2618
Registriert: 29. Mär 2010 19:14
Land: Deutschland

Ist das ein Repricer?

Hallo zusammen,

ein Kollege hat ein Problem: Die Suchfunktion seines Shops wird mit mehreren Tausend Suchanfragen nach EAN-Codes täglich geflutet, und zwar von vielen verschiedenen IP's. Das geht so weit, dass es die Datenbank umhaut.
Was könnte dahinterstecken - ist das irgend etwas wie ein Repricer? Und am wichtigsten: Was kann man dagegen tun?


3 Monate gratis Händlerbund
robertt
Beiträge: 92
Registriert: 30. Jul 2010 09:25
Land: Deutschland

Re: Ist das ein Repricer?

Zumindest scheint jemand zu versuchen automatisch die jeweiligen Produktseiten aufzurufen und davon Daten auszulesen. Das es dabei primär um die Preise gehen könnte liegt nahe, wenn der Shop sonst keine wichtigen Dinge wie besonders gute Produkttexte oder ähnliches bietet.

Kommen die IP-Adressen aus einem IP-Block, also z.B. 156.12.122.X? Wenn ja, und der Block nicht auch normale Kundenanfragen beinhaltet, den gesamten Block sperren.

Wenn die Anfragezahl pro IP deutlich über dem zu erwartenden Niveau eines normalen Kunden liegt ein entsprechendes Limit setzen. Wie man das machen kann hängt stark von den eingesetzten Systemen ab.

Wenn die Anfragezahl pro IP nicht signifikant über der von normalen Kunden liegt, kann man sich die Anfragen etwas genauer ansehen. Wie sehen die Daten im HTTP-Header aus, was wird z.B. als Browser-ID mitgeschickt. Möglicherweise kann man danach filtern und aussperren.

Unabhängig davon sollte man sich mal die Performance der Suche anschauen. Eine einfache Anfrage mittels EAN sollte eigentlich eine der unaufwendigsten Abfragen sein und für normale Datenbanken auf aktueller Hardware kein Leistungsproblem darstellen. Wenn die Auslieferung der Seiten der Flaschenhals ist, sollte man über Cachesysteme nachdenken oder diese deutlich optimieren, wenn bereits vorhanden.
Patchwork (R.i.P.)

Re: Ist das ein Repricer?

erst mal in den Server-Logs nachsehen, ob sich der "Besucher" zB als bot zu erkennen gibt.
Woody-HH hat geschrieben:...
Und am wichtigsten: Was kann man dagegen tun?
in der index.php einbauen
// IP blocked
$ip = $_SERVER['REMOTE_ADDR'];
if ($ip == '999.999.999.99') die('shop offline');
...
robertt
Beiträge: 92
Registriert: 30. Jul 2010 09:25
Land: Deutschland

Re: Ist das ein Repricer?

patchwork.de hat geschrieben:in der index.php einbauen
Woher weißt du, das es eine index.php gibt?
patchwork.de hat geschrieben:if ($ip == '999.999.999.99') die('shop offline');
Das könnte etwas aufwendiger werden:
Woody-HH hat geschrieben:von vielen verschiedenen IP's
Patchwork (R.i.P.)

Re: Ist das ein Repricer?

robertt hat geschrieben:
patchwork.de hat geschrieben:in der index.php einbauen
Woher weißt du, das es eine index.php gibt?
[/quote]
ist bei allen mir bekannten Shopsystemen Standard. Falls evtl. ein "fertiger" Shop von einem Provider verwendet wird, wirst du wohl mit dem Hoster Kontakt aufnehmen müssen.
patchwork.de hat geschrieben:if ($ip == '999.999.999.99') die('shop offline');
Das könnte etwas aufwendiger werden:
Woody-HH hat geschrieben:von vielen verschiedenen IP's
man kann auch ganze Bereiche blocken, muß aber vorsichtig sein dass dabei nicht zuviel geblockt wird
if (strpos($ip, '999.999.999.') die('shop offline');
roemerhaardesign
Beiträge: 1980
Registriert: 22. Jun 2014 00:55

Re: Ist das ein Repricer?

patchwork.de hat geschrieben:erst mal in den Server-Logs nachsehen, ob sich der "Besucher" zB als bot zu erkennen gibt.
Woody-HH hat geschrieben:...
Und am wichtigsten: Was kann man dagegen tun?
in der index.php einbauen
// IP blocked
$ip = $_SERVER['REMOTE_ADDR'];
if ($ip == '999.999.999.99') die('shop offline');
...
Achtung Halbwissen!

Was, wenn der Besucher gar nicht über die index.php in den Shop kommt? Bietet sich da nicht eher ein Eintrag in der .htaccess an? Wenn aus den log-files ersichtlich ist, dass es sich um immer wiederkehrende IPs handelt, wäre das vielleicht schon mal ein Schritt in die richtige Richtung.

Halbwissen Ende.
_________________

Denken ist wie googeln, nur viel spannender!
mwp
Beiträge: 1460
Registriert: 12. Okt 2009 14:40
Land: Deutschland

Re: Ist das ein Repricer?

Ich würde

1) auch einmal die Namensauflösung testen und schauen wer dahinter steckt bzw. mal schauen zu wem die IPs gehören, z. B. https://www.whois.com/whois/

2) Bei root Zugriff entsprechende System Tools nutzen um die gewünschten Anfragen auszusperren, unter Linux vorzugsweise iptables oder ggf. fail2ban. Falls das nicht möglich, über die .htaccess. Nur falls das auch nicht möglich ist, würde ich die Blockierung über die Scriptspache (vermutlich php) wählen.

3) Präventivmaßnahmen ergreifen. Z. B. fail2ban entsprechend einsetzen.
robertt
Beiträge: 92
Registriert: 30. Jul 2010 09:25
Land: Deutschland

Re: Ist das ein Repricer?

patchwork.de hat geschrieben:ist bei allen mir bekannten Shopsystemen Standard.
Schauen wir mal bei einem der aktuell populärsten Shop-Systeme - shopware:

Bild
patchwork.de hat geschrieben:man kann auch ganze Bereiche blocken, muß aber vorsichtig sein dass dabei nicht zuviel geblockt wird
Das Ändern in den Stammdateien eines Shopsystems ist für gewöhnlich eine schlechte Lösung, da spätestens bei einem Update des Systems die Änderungen still und leise entsorgt werden oder deswegen das Update des Systems scheitert und man erst auf Ursachensuche gehen muss.

Außerdem kenne ich einige Hoster, bei denen der Zugriff auf $_SERVER['REMOTE_ADDR'] dir eine IP aus deren Infrastrukturbereich liefert und nicht unbedingt die des Zugreifenden. Damit würde deine Lösung auch nicht greifen.
Patchwork (R.i.P.)

Re: Ist das ein Repricer?

viele Wege führen nach Rom :D
nur können sich umfangreiche Abfragen in der .htaccess auf die Performance auswirken - in php dagegen nicht messbar.
heinzfriedrich
Beiträge: 99
Registriert: 11. Jul 2016 14:01

Re: Ist das ein Repricer?

Der mir bekannte resourcenärmste Weg ist das Kernelrouting:

route add -net 192.168.34.0 netmask 255.255.255.0 reject

Natürlich NetzIP und NetzMaske anpassen.
Setzen wir u.a. bei ungeliebten Bots ein, die sich nicht an die robots.txt halten.

Nachteil:

Muss nach einem Reboot neu eingetragen werden.
Es müssen Root-Rechte auf dem Server genutzt werden.

LG Heinz
robertt
Beiträge: 92
Registriert: 30. Jul 2010 09:25
Land: Deutschland

Re: Ist das ein Repricer?

heinzfriedrich hat geschrieben:Nachteil:
Muss nach einem Reboot neu eingetragen werden.
Dabei kann dir Cron behilflich sein. Mittels "crontab -e" folgendes eintragen:

Code: Alles auswählen

@reboot route add -net 192.168.34.0 netmask 255.255.255.0 reject
Dann sollte die Regel bei jedem Serverneustart automatisch hinzugefügt werden, sofern cron installiert ist. Habe es nur aus dem Kopf, also bitte vorher testen.

Ansonsten würde ich jetzt erstmal auf Rückmeldung des Thread-Erstellers warten, bevor wir noch die einzelnen Kernel-Optionen durchgehen ;)
Benutzeravatar
Woody-HH
PLUS-Mitglied
PLUS-Mitglied
Beiträge: 2618
Registriert: 29. Mär 2010 19:14
Land: Deutschland

Re: Ist das ein Repricer?

Hier der derzeitige Stand der Erkenntnisse:
Die Abfragen kommen über eine entsprechende URL

Code: Alles auswählen

http://...search?page=search&page_action=...
und nicht über das im Shop befindliche Suchformular.
Wir werden jetzt in das Formular mal einen zusätzlichen Parameter einbauen (als "hidden") und die Suchfunktion so ändern, dass sie nur bei Angabe dieser Parameter läuft. Den Parameter werden wir variabel gestalten (Datum, Mondphase, irgendwas), so dürfte er nicht ganz so einfach nachzubauen sein.
Damit dürfte vorerst Ruhe sein.
Danke für die Tipps!
Antworten

Zurück zu „HTML, PHP, CSS, & Co.“

  • Information