私はSeleniumテストスイート内でBrowserMob-Proxyを使用しています。いくつかのテストでRefererを変更したいと思います。私は2.0のドキュメントからrequestInterceptorをMyProxyクラスに追加しましたが、エラーを生成しない間はRefererは変更されません。RequestInterceptorを追加してBrowserMob-Proxy 2.0でRefererを変更する方法
今のところ、私はプロキシが作成されたMyProxyクラスで動作するようにrequestInterceptorを取得しようとしています。最後に、各テストでRefererを指定できるようにしたいと思います。
誰かがrequestInterceptorを動作させるための提案があれば教えてください。ここにMyProxyクラスがあります。他のコード例がこの問題のトラブルシューティングに役立つかどうかお知らせください。
import org.openqa.selenium.Proxy;
import net.lightbody.bmp.core.har.Har;
import net.lightbody.bmp.proxy.ProxyServer;
import net.lightbody.bmp.proxy.http.BrowserMobHttpRequest;
import net.lightbody.bmp.proxy.http.RequestInterceptor;
public class MyProxy {
private ProxyServer proxy;
private boolean initialized;
public Har endCapture() throws Exception {
Thread.sleep(15000);
return this.proxy.getHar();
}
public Proxy getSeleniumProxy() {
return this.proxy.seleniumProxy();
}
public boolean isInitialized() throws Exception {
return this.initialized;
}
public void start() throws Exception {
int proxyPort = Integer.parseInt(System.getProperty("proxyPort"));
this.proxy = new ProxyServer(proxyPort);
this.proxy.start();
this.proxy.setCaptureHeaders(true);
this.proxy.setCaptureContent(true);
this.proxy.addRequestInterceptor(new RequestInterceptor() {
@Override
public void process(BrowserMobHttpRequest request, Har har) {
request.getMethod().removeHeaders("Referer");
request.getMethod().addHeader("Referer", "http://www.google.com");
}
});
this.initialized = true;
}
public void startCapture() throws Exception{
this.proxy.newHar("MyHar");
}
public void stop() throws Exception {
this.proxy.stop();
this.initialized = false;
}
}
には影響しませんしません。プロキシ2.1.0ベータ5私は私が解決することはできません紛争を取得しています。 littleProxyライブラリのみを使用できますか? – analyticsPierce
私はOKと同じコードを実行しているので、不要なアップグレードは必要ありません。 'process()'が呼び出されていることを確認しましたか?その場合、リクエストオブジェクトをログすることができます(getMethod()の結果は、addの後にその状態をチェックするために、実際にはHttpClientオブジェクトです)。構文は正常に見えます。最後に、どのように/あなたをチェックしているのですかReferer:それは問題でしょうか? –
また、複数のRefererヘッダーが意味をなさないと考えるので、remove/addを単に 'set'に置き換えることもできます。 –