問題タブ [rate-limiting]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
google-app-engine - GoogleAppEngineクラウドインフラストラクチャでのStackExchangeAPI準拠のリクエストスロットルの実装
StackExchange用のGoogleChrome拡張機能を作成しています。これは、評判を追跡し、StackExchangeサイトでコメントの通知を受け取ることができるシンプルな拡張機能です。
現在、自分では対処できない問題がいくつか発生しています。私の拡張機能は、バックエンドとしてGoogle App Engineを使用して、StackExchangeAPIへの外部リクエストを行います。単一サイトでの新しいコメントに対する拡張機能からの各単一クライアント要求により、非スキートユーザーに対しても応答を準備するためにAPIエンドポイントに多くの要求が発生する可能性があります。平均的なユーザーは、Stack Exchangeネットワークの少なくとも3つのサイトにアカウントを持っており、10を超えるサイトもあります。
Stack Exchange APIにはリクエスト制限が
あります。1つのIPアドレスは、1日あたり特定の数(10,000)のAPIリクエストしか作成できません。
単一のIPアドレスから5秒間に30を超えるリクエストを行うと、APIはリクエストを遮断します。
すべてのリクエストを5秒あたり30にスロットルする必要があることは明らかです。現在、memcachedを使用した分散ロックに基づくリクエストスロットルロジックを実装しています。memcachedを単純なロックマネージャーとして使用して、GAEインスタンスのアクティビティを調整し、UrlFetchリクエストを抑制しています。
しかし、このような強力なインフラストラクチャを制限して、5秒あたり30を超えるリクエストを発行しないようにすることは大きな失敗だと思います。このようなAPIリクエスト率では、新しくて便利で便利な機能の開発を続けることができず、いつの日か正しく機能しなくなります。
現在、私のアプリには90人のユーザーがいて成長しており、リクエスト率を最大化する方法を考え出す必要があります。
既知のとおり、App Engineは、異なるIPの同じプールを介して外部UrlFetchリクエストを作成します。私の目標は、リクエストスロットル機能を記述して、APIの利用規約に確実に準拠し、GAE分散機能を利用することです。
したがって、私の質問は、APIの使用条件に準拠し、GAE分散機能を利用しながら、実用的なAPIスループットを最大化する方法です。
別のプラットフォーム/ホスト/プロキシを使用するようにアドバイスすることは、私の頭の中では役に立たないだけです。
jquery - IP アドレスによってレート制限されているサイトに対して (&callback=) を使用してクライアント側の getJSON() 呼び出しを行う場合、彼らはあなたのサイトまたはエンドユーザーのサイトを見ますか?
Web アプリが外部ソースへの Web サービス API 呼び出しを使用している場合、これらのソースの一部は、IP アドレスに基づいてレート制限を行います。
これらの呼び出しをクライアント側の JavaScriptから行う場合 (エンド ユーザーのブラウザー アクションによってトリガーされることを意味します) 、リモート サイト(JSON データを送り返す)はサイトの IP アドレスまたはエンドの IP アドレスを認識しますか? -user (この IP アドレスベースのレート制限のため)?
私の理解では&callback=
、データ ソース URL で を使用することにより、JSONP
リクエストを発行します。つまり、リモート ホストから見たアドレスはエンド ユーザーのアドレスであり、サイトのアドレスではありません。
例えば:
上記のような呼び出しは、Web アプリのサーバー IP アドレスからではなく、エンドユーザーの IP アドレスからのものと見なされるのは正しいですか?
php - パブリック API をレート制限するにはどうすればよいですか?
入力を受け取り、開発者に API のように使用してもらいたい出力を配信するアルゴリズムがあります。サービス妨害攻撃や過剰な使用を防ぐために、レート制限または保護が必要です。どのようなオプションがありますか? アカウントと API キーを提供する必要がありますか? それは一般的にどのように機能しますか?このシナリオでは他にどのようなアイデアが考えられますか?
asp.net-mvc-3 - ASP.NET MVC 3 での 1 日あたりの通話レート制限?
Jarrod Dixon のソリューション ( ASP.NET MVC で要求スロットリングを実装するための最良の方法は? ) で、1 秒あたりの呼び出し数のレート制限を実装する方法を見てきました。私は現在、N-calls-per-day に対して同様のフィルターを作成する方法を見つけようとしています。
私は、無料アカウントが 1 日あたり最大 100 回の呼び出しを受け取り、有料アカウントがより高いレート制限を取得する開発者 API を構築しています。MVC 3 で 1 日あたりの通話数のレート制限を行う最良の方法は何ですか?
twitter - Twitterユーザーのすべてのツイートを取得する、レート制限の問題
公開されている(ロックされていない)Twitterユーザーのすべてのツイートを取得しようとしています。私はRESTAPIを使用しています: http://api.twitter.com/1/statuses/user_timeline.json?screen_name = andy_murray&count = 200&page = 1 '
16ページ(ページパラメータ)を超えている間、それは許可します、したがって、3200ツイートを取得します。これは問題ありません。しかし、そのとき、そのような呼び出しのレート制限は1時間あたり150(!!!)であることがわかりました。これは、1時間に10未満のユーザークエリ(各16ページ)のようなものです。(uが認証する場合は350が許可されますが、それでも非常に少ない数です)
これを解決する方法について何かアイデアはありますか?ストリーミング\検索APIは適切ではないようです(?)。このデータを持っているように見えるWebサービスがいくつかあります。
ありがとう
twitter - ユーザーのホーム タイムラインとそのユーザーの詳細を 1 回のリクエストで取得する方法はありますか?
私のサイトには Twitter の「ウィジェット」があり、ユーザーはログインして、Twitter の詳細とホーム タイムラインを取り込むことができます。これには OAuth を使用していますが、レート制限について少し懸念があります。私のウィジェットでは、最新のデータが必要になるたびに 2 つのリクエストを行う必要があります。ユーザーの詳細 (および最新のステータス) の 1 つの要求 (ウィジェットの上部セクション) と、ホーム タイムラインの別の要求 (ウィジェットの下部セクション)。私が疑問に思っているのは、単一のリクエストで両方を取得する方法があるかどうかです。リクエストを 2 回行うのはもったいないことのように思えます。これを行う方法はありますか、それとも Twitter に機能をリクエストする必要がありますか? Twitter が各 API 要求/結果で常に最新のユーザー詳細を返すことが理にかなっていると考える人はいますか?
amazon-ec2 - botoElasticMapReduceスロットリングとレート制限
次のように、botoAPIを介してAmazonEMRからレート制限に数回遭遇しました。
操作は、ジョブフローの状態を要求する1回限りの操作であるため、レート制限は必要ありません。他の誰かがこの問題に遭遇しましたか?また、EC2とEMRのスロットリング/レート制限に関するドキュメントはあまりないようです...
twitter - レート制限なしで、1 時間あたり数千人の Twitter ユーザーのフォロワー数を取得するにはどうすればよいですか?
「users/show」を使用して「followers_count」を取得するか、「followers/ids」を実行して返された ID の数をカウントできることはわかっていますが、これらの方法は両方とも、匿名の場合は 1 時間あたり 150 リクエストにレート制限されています。 OAuth で署名されている場合は 350。
私が書いているプログラムは、Twitter Search API を使用して、ハッシュタグのすべての言及を探します。リアルタイムだけでなく過去のツイートを探す必要があるため、ストリーミング API ではなく Search API を使用しています。
ハッシュタグを含むツイートを見つけたら、ユーザーのハンドル名、ツイート ID、ツイートの時間、ユーザーのフォロワー数を保存したいと考えています。ユーザーごとのフォロワー数は Search API では返されないため、別の API 呼び出しを使用する必要があります。その余分な呼び出しが問題の原因です。
1 時間あたり 350 人を超えるユーザーのフォロワー数を取得する効率的な方法はありますか? (大量のツイートが入ってきます...)
ruby-on-rails - Herokuでのレート制限RESTリクエスト
悪用を避けるために、RailsアプリケーションのRESTAPIにレート制限を追加したいと思います。これについて少し調査した後、ベストプラクティスは、アプリケーション自体でこれをチェックするのではなく、この責任をWebサーバーに移すことであるように見えます。残念ながら、私の場合、Herokuでアプリケーションをホストしているため、これを行うことはできません。そのため、Webサーバーのセットアップを制御できません。
この場合、APIの乱用を防ぐために何をすべきですか?
ruby-on-rails - ユーザーごとのレールでの関数呼び出しのレート制限
これについてどうすればよいか誰にも分かりますか?オンラインで情報を見つけるのにかなり苦労しています。私が見つけた最高のものはcurbit it gemですが、それをアプリケーションごとに実装する方法しか考えられません。