0

サード パーティの API (Web サービス) をデータ ソースとして使用する ASP.NET MVC Web サイトを作成しています。これは読み取り専用で、これまでデスクトップ アプリケーション (ほとんどが C#) を使用している個人によってアクセスされてきました。情報を一元化し、ユーザーに履歴情報を提供し、特定の反復タスクを自動化し、ユーザー間でより簡単に情報を共有できるようにするために、Web サイトを使用してこの API を使用したいと考えています。

現在、デスクトップ クライアントではスロットリングが発生しており、クライアントを使用して API に対して繰り返しリクエストを行うと、IP がスロットリングまたは禁止されます。私のウェブサイトから API へのリクエストを行った場合、その IP は重大な使用が見られた瞬間に禁止されると思います。

私が API 所有者と何かを解決できないと仮定しましょう。おそらく、この問題を回避する最も簡単な方法は、AJAX を使用してすべての API アクセスを行うことです。ユーザーがウェブサイトにアクセスすると、AJAX を使用して API にリクエストを送信し、それを私のウェブサイトに投稿します。私はこの考えが複数の理由で好きではありません.1 つ目は、速度が遅いこと、2 つ目は、私の Web サイトに送信されたデータが本物であることを保証できなかったことです。悪意のあるユーザーは、何らかの理由で、悪い情報を送信する可能性があります。

だから私は、中間者を確立するのがより良い考えだと思いました. ユーザーは引き続き AJAX リクエストを作成する必要がありますが、プロキシまたは私が制御する他の何かに送信し、実際の API に転送して応答をインターセプトするので、もう少し確実にすることができます。私が取得したデータは本物でした。

そのような「プロキシ」を作成することは可能ですか? それは何を伴うでしょうか?.NET テクノロジを使用して実現したいと考えていますが、あらゆるアイデアを受け入れます。

編集:「プロキシ」という言葉を使用して混乱を招いたようです。プロキシは必要ありません。必要なのは、API からの応答をインターセプトできるパススルーです。クライアントにリクエストを送信してからアップロードすることもできますが、クライアントを信頼したくありません。API を信頼したいのです。

これを短い形式で説明しましょう。現在の情報を取得するために API に要求できるクライアントがユーザーのマシンにあります。同じことを行う Web サイトを作成したいのですが、API Web サービスが、以前は 10 の異なる IP から 10 人のユーザーに対して 10 のリクエストを受信して​​いたのに、現在は 10 に対して 10 のリクエストを受信して​​いることに気付く可能性を考慮しています。以前と同じように、すべてのリクエストがユーザーリクエストによって開始されたとしても、1 つの IP からユーザーをブロックし、その IP をボットと見なしてブロックします。これを回避する最も簡単な方法は、ユーザーにリクエストを送信してから、レスポンスをアップロードしてもらうことですが、そうすると、クライアントからデータをやみくもに受け入れることを余儀なくされます。 . 代わりに、リクエストを API に転送してユーザーの IP を保持するだけでなく、レスポンスを傍受してデータが信頼できるものであることを証明できるものを配置できる場合は、それが望ましいでしょう。ただし、これを行うためのソフトウェア メカニズムは思いつきません。別のレイヤーで行う必要があるようです。

法的な懸念に関しては、これは多くのアプリケーションとユーザーで広く使用されている API です (API を使用して見つけた他の Web サイトもあります) が、API の技術に関するフォーラムの投稿以外に、利用規約などの法的な情報を見つけることができませんでした。 「リクエストを繰り返さないでください、キャッシュの指示に従ってください」などのサポートセクション。これがWebサービスの違法または不適切な使用であることを示すものは何も見つかりません.

4

1 に答える 1