1

SVGeocoderを使用してiOS上のGoogleのジオコーディングサービスにアクセスしていますが、非常に奇妙な問題が発生しています。シミュレーターまたはwifiに接続された電話でテストする場合、ジオコーディングは完全に機能しますが、電話を3G / 4Gに切り替えると、「LIMITEXCEEDED」エラーが発生し始めます。私は3G/4Gを介して数十のリクエストを行っただけで、2500のリクエスト制限に近いところはありません。ここで何が起こっているのでしょうか?

前もって感謝します!

更新:各ジオコードリクエスト間の時間を遅らせることで問題を解決することになりました。リクエストの送信が速すぎると問題が発生する可能性があることはわかっていましたが、これを読むまで、同じQUERY_LIMIT_EXCEEDEDメッセージが返されることに気づきませんでした。

ただし、これでも3G/4Gではなくwifiで機能する理由についての質問には答えられません。

4

1 に答える 1

0

独自の IP アドレスとプロバイダーを使用するため、Wifi で機能しました。セルラー ネットワークでは、プロバイダーを介して要求を実行します。プロバイダーは通常、発信プロキシを使用します。そのため、Google がリクエストを受け取ると、Wi-Fi の場合とは異なり、独自の IP ではなく、すべての顧客のプロバイダーのプロキシの IP が表示されます。

少なくとも、経験とパケットキャプチャに基づいて、同様の問題が発生したときに最終的に得た結論です。

  • つまり、プロバイダーが運営するセルラー ネットワークから実行されたすべてのリクエストは、Google に対して同じ IP から送信されたように見えるため、少なくとも Google サーバーの観点からは、この特定の IP に対するリクエストの数が増加します。したがって、同じプロバイダーを使用しているあなた、あなたの隣人、および他の何百万人もの人々が Google にリクエストを送信し、このプロバイダーが同じ発信プロキシを使用している場合、Google はそれらの何百万人もの人々/リクエストに対して同じ IP を認識しているように見え、クォータ制限に達します。

  • Wi-Fi ネットワーク経由でリクエストを実行すると、セルラー ネットワーク プロバイダーの発信プロキシを経由せず、独自の発信 IP を持つことになり、"LIMIT EXCEEDED" エラーが表示される前に、より多くのリクエストを実行できるようになります。あなた自身のリクエストがカウントされます。

実際にはもう少し複雑だと思います。プロバイダーはおそらく複数の発信プロキシを持ち、負荷分散を使用して顧客のリクエストをそれらにディスパッチします。Google はおそらく主要な CN プロバイダーのプロキシを認識し、それに応じて割り当て制限を調整するデータベースを持っています。など…しかし、あなたはその考えを見ます。

于 2012-10-03T20:55:01.150 に答える