Rate Limiter

TsgcWSRateLimiter ― サーバーエンドポイントを過剰なトラフィック、悪用、スクレイピングから保護する多機能レートリミッターコンポーネントです。3 つのアルゴリズム、4 つのスコープ、長期クォータ、標準準拠の HTTP 429 レスポンスに対応します。

TsgcWSRateLimiter

トークンバケット方式のレートリミッターです。アタッチした任意の WebSocket または HTTP サーバーで、クライアントごと(または IP ごと)の 1 秒あたりリクエスト数を制限します。

コンポーネントクラス

TsgcWSRateLimiter

プロトコル

サーバーサイドのアドミッション制御 ― 任意の sgc サーバーにアタッチします。

プラットフォーム

Windows, macOS, Linux, iOS, Android

エディション

Professional / Enterprise

コンポーネントを配置してプロパティを設定するだけ

レートとバーストを設定し、OnRateLimited をフックして、サーバーにアタッチします。

uses
  sgcWebSocket, sgcWebSocket_Server, sgcRateLimiter;

var
  RL: TsgcWSRateLimiter;
  WSServer: TsgcWebSocketHTTPServer;
begin
  RL := TsgcWSRateLimiter.Create(nil);
  RL.RequestsPerSecond := 20;
  RL.BurstSize         := 50;
  RL.OnRateLimited     := DoRateLimited;

  WSServer := TsgcWebSocketHTTPServer.Create(nil);
  WSServer.Port := 80;
  WSServer.RateLimiter := RL;
  WSServer.Active := True;
end;

主な機能

公開プロパティ 13 個、メソッド 12 個、イベント 3 個 ― コンポーネントリファレンスより。

診断

公開プロパティ:Stats

コア

プロパティ:Enabled

アルゴリズム

プロパティ:TokenBucketSlidingWindowFixedWindow

スコープ

プロパティ:PerIPPerAPIKeyPerUser

レスポンス

プロパティ:Response

永続化

プロパティ:StorageFile

ドキュメントとデモ

コンポーネントリファレンスへのディープリンク、すぐに実行できるデモプロジェクト、体験版のダウンロードをご利用ください。

デモプロジェクト — 01.WebSocket\09.RateLimiter すぐに実行できるサンプルプロジェクトです。sgcWebSockets パッケージに同梱されています — 下のリンクから体験版をダウンロードしてください。
技術ドキュメント (PDF) 機能、クイックスタート、Delphi および C++ Builder のコードサンプルと一次情報源リファレンス — 本コンポーネントのみ。
ユーザーマニュアル (PDF) ライブラリ内のすべてのコンポーネントを網羅した包括的なマニュアルです。

エンドポイントを不正アクセスから保護する

体験版をダウンロードして、数分で sgcWebSockets サーバーにレート制限を追加しましょう。