ホームページ  >  記事  >  バックエンド開発  >  PHP は、Baidu Wenxin Yiyan インターフェイスのトラフィック監視と悪意のあるリクエスト防止ソリューションを実装しています

PHP は、Baidu Wenxin Yiyan インターフェイスのトラフィック監視と悪意のあるリクエスト防止ソリューションを実装しています

PHPz
PHPzオリジナル
2023-08-26 15:48:23952ブラウズ

PHP は、Baidu Wenxin Yiyan インターフェイスのトラフィック監視と悪意のあるリクエスト防止ソリューションを実装しています

PHP は、Baidu Wenxin Yiyan インターフェイスのトラフィック監視と悪意のあるリクエスト防止ソリューションを実装します

Yiyan インターフェイスは、Baidu が提供する非常に人気のある API です。このインターフェイスを呼び出すことで、次のインターフェイスを取得できます。ランダムなWen Xin Yi Yan。しかし、実際のアプリケーションでは、インターフェースへのアクセス数が多いため、過剰なトラフィックや悪意のあるリクエストの問題に直面する可能性があります。この記事では、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;
?>

上記のコードでは、最初に getOneWord() 関数を作成しました。この関数は、Baidu Wenxin Yiyan インターフェイスを呼び出して Wenxin Yiyan を返すために使用されます。言葉。次に、checkIP() 関数を使用して、クライアントの IP アドレスがアクセス頻度制限を超えているかどうかを確認します。ここでは、IP アドレスをテキスト ファイルに記録し、期限切れの記録を定期的に消去します。特定の IP アドレスに対するリクエストの数が制限 (60 秒以内に最大 100 回のアクセス) を超えると、エラー メッセージが返されます。そうでない場合は、新しいリクエスト レコードが追加されます。

次に、PHP スクリプトの先頭に header('Access-Control-Allow-Origin: *') を追加しました。これは、クロスドメイン アクセスを許可し、クライアント呼び出しを容易にするためです。 .インターフェース。最後に、呼び出し結果に基づいて、対応するコンテンツを返します。

このソリューションの効果をテストするには、上記のコードを PHP ファイルとして保存し、ブラウザーでそのファイルにアクセスしてテキスト文を取得します。同時リクエストをシミュレートするには、複数のブラウザ ウィンドウまたはツールを使用してこのインターフェイスに同時にアクセスし、リクエストが多すぎることを示すエラー メッセージが表示されるかどうかを観察します。

上記のソリューションを通じて、Baidu Wenxin Yiyan インターフェイスのトラフィック監視と悪意のあるリクエストの防止機能を実装しました。アクセス頻度の制限は、実際のリクエスト量に合わせて必要に応じて調整できます。同時に、クライアント呼び出しを容易にするために、このインターフェイスへのクロスドメイン アクセスのサポートも追加しました。この方法の利点は、使用が簡単で低コストであり、インターフェイスの悪用を効果的に保護できることです。

上記の内容があなたのお役に立てば幸いです。そしてあなたのプロジェクトの成功を祈っています。

以上がPHP は、Baidu Wenxin Yiyan インターフェイスのトラフィック監視と悪意のあるリクエスト防止ソリューションを実装していますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。