>  기사  >  백엔드 개발  >  PHP는 Baidu Wenxin Yiyan 인터페이스 트래픽 모니터링 및 악성 요청 방지 솔루션을 구현합니다.

PHP는 Baidu Wenxin Yiyan 인터페이스 트래픽 모니터링 및 악성 요청 방지 솔루션을 구현합니다.

PHPz
PHPz원래의
2023-08-26 15:48:23922검색

PHP는 Baidu Wenxin Yiyan 인터페이스 트래픽 모니터링 및 악성 요청 방지 솔루션을 구현합니다.

PHP는 Baidu Wenxin Yiyan 인터페이스의 트래픽 모니터링 및 악성 요청 방지 솔루션을 구현합니다.

Yiyan 인터페이스는 Baidu에서 제공하는 매우 인기 있는 API입니다. 이 인터페이스를 호출하면 임의의 Wenxin Yiyan을 얻을 수 있습니다. 그러나 실제 애플리케이션에서는 인터페이스에 대한 접근 횟수가 많기 때문에 과도한 트래픽이나 심지어 악의적인 요청이 발생하는 문제에 직면할 수 있습니다. 이 기사에서는 PHP를 사용하여 트래픽 모니터링을 구현하고 이 인터페이스에 대한 악의적인 요청을 방지하는 방법을 소개합니다.

먼저 클라이언트 요청을 수신하고 Baidu Wenxinyiyan의 인터페이스를 호출하기 위해 자체 서버에 미들웨어로 PHP 스크립트를 배포해야 합니다. 다음은 간단한 샘플 코드입니다.

<?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;
?>

위 코드에서 먼저 Baidu Wenxin Yiyan 인터페이스를 호출하고 Wenxin Yiyan을 반환하는 데 사용되는 getOneWord() 함수를 작성했습니다. 그런 다음 checkIP() 함수를 사용하여 클라이언트의 IP 주소가 접속 빈도 제한을 초과하는지 확인합니다. 여기에서는 텍스트 파일에 IP 주소를 기록하고 만료된 기록을 주기적으로 삭제합니다. 특정 IP 주소에 대한 요청 횟수가 제한(60초 내에 최대 100회 방문)을 초과하는 경우 오류 메시지가 반환되고, 그렇지 않은 경우 새로운 요청 기록이 추가됩니다. getOneWord()函数,用于调用百度文心一言接口并返回一句文心一言。然后,checkIP()函数用来检查客户端的IP地址是否超过了访问频率限制。这里我们将IP地址记录在一个文本文件中,并定期清除过期的记录。如果某个IP地址的请求次数超过了限制(60秒内最多访问100次),则返回错误信息,否则添加新的请求记录。

接下来,我们在PHP脚本的开头添加了header('Access-Control-Allow-Origin: *')

다음으로 PHP 스크립트 시작 부분에 header('Access-Control-Allow-Origin: *')를 추가했습니다. 이는 도메인 간 액세스를 허용하고 클라이언트가 상호 작용. 마지막으로 통화 결과에 따라 해당 콘텐츠를 반환합니다.

이 솔루션의 효과를 테스트하려면 위 코드를 PHP 파일로 저장한 다음 브라우저에서 이 파일에 액세스하여 텍스트 문장을 얻을 수 있습니다. 동시 요청을 시뮬레이션하려면 여러 브라우저 창이나 도구를 사용하여 동시에 이 인터페이스에 액세스하고 요청이 너무 빈번하다는 오류 메시지가 표시되는지 관찰할 수 있습니다.

위 솔루션을 통해 Baidu Wenxin Yiyan 인터페이스의 트래픽 모니터링 및 악성 요청 방지 기능을 구현했습니다. 실제 요청량을 수용하기 위해 필요에 따라 액세스 빈도 제한을 조정할 수 있습니다. 동시에 클라이언트 호출을 용이하게 하기 위해 이 인터페이스에 도메인 간 액세스에 대한 지원도 추가했습니다. 이 방법의 장점은 사용이 간편하고 비용이 저렴하며 인터페이스가 남용되지 않도록 효과적으로 보호할 수 있다는 것입니다.

위 내용이 여러분에게 도움이 되기를 바라며, 프로젝트에 행운이 따르길 바랍니다! 🎜

위 내용은 PHP는 Baidu Wenxin Yiyan 인터페이스 트래픽 모니터링 및 악성 요청 방지 솔루션을 구현합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.