微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

具有代理身份验证的 BrowserMobProxy 似乎挂起/阻止 HTTP 请求

如何解决具有代理身份验证的 BrowserMobProxy 似乎挂起/阻止 HTTP 请求

我在 Selenium Java 程序中使用 browserMobProxy 来验证用于 Web 浏览的 HTTP 代理。当我访问一个网站时,例如“google.com”,浏览器加载页面就好了。但是,当我在第一个页面加载后放置调试断点(如下行所示)并在调试模式下运行程序时,通过自动浏览器 UI 进行的后续 HTTP 交互似乎挂起。

具体来说,在调试模式下,当程序在下面的断点处时,我然后手动在浏览器中输入其他 URL(yahoo.com)并按回车键,这导致浏览器永远加载。我瞥了一眼网络标签,状态一直是“待定”。

但是,如果我在第一个“google.com”页面加载后通过 webDriver.navigate(ANOTHER_SITE) 以编程方式访问另一个站点,这会正常工作。

这会阻止我执行基于 UI 的操作,例如在第一次成功访问页面后单击“登录按钮”,因为后续操作将挂起。

这是 Network Tab Screenshot

代码片段如下:

browserMobProxy browserMobProxyServer = new browserMobProxyServer();
browserMobProxyServer.setTrustAllServers(true);
browserMobProxyServer.setChainedProxy(new InetSocketAddress(PROXY_HOST,PROXY_PORT));
browserMobProxyServer
    .chainedProxyAuthorization(PROXY_USERNAME,PROXY_PASSWORD,AuthType.BASIC);
browserMobProxyServer.start(9091);

Proxy seleniumProxy = ClientUtil.createSeleniumProxy(browserMobProxyServer);
String hostIp = Inet4Address.getLocalHost().getHostAddress();
String proxyAddress = hostIp + ":" + browserMobProxyServer.getPort();
seleniumProxy.setHttpProxy(proxyAddress);
seleniumProxy.setSslProxy(proxyAddress);

ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.setProxy(seleniumProxy);
chromeOptions.setAcceptInsecureCerts(true);

System.setProperty("webdriver.chrome.driver","src/main/resources/chromedriver");
WebDriver webDriver = new ChromeDriver(chromeOptions);
webDriver.navigate("http://www.google.com");
System.out.println("STOP");  <----- PUT BREAKPOINT HERE

我是否以某种方式错误地设置了 browserMobProxy 或者我遗漏了什么?

出于诊断目的,我使用以下内容

<dependency>
  <groupId>net.lightbody.bmp</groupId>
  <artifactId>browsermob-core</artifactId>
  <version>2.1.5</version>
</dependency>
<dependency>
  <groupId>org.seleniumhq.selenium</groupId>
  <artifactId>selenium-java</artifactId>
  <version>4.0.0-alpha-4</version>
</dependency>

以及最新版本的 Chrome 和 Chrome 驱动程序。

感谢任何指导,谢谢!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?