새소식

컴퓨터공학 💻/Python

[Python] 크롬 103버전에서 발생하는 드라이버 오류 임시 해결방안(selenium crawling) unknown error: cannot determine loading status from unknown error: unexpected command response

  • -

selenium으로 크롤링을 하다보면 종종 마주치는 오류이다. 크롬의 버전 업데이트로 인해 크롬 드라이버 버전과 충돌하여 발생하는 문제이다. 셀레니움의 문제가 아닌 크롬의 문제이고 100이전 버전부터 늘 발생했던 문제인데 여간 귀찮은게 아니다.

Selenium.common.exceptions.WebDriverException: Message: unknown error: unexpected command response
  (Session info: chrome=103.0.5060.53)
Stacktrace:
Backtrace:
	Ordinal0 [0x007E6463+2188387]
	Ordinal0 [0x0077E461+1762401]
	Ordinal0 [0x00693D78+802168]
	Ordinal0 [0x00687210+750096]
	Ordinal0 [0x0068675A+747354]
	Ordinal0 [0x00685D3F+744767]
	Ordinal0 [0x0068557C+742780]
	Ordinal0 [0x00699BF3+826355]
	Ordinal0 [0x006ECF6D+1167213]
	Ordinal0 [0x006DC5F6+1099254]
	Ordinal0 [0x006B6BE0+945120]
	Ordinal0 [0x006B7AD6+948950]
	GetHandleVerifier [0x00A871F2+2712546]
	GetHandleVerifier [0x00A7886D+2652765]
	GetHandleVerifier [0x0087002A+520730]
	GetHandleVerifier [0x0086EE06+516086]
	Ordinal0 [0x0078468B+1787531]
	Ordinal0 [0x00788E88+1805960]
	Ordinal0 [0x00788F75+1806197]
	Ordinal0 [0x00791DF1+1842673]
	BaseThreadInitThunk [0x75F7FA29+25]
	RtlGetAppContainerNamedObjectPath [0x77987A9E+286]
	RtlGetAppContainerNamedObjectPath [0x77987A6E+238]

보통은 크롬 버전과 드라이버 버전을 모두 최신 버전으로 올려주면 되는데 문제는 현재 올릴 버전이 없는데 오류가 발생한다..

최신 버전이 103인데 stackoverflow에서는 크롬을 104 베타버전으로 올리고 크롬 드라이버 104를 다운받는 것으로 제시한다. 그렇게 하면 해결은 할 수 있다. 다음의 링크로 다운받을 수 있다.

 

크롬 베타 다운

https://www.google.com/intl/ko/chrome/beta/

크롬 드라이버 다운

https://chromedriver.storage.googleapis.com/index.html?path=104.0.5112.20/ 

 

다운 받고 드라이버 옵션을 설정해주면 된다.

그런데, 개인적으로는 베타 버전은 언젠가 업데이트 될 버전이기도 하고 그래서 그냥 다음 방법으로 해결했다.

(아 그리고, 깃허브에 동일한 문제를 겪고 있는 사람들이 많더라)

 

# 첫번째 방법. 크롬과 드라이버를 모두 102 버전으로 다운그레이드 하기.

1. 먼저 크롬 자동업데이트를 끈다. 실행창에 시스템 구성을 입력해 실행하고 Google 업데이트 서비스 2가지를 해제하면 된다. (나중에 104버전이 릴리즈 되면 보안을 위해 그때 다시 켜주자)

2. 크롬을 삭제한다.

 

3. 아래 링크에서 크롬 102버전을 다운로드 하고 설치해준다.

https://google-chrome.en.uptodown.com/windows/versions

 

Older versions of Google Chrome (Windows) | Uptodown

103.0.5060.66 Jun 29th, 2022 103.0.5060.53 Jun 22nd, 2022 102.0.5005.63 May 25th, 2022 101.0.4951.64 May 12th, 2022 101.0.4951.41 May 3rd, 2022 100.0.4896.88 Apr 12th, 2022 100.0.4896.75 Apr 9th, 2022 99.0.4844.151 Mar 3rd, 2022 98.0.4758.102 Feb 15th, 202

google-chrome.en.uptodown.com

 

4. driver를 다음 코드로 설정해준다. 참고로, 크롬드라이버를 로컬 파일에서 가져오는 것이 아닌, webdriver 모듈을 사용하는 방법이기에 별도로 크롬드라이버를 다운받을 필요는 없다. webdriver를 사용하고 있지 않다면 설치해주자. 편리하다.

driver = webdriver.Chrome(executable_path=ChromeDriverManager(version='102.0.5005.27').install(), chrome_options=options)

+ 추가로 크롬 설치링크에서는 102.0.5005.63 밖에 없어서 크롬 드라이버를 102.0.5005.63으로 넣으라고 하는데 온라인 스토리지에 없는 것 같다. 그냥 헤드버전만 맞춰도 실행은 잘 되니 무시한다.

 

# 두번째 방법. 셀레니움 webdriver를 크롬이 아닌 Edge 브라우저로 연결하기.

시도는 안해봤는데 해결된다고 한다.

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.