• java+selenium使用BrowserMobProxy代理

    發表于:2024-2-19 09:26

    字體: | 上一篇 | 下一篇 | 我要投稿

     作者:fx9590    來源:CSDN

      java selenium目前想要監聽網絡請求和修改響應返回內容BrowserMobProxy代理是一個很好的選擇,具體原理可以自行百度代理服務的原理,selenium4的阿爾法版本也開始添加類似的功能了,不過目前不是很完善,代碼方面使用起來也很方便,下面直接看代碼吧。
      BrowserMobProxy在和selenium集成的使用中性能消耗比較大其他方面暫時沒有發現其他問題在git上看到有一個2.1.6的版本但是沒有上傳,目前最新的版本是2.1.5也是2017年的代碼了。
      package com.watchmen.selenium;
      import java.util.List;
      import org.openqa.selenium.Proxy;
      import org.openqa.selenium.WebDriver;
      import org.openqa.selenium.chrome.ChromeDriver;
      import org.openqa.selenium.chrome.ChromeOptions;
      import io.netty.handler.codec.http.HttpRequest;
      import io.netty.handler.codec.http.HttpResponse;
      import net.lightbody.bmp.BrowserMobProxy;
      import net.lightbody.bmp.BrowserMobProxyServer;
      import net.lightbody.bmp.client.ClientUtil;
      import net.lightbody.bmp.core.har.Har;
      import net.lightbody.bmp.core.har.HarEntry;
      import net.lightbody.bmp.core.har.HarNameValuePair;
      import net.lightbody.bmp.core.har.HarRequest;
      import net.lightbody.bmp.core.har.HarResponse;
      import net.lightbody.bmp.filters.RequestFilter;
      import net.lightbody.bmp.proxy.CaptureType;
      import net.lightbody.bmp.util.HttpMessageContents;
      import net.lightbody.bmp.util.HttpMessageInfo;
      /**
       * 
       * @author kk
       * @Description selenium使用browserMobProxy代理
       */
      public class SeleniumBrowserMobProxy {
      public static void main(String[] args) {
      String webDriverDir = "瀏覽器驅動路徑";
      // 加載驅動
      System.setProperty("webdriver.chrome.driver", webDriverDir);
      BrowserMobProxy browserMobProxy = new BrowserMobProxyServer();
      browserMobProxy.start();
      browserMobProxy.enableHarCaptureTypes(CaptureType.REQUEST_CONTENT, CaptureType.RESPONSE_CONTENT);
      browserMobProxy.setHarCaptureTypes(CaptureType.RESPONSE_CONTENT);
      browserMobProxy.newHar("kk");
      Proxy seleniumProxy = ClientUtil.createSeleniumProxy(browserMobProxy);
      // 設置瀏覽器參數
      ChromeOptions options = new ChromeOptions();
      options.setProxy(seleniumProxy);
      options.setAcceptInsecureCerts(true);
      options.setExperimentalOption("useAutomationExtension", false);
      // 創建驅動對象
      WebDriver driver = new ChromeDriver(options);
      // 監聽網絡請求
      browserMobProxy.addRequestFilter(new RequestFilter() {
      @Override
      public HttpResponse filterRequest(HttpRequest request, HttpMessageContents contents,
      HttpMessageInfo messageInfo) {
      // 打印瀏覽器請求的url和請求頭
      System.out.println(request.getUri() + " --->> " + request.headers().get("Cookie"));
      return null;
      }
      });
      // 打開鏈接
      driver.get("https://www.baidu.com/");
      // 獲取返回的請求內容
      Har har = browserMobProxy.getHar();
      List<HarEntry> entries = har.getLog().getEntries();
      for (HarEntry harEntry : entries) {
      HarResponse response = harEntry.getResponse();
      HarRequest request = harEntry.getRequest();
      String url = harEntry.getRequest().getUrl();
      List<HarNameValuePair> headers = request.getHeaders();
      for (HarNameValuePair harp : headers) {
      System.out.println(harp.toString());
      }
      }
      }
      }
      maven依賴
        <dependency>
      <groupId>net.lightbody.bmp</groupId>
      <artifactId>browsermob-core</artifactId>
      <version>2.1.5</version>
      </dependency>
      
      <dependency>
      <groupId>net.lightbody.bmp</groupId>
      <artifactId>browsermob-legacy</artifactId>
      <version>2.1.5</version>
      </dependency>
             
              <dependency>
          <groupId>org.seleniumhq.selenium</groupId>
          <artifactId>selenium-java</artifactId>
          <version>4.0.0-alpha-7</version>
      </dependency>
      </dependency>
      本文內容不用于商業目的,如涉及知識產權問題,請權利人聯系51Testing小編(021-64471599-8017),我們將立即處理
    《2023軟件測試行業現狀調查報告》獨家發布~

    關注51Testing

    聯系我們

    快捷面板 站點地圖 聯系我們 廣告服務 關于我們 站長統計 發展歷程

    法律顧問:上海蘭迪律師事務所 項棋律師
    版權所有 上海博為峰軟件技術股份有限公司 Copyright©51testing.com 2003-2024
    投訴及意見反饋:webmaster@51testing.com; 業務聯系:service@51testing.com 021-64471599-8017

    滬ICP備05003035號

    滬公網安備 31010102002173號

    久久97久久97精品免视_欧洲国产伦久久久久久_91麻豆精品国产自产在线观_伊人久久大香线蕉综合av