Java BrowserMobProxy:如何确定代理服务器的IP?

Java BrowserMobProxy:如何确定代理服务器的IP?,java,docker,selenium,proxy,devops,Java,Docker,Selenium,Proxy,Devops,我在项目中实现了BrowserMobProxy。此逻辑将IP地址用于代理连接和测试UI web服务(用于保存请求/响应统计信息的代理)。之前一切正常,但我们重新启动docker,代理的IP地址已更改。现在我需要为代理找到一个新的IP地址 使用IP地址的代码 publicstaticvoidstartproxy服务器(字符串地址){//address=“172.17.0.2” if(browserMobProxy.isStarted()){ browserMobProxy.stop(); } 试一

我在项目中实现了
BrowserMobProxy
。此逻辑将IP地址用于代理连接和测试UI web服务(用于保存请求/响应统计信息的代理)。之前一切正常,但我们重新启动docker,代理的IP地址已更改。现在我需要为代理找到一个新的IP地址

使用IP地址的代码

publicstaticvoidstartproxy服务器(字符串地址){//address=“172.17.0.2”
if(browserMobProxy.isStarted()){
browserMobProxy.stop();
}
试一试{
browserMobProxy.start(9090,Inet4Address.getByName(地址));//{1}
useExclusivePort=browserMobProxy.getPort();
}捕获(例外e){
抛出新的运行时异常(e);
}
}
docker重新启动后,项目开始在
{1}
行失败。 我开始在服务器上搜索新IP。不幸的是,我无法使用docker映像中的
ifconfig
命令,因为该命令没有安装在docker映像中。因此,我通过以下方式从服务器确定地址:

在我使用IP 172.17.0.2之后,代码运行良好,我希望我解决了这个问题,但结果我与这个代理失去了连接-在UI上,我得到了以下结果:

所以我完全糊涂了:

  • 在docker映像重新启动之前,所有这些都可以正常工作
  • 旧IP看起来像172.19.0.5,但代码现在失败了
  • 我“发现”了新的IP 172.17.0.2,并用它编写了代码
  • 我不确定我是否确定了正确的IP,因为所有旧IP都是从172.19.0开始的。{4,5,8}
  • 我与新IP没有连接
  • 我不知道或者我发现了正确的IP,为什么它适合代码,但不适合连接
  • 该项目使用Jenkins docker image进行部署。浏览器从selenium网格开始
  • #问题:


    如何找到可用于代理连接的正确IP?

    还有其他命令,您可以使用这些命令查找服务器运行的IP。检查您是否有权访问以下任何内容

    首先你可以试试

    netstat -an
    
    这将为您提供服务器正在侦听的所有IP以及端口,以及服务器上连接的IP以及端口

    如果这个不行,试试这个

    然后试试看

    ip addr
    
    这将为您提供与ifconfig类似的输出

    最后你可以试一下

    docker inspect -f '{{ .NetworkSettings.IPAddress }}' containerID
    

    这将为您提供docker的网络接口

    您需要一种通过编程方式传入ipaddress的方法,就像使用env VARABLE或命令行参数一样。@DMart Ok。如何知道我需要通过哪个IP?看起来你已经设置了一个外部代理,是吗?我们需要更多的细节。这看起来不像browsermob代理,它通常只是用来处理请求/响应。@DMart我自己没有设置代理。也许docker图像确实如此,您使用的浏览器是什么?我得到错误:模板解析错误:模板::1:18:执行“”at:map在最后一个命令中没有键“NetworkSettings”的条目。你能向我澄清一下吗?