리모트 디버깅 포트 사용중인 크롬 브라우저 여부 확인 방법

2024. 1. 31. 14:06IT관련

반응형

Selenium으로 자동화 하는 작업중 특정 remote debugging port로 실행된 브라우저 여부를 확인할 필요가 생겼다.하지만 실행된 브라우저를 찾을 방법이 딱히 떠오르지 않아서 매번 브라우저를 실행하고는 그 포트로 연결해서 작업후 창을 정리하도록 했다. 그랬더니 매번 불필요하게 빈 브라우저가 보였다가 사라지게 되었다.

방법을 고민하던 차에 netstat 명령어가 생각이 나서 문제를 해결할 수 있었다.

netstat는 컴퓨터의 네트워크 및 포트에 대한 상태를 확인할 수 있는 명령어다.

 

Remote debugging port로 9222를 지정했는데, 이 포트가 열려 있다면 크롬 브라우저가 실행되어 있는거고 없다면 브라우저를 실행시키면 된다.

netstat로 9222 포트가 열려 있는지 확인하는 명령어는 다음과 같다.

Powershell
PS c:\> netstat -ano | findstr "127.0.0.1:9222" | findstr "LISTENING"
 TCP    127.0.0.1:9222         0.0.0.0:0              LISTENING

MS DOS
c:\> netstat -ano | find "127.0.0.1:9222" | find "LISTENING"
 TCP    127.0.0.1:9222         0.0.0.0:0              LISTENING

 

위와 같이 응답이 온다면 9222 포트로 실행된 크롬이 있다고 보면 된다.

 

코드로 작성하면 다음과 같다.

import subprocess
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager

PORT = 9222
PROFILE = r'C:\remote-profile'

if __name__ == "__main__":
    cmd = f'netstat -ano | findstr 127.0.0.1:{PORT} | findstr LISTENING'
    proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, shell=True)
    out, err = proc.communicate()

    # out 정보가 없다는건 9222 포트를 사용중인 프로그램이 없다는 뜻.
    if len(out) <= 0:
        cmd = r'C:\Program Files\Google\Chrome\Application\chrome.exe'
        cmd += f' --user-data-dir={PROFILE} --remote-debugging-port={PORT}'
        subprocess.Popen(cmd) # 크롬 실행
        
    # 크롬 드라이버 생성
    chrome_options = webdriver.ChromeOptions()
    chrome_options.add_experimental_option('debuggerAddress', f'127.0.0.1:{PORT}')
    driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), 
                            options=chrome_options)
    driver.get('https://www.naver.com') # 네이버로 이동

 

 

반응형