Heim  >  Artikel  >  Backend-Entwicklung  >  Wie PHP Anti-Crawler-Technologie implementiert, um Website-Inhalte zu schützen

Wie PHP Anti-Crawler-Technologie implementiert, um Website-Inhalte zu schützen

WBOY
WBOYOriginal
2023-06-27 08:36:071653Durchsuche

Mit der Entwicklung des Internets ist der Inhalt der Website immer umfangreicher geworden und lockt immer mehr Benutzer an. Das damit verbundene Problem besteht jedoch darin, dass es von böswilligen Crawlern angegriffen wird, wodurch Website-Inhalte gecrawlt und gestohlen werden. Daher ist der Einsatz von Anti-Crawler-Technologie zum Schutz von Website-Inhalten zu einem Problem geworden, das jeder Webmaster lösen muss. PHP ist eine beliebte Open-Source-Skriptsprache, die einfach zu erlernen und leistungsstark ist. Wie kann man also PHP zur Implementierung der Anti-Crawler-Technologie verwenden? Im Folgenden wird es Ihnen im Detail erklärt.

1. HTTP-Anforderungsheader festlegen

Wenn ein normaler Browser auf eine Webseite zugreift, enthält der gesendete Anforderungsheader im Allgemeinen entsprechende Parameterinformationen. Schädliche Crawler senden diese Parameter im Allgemeinen nicht, daher können wir böswillige Crawler identifizieren, indem wir HTTP-Anforderungsheader festlegen. PHP bietet eine sehr praktische Funktion „curl_setopt()“, mit der sich Anforderungsheader setzen lassen. Die spezifische Implementierung ist wie folgt:

$curl = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://www.example.com");
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 10.0; Win64; x64...)");
curl_setopt($ch, CURLOPT_REFERER, "http://www.example.com");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$data = curl_exec($ch);
curl_close($ch);

fügt User-Agent, Referrer und andere Informationen zum Anforderungsheader hinzu, die den Browsertyp, die Quelladresse und andere Informationen identifizieren können. Wenn diese Informationen nicht hinzugefügt werden, wird er wahrscheinlich als bösartiger Crawler identifiziert und blockiert.

2. Bestätigungscode-Verifizierung

Der Bestätigungscode ist eine wirksame Anti-Crawler-Technologie, die durch das Hinzufügen von Bestätigungscodes verhindert, dass Maschinen Websites automatisch crawlen. In PHP können wir die GD-Bibliothek und die Sitzungstechnologie verwenden, um den Bestätigungscode zu implementieren. Der spezifische Code lautet wie folgt:

<?php
session_start();
$width=90;
$height=40;
$str = "abcdefghijklmnpqrstuvwxyzABCDEFGHIJKLMNPQRSTUVWXYZ0123456789";
$code = '';
for ($i = 0; $i < 4; $i++) {
   $code .= substr($str, mt_rand(0, strlen($str) - 1), 1);
}
$_SESSION['code'] = $code;

$img = imagecreatetruecolor($width, $height);
$bg_color = imagecolorallocate($img, 255, 255, 255);
imagefill($img, 0, 0, $bg_color);
$font_file="arial.ttf";
for ($i = 0; $i < 4; $i++) {
     $font_size=mt_rand(14,18);
     $font_color=imagecolorallocate($img,mt_rand(0,100),mt_rand(0,100),mt_rand(0,100));
     $angle=mt_rand(-30,30);
     $x=floor($width/6)*$i+6;
     $y=mt_rand(20, $height-10);
     imagettftext($img,$font_size,$angle,$x,$y,$font_color,$font_file,substr($code,$i,1));
}

header("Content-type: image/png");
imagepng($img);
imagedestroy($img);
?>

Dieser Code generiert einen zufälligen Bestätigungscode über die Funktion der GD-Bibliothek und speichert den Bestätigungscode in der Sitzung . Immer wenn ein Benutzer die Seite besucht, können Sie der Seite einen Bestätigungscode hinzufügen und den vom Benutzer eingegebenen Bestätigungscode mit dem in der Sitzung gespeicherten Bestätigungscode vergleichen. Wenn sie identisch sind, ist die Überprüfung erfolgreich, andernfalls schlägt die Überprüfung fehl.

3. Begrenzen Sie die Zugriffshäufigkeit

Einige Crawler crawlen die Website automatisch in einer Schleife, was schnell die Ressourcen der Website verbraucht und zum Absturz der Website führt. Als Reaktion auf diese Situation können wir Crawler-Angriffe eindämmen, indem wir die Häufigkeit des Zugriffs jeder IP-Adresse auf die Website begrenzen. In PHP können wir Cache-Datenbanken wie Redis verwenden, um die Zugriffshäufigkeit zu begrenzen. Der spezifische Code lautet wie folgt:

<?php
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$ip = $_SERVER["REMOTE_ADDR"];
$key = "visit:".$ip;
$count = $redis->get($key);
if(!$count) {
    $redis->setex($key, 1, 3);//3秒内允许访问一次
} elseif($count < 10) {
    $redis->incr($key);
} else {
    die("您的访问过于频繁,请稍后再试");
}
?>

Dieser Code verwendet die Funktion incr() von Redis, um die Anzahl der Besuche an jeder IP-Adresse zu akkumulieren, und verwendet die Funktion die(), um die Anforderung zu unterbrechen, wenn die Anzahl der Besuche erreicht ist Obergrenze erreicht, wird der Benutzer aufgefordert, es später noch einmal zu versuchen.

Zusammenfassend lässt sich sagen, dass PHP als leistungsstarke Open-Source-Skriptsprache die Implementierung der Anti-Crawler-Technologie gut unterstützen kann. Durch das Festlegen von HTTP-Anforderungsheadern, die Überprüfung des Bestätigungscodes und die Begrenzung der Zugriffshäufigkeit können Sie wirksam verhindern, dass böswillige Crawler die Website angreifen, und die Sicherheit des Website-Inhalts schützen. Daher können Webmaster erwägen, diese Anti-Crawler-Technologien zu ihren Websites hinzuzufügen, um die Sicherheit und Stabilität der Website zu verbessern.

Das obige ist der detaillierte Inhalt vonWie PHP Anti-Crawler-Technologie implementiert, um Website-Inhalte zu schützen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn