Comment PHP implémente la technologie anti-crawler et protège le contenu du site Web

WBOY
Libérer: 2023-06-27 08:50:01
original
1718 Les gens l'ont consulté

Avec le développement d'Internet, le contenu du site Web est devenu de plus en plus abondant, attirant de plus en plus d'utilisateurs à visiter. Mais le problème qui en découle est qu’il est attaqué par des robots d’exploration malveillants, provoquant l’exploration et le vol du contenu du site Web. Par conséquent, comment utiliser la technologie anti-crawler pour protéger le contenu d’un site Web est devenu un problème que chaque webmaster doit résoudre. PHP est un langage de script open source populaire, facile à apprendre et puissant. Alors, comment utiliser PHP pour implémenter la technologie anti-crawler ? Ce qui suit vous l’expliquera en détail.

1. Définir les en-têtes de requête HTTP

Généralement, lorsqu'un navigateur normal accède à une page Web, l'en-tête de requête envoyé contient les informations de paramètres correspondantes. Les robots d'exploration malveillants n'envoient généralement pas ces paramètres. Nous pouvons donc identifier les robots d'exploration malveillants en définissant des en-têtes de requête HTTP. PHP fournit une fonction très pratique curl_setopt(), grâce à laquelle les en-têtes de requête peuvent être définis. L'implémentation spécifique est la suivante :

$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);
Copier après la connexion

ajoute l'agent utilisateur, le référent et d'autres informations à l'en-tête de la demande, qui peuvent identifier le type de navigateur, l'adresse source et d'autres informations. Si ces informations ne sont pas ajoutées, elles seront probablement identifiées comme un robot malveillant et bloquées.

2. Vérification du code de vérification

Le code de vérification est une technologie anti-crawler efficace qui empêche les machines d'explorer automatiquement le site Web en ajoutant des codes de vérification. En PHP, nous pouvons utiliser la bibliothèque GD et la technologie Session pour implémenter le code de vérification. Le code spécifique est le suivant :

<?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);
?>
Copier après la connexion

Ce code génère un code de vérification aléatoire grâce à la fonction de la bibliothèque GD et enregistre le code de vérification dans la Session. . Chaque fois qu'un utilisateur visite la page, vous pouvez ajouter un code de vérification à la page et comparer le code de vérification saisi par l'utilisateur avec le code de vérification enregistré dans la session. S'ils sont identiques, la vérification réussit, sinon la vérification échoue.

3. Limiter la fréquence d'accès

Certains robots exploreront automatiquement le site Web en boucle, ce qui consommera rapidement les ressources du site Web et provoquera son crash. En réponse à cette situation, nous pouvons freiner les attaques des robots en limitant la fréquence de chaque adresse IP accédant au site Web. En PHP, nous pouvons utiliser des bases de données de cache telles que Redis pour limiter la fréquence d'accès. Le code spécifique est le suivant :

<?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("您的访问过于频繁,请稍后再试");
}
?>
Copier après la connexion

Ce code utilise la fonction incr() de Redis pour accumuler le nombre de visites sur chaque adresse IP, et utilise la fonction die() pour interrompre la requête lorsque le nombre de visites atteint. limite supérieure, l'utilisateur sera invité à réessayer plus tard.

En résumé, PHP, en tant que puissant langage de script open source, peut bien prendre en charge la mise en œuvre de la technologie anti-crawler. En définissant les en-têtes de requête HTTP, la vérification du code de vérification et en limitant la fréquence d'accès, vous pouvez efficacement empêcher les robots malveillants d'attaquer le site Web et protéger la sécurité du contenu du site Web. Par conséquent, les webmasters peuvent envisager d’ajouter ces technologies anti-crawler à leurs sites Web pour améliorer la sécurité et la stabilité du site Web.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal