PHP implémente la solution de surveillance du trafic et de prévention des demandes malveillantes de l'interface Baidu Wenxin Yiyan
L'interface Yiyan est une API très populaire fournie par Baidu En appelant cette interface, vous pouvez obtenir un Wenxin Yiyan aléatoire. Cependant, dans les applications réelles, en raison du grand nombre d'accès à l'interface, celle-ci peut être confrontée à des problèmes de trafic excessif, voire à des requêtes malveillantes. Cet article explique comment utiliser PHP pour implémenter la surveillance du trafic et empêcher les requêtes malveillantes pour cette interface.
Tout d'abord, nous devons déployer un script PHP sur notre propre serveur comme middleware pour recevoir les demandes des clients et appeler l'interface de Baidu Wenxinyiyan. Voici un exemple de code simple :
<?php function getOneWord() { $url = 'https://api.gushi.ci/all.json'; $data = file_get_contents($url); $result = json_decode($data, true); return $result['content']; } // 检查IP是否被限制访问(60秒最多访问100次) function checkIP() { $ip = $_SERVER['REMOTE_ADDR']; $file = './ip.txt'; $time = time(); $lines = file($file); // 删除过期的记录 foreach ($lines as $key => $line) { $record = explode(',', $line); if ($time - $record[0] > 60) { unset($lines[$key]); } } file_put_contents($file, implode($lines)); // 统计当前IP的请求次数 $count = 0; foreach ($lines as $line) { $record = explode(',', $line); if ($record[1] == $ip) { $count++; } } // 超过限制次数 if ($count >= 100) { return false; } // 添加新的请求记录 file_put_contents($file, $time . ',' . $ip . PHP_EOL, FILE_APPEND); return true; } // 允许跨域访问 header('Access-Control-Allow-Origin: *'); // 检查IP是否被限制访问 if (!checkIP()) { die('请求过于频繁,请稍后再试!'); } // 调用百度文心一言接口 $oneWord = getOneWord(); // 返回结果 echo $oneWord; ?>
Dans le code ci-dessus, nous avons d'abord écrit la fonction getOneWord()
, qui est utilisée pour appeler l'interface Baidu Wenxin Yiyan et renvoyer une phrase Wenxin Yiyan. Ensuite, la fonction checkIP()
est utilisée pour vérifier si l'adresse IP du client dépasse la limite de fréquence d'accès. Ici, nous enregistrons l'adresse IP dans un fichier texte et effaçons périodiquement les enregistrements expirés. Si le nombre de demandes pour une certaine adresse IP dépasse la limite (jusqu'à 100 visites en 60 secondes), un message d'erreur sera renvoyé, sinon un nouvel enregistrement de demande sera ajouté. getOneWord()
函数,用于调用百度文心一言接口并返回一句文心一言。然后,checkIP()
函数用来检查客户端的IP地址是否超过了访问频率限制。这里我们将IP地址记录在一个文本文件中,并定期清除过期的记录。如果某个IP地址的请求次数超过了限制(60秒内最多访问100次),则返回错误信息,否则添加新的请求记录。
接下来,我们在PHP脚本的开头添加了header('Access-Control-Allow-Origin: *')
header('Access-Control-Allow-Origin: *')
au début du script PHP afin de permettre l'accès entre domaines et de faciliter l'appel du client. interface. Enfin, nous renvoyons le contenu correspondant en fonction des résultats de l'appel. Pour tester l'effet de cette solution, vous pouvez enregistrer le code ci-dessus sous forme de fichier PHP, puis accéder à ce fichier dans le navigateur pour obtenir une phrase de texte. Afin de simuler des requêtes simultanées, vous pouvez utiliser plusieurs fenêtres ou outils de navigateur pour accéder à cette interface en même temps et observer si vous recevez un message d'erreur indiquant que les requêtes sont trop fréquentes. Grâce à la solution ci-dessus, nous avons implémenté les fonctions de surveillance du trafic et de prévention des requêtes malveillantes de l'interface Baidu Wenxin Yiyan. Les limites de fréquence d’accès peuvent être ajustées selon les besoins pour s’adapter au volume réel des demandes. Dans le même temps, nous avons également ajouté la prise en charge de l'accès inter-domaines à cette interface pour faciliter les appels clients. Les avantages de cette méthode sont qu’elle est simple à utiliser, peu coûteuse et qu’elle peut protéger efficacement l’interface contre les abus. J'espère que le contenu ci-dessus vous sera utile et je vous souhaite bonne chance dans votre projet ! 🎜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!