8

私が取り組んでいるプロジェクトでは、別の国から来たように見せるために、IP アドレスを偽造する必要があります。

基本的に、検出された IP が英国からのものである場合はポップアップ A を表示し、検出された IP が英国以外からのものである場合はポップアップ B を表示します。

これを自動化できるようにしたいです。現在、すべてのブラウザー自動化テストは cucumber/watir で記述されており、同じフレームワークを使用するソリューションを取得したいと考えています。

これを行う方法を知っている人はいますか?

ありがとう!

4

4 に答える 4

4

一般的に言えば、HTTP リクエストが返される結果を気にする場合、IP スプーフィングは不可能です。

http://en.wikipedia.org/wiki/IP_address_spoofing

これがテスト用である場合は、「英国内」および「英国外」のユース ケースごとに、ローカル ネットワークで仮想マシンを実行できます。変更されない各 VM にローカル IP アドレスを割り当てます。

各 VM で HTTP プロキシ サーバーを実行し、単体テストをテスト ケースに応じて異なるプロキシ サーバー経由で接続します。

オーバーライド ロジックをジオロケーション コードに追加して、これらの既知のローカル IP アドレスがそれぞれのテスト場所の一部であると見なします。正常に動作するプロキシ サーバーには、プロキシ サーバーの IP アドレスと元の IP アドレスの両方が要求に含まれることに注意してください。この単体テストの地理位置情報には、プロキシ サーバーの IP アドレスを必ず使用してください (通常、本番の地理位置情報に使用できる場合は、元の IP アドレスを使用することをお勧めします)。

このタイプの制御を回避することは誰にとっても非常に簡単であることに注意してください。非常に少額の料金で、元の IP アドレスを意図的に転送しない英国の HTTP プロキシ サーバーにアクセスすることが可能です。

于 2012-12-13T19:01:07.973 に答える
1

最も簡単な解決策は、英国と他の国を切り替えることができる魔法のリクエストパラメータを追加することです。たとえば、次のように「UKモード」を有効にするとします。

browser.goto "localhost/?country=UK"

次に、サーバー側で、そのパラメーターをチェックするためのifステートメントが必要です。擬似コードの場合:

if get_parameters["country"] == "UK"
  enable_uk_mode
end

これにより、「 UKモード」またはその他のモードGET parameterをオンにするように指定することができます。すべてのVMとプロキシサーバーのインストールと管理、およびそれらのすべての構成の管理は、アプリケーションの開発モードに制御ロジックを追加するよりもはるかに時間がかかるため、私は通常このルートを使用します。

于 2012-12-14T14:35:39.773 に答える
0

検出方法によっては、ブラウザ言語を使用する必要がある場合があります。この種のコード:

profile = Selenium::WebDriver::Firefox::Profile.new
profile['intl.accept_languages'] = "fr"
browser = Watir::Browser.new :firefox, :profile => profile

IPについては、プロキシの使用を検討してみませんか?

profile = Selenium::WebDriver::Firefox::Profile.new
profile.proxy = Selenium::WebDriver::Proxy.new :http => 'my.proxy.com:8080', :ssl => 'my.proxy.com:8080'
browser = Watir::Browser.new :firefox, :profile => profile

両方を作成する必要があると思います。実際のユーザーが自分のブラウザーを使用していたようになります。

于 2012-12-14T20:32:06.790 に答える