driver$open() 전에 프록시를 브라우저 세션 기능으로 제공합니다. WebDriver 서버가 세션 프로토콜을 받아들이는 RSelenium 배포에서의 예입니다:

browser_proxy <- list(
  proxyType = 'manual',
  httpProxy = 'proxy.example:8080',
  sslProxy = 'proxy.example:8080'
)

driver <- RSelenium::remoteDriver(
  remoteServerAddr = 'webdriver.example',
  port = 4444L,
  browserName = 'chrome',
  extraCapabilities = list(proxy = browser_proxy)
)
driver$open()

remoteServerAddr 는 WebDriver 서비스를 지정합니다. 이 기능은 브라우저가 다음에 어디로 가는지를 설명합니다. R의 HTTP 프록시 설정만으로는 그 브라우저 경로가 구성되지 않습니다.

host:port 은 httpProxy 와 sslProxy 에 사용합니다. 후자는 HTTPS 목적지를 고르며 TLS로 보호되는 프록시 수신기를 뜻하지 않습니다. HTTP 프록시 목록의 공개 HTTP 후보는 브라우저 호스트가 도달할 수 있다면 이 필드에 호스트와 포트를 제공합니다.

어느 실패가 먼저 발생했는가

세션 열기가 거부되면 프록시 엔드포인트를 바꾸기 전에 프로토콜 호환성을 확인합니다. RSelenium의 remoteDriver 소스는 구식 desiredCapabilities 을 보냅니다. 임의의 최신 WebDriver 서버는 경로를 시험할 브라우저가 생기기 전에 그 형식을 거부할 수 있습니다.

세션이 열리지만 탐색이 실패하면 실제 브라우저 호스트에서의 도달성을 확인합니다. 컨테이너나 Grid 노드에서는 localhost 이 그 노드를 뜻하며 R 워크스테이션이 아닙니다.

관련 글