파이썬 크롤링 쿠팡 로그인 접속 거부 문제 해결 방법

 

파이썬 셀레니움 쿠팡 로그인 안되는 문제 (Access Denied)

파이썬 셀레니움으로 쿠팡 크롤링하시는 분들 계실텐데요.

어느 날 갑자기 쿠팡 접속이 거부되는 일이 발생하기도 합니다.

로그인 페이지까지는 잘 접속했지만,

아이디와 비밀번호를 입력 후에 로그인 버튼을 누르면 접속이 거부됩니다.

이번 글에서는 그 이유와 해결 방법에 대해 소개해드리겠습니다.

 

 

 

파이썬 셀레니움 Selenium 쿠팡 로그인 Access Denied 이유

저의 경우는 파이썬 셀레니움 크롤링 코드를 동작시키면 아래의 오류 화면이 떴습니다.

Access Denied

You don't have permission to access "http://www.coupang.com/np/search?" on this server.
Reference #18.af973b17.1651233647.2accc2a8

 

쿠팡 로그인 접속 불가 Access Denied
쿠팡 로그인 접속 불가(Access Denied)

 

해결방법

 

해결방법은 두 가지가 있습니다.

먼저 아래의 첫 번째 방법을 적용해보고 만약 안된다면 두 번째 방법을 적용해 보세요.

 

1. 크롤링 방지 설정을 undefined로 변경하기

driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", {"source": """ Object.defineProperty(navigator, 'webdriver', { get: () => undefined }) """})

 

execute_cdp_cmd 쿠팡 크롤링 방지 설정 변경
쿠팡 크롤링 방지 설정 변경

 

 

위 처럼 코드를 추가하면 쿠팡에서 동작하는 크롤링 방지 설정을 "undefined"로 변경하여 로그인을 가능하게 해줍니다.

 

 

 

 

 

 

 

 

2. 기본 Chrome.exe 로 디버깅 크롬 동작하기

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import subprocess
import shutil

# 디버거 크롬 동작
subprocess.Popen(r'C:\Program Files\Google\Chrome\Application\chrome.exe --remote-debugging-port=9222')

option = Options()
option.add_experimental_option("debuggerAddress", "127.0.0.1:9222")

 

이 방법은 크롬드라이버(chromedriver.exe)를 사용하는게 아니라 기본 크롬 실행파일을 사용하는 방법입니다.

크롬드라이버를 이용해 크롤링을 하게 되면 아래 처럼 생긴 창이 생성될 겁니다.

 

Chrome 자동화 테스트 소프트웨어 제어
ChromeDriver 이용 시, 안내 문구

 

 

 

빨간색으로 밑줄 친 "Chrome이 자동화된 테스트 소프트웨어에 의해 제어되고 있습니다" 문장이 보이시죠?

이 문장 그대로 현재 생성된 크롬 창은 자동화된 테스트 소프트웨어라는 말입니다.

이게 왜 문제가 되면 이 "자동화된 테스트 소프트웨어"라는 정보를 쿠팡이 수집할 수 있습니다.

쿠팡 측에서 자동화된 크롤링 접속을 인지하고 접속을 차단하는 것입니다.

그래서 크롬드라이버가 아닌 기본 크롬 프로그램으로 접속하게 되면 이 문제를 해결할 수 있습니다.

위의 코드에서 크롬(chrome.exe)의 경로는 사용자마다 다릅니다.

 

C:\Program Files\Google\Chrome\Application\chrome.exe

C:\Program Files (x86)\Google\Chrome\Application\chrome.exe

 

아마 위의 둘 중 하나일 가능성이 높습니다.

만약 아니라면 PC에 크롬을 설치한 경로를 찾아서 해당 경로를 코드를 작성해주시면 됩니다.

 

 

두 방법 모두 잘 되는 것을 확인했고, 혹시 두 방법 모두 안되는 분 계시면 댓글 남겨주세요 :)

 

 

 

 

 

 

2-1. 기본 Chrome.exe 로 디버깅 크롬 동작하기 추가 설명

※ 2번 방법에 대해 공통적인 질문이 있어 추가 작성합니다.

 

2번의 코드를 작성한 후에 driver 변수 사용이나 url에 접근하는 get() 함수를 어떻게 사용해야하는지 질문이 있네요.

제가 코드 전체를 작성했으면 여러분들께 혼란을 드리지 않았을텐데 죄송합니다.

2번의 방법은 간단합니다.

그냥 2번 코드를 원래 driver 사용하시던 코드 위에 추가만 하시면 됩니다.

2번 코드에 따라서 driver 변수 사용이나 get()함수 사용 방법이 달라지거나 새로운 방법이 필요한게 아닙니다.

따라서 2번 코드의 전체 코드를 다시 작성드리면 아래와 같습니다.아래 코드에서 실제 크롬 실행파일 경로나 크롬드라이버 경로는 여러분들의 실제 경로에 맞게 변경하시면 됩니다.

 

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import subprocess
import shutil

subprocess.Popen(r'C:\Program Files (x86)\Google\Chrome\Application\chrome.exe --remote-debugging-port=9222 --user-data-dir="C:\chrometemp"')

options = webdriver.ChromeOptions()
options.add_experimental_option("debuggerAddress", "127.0.0.1:9222")

driver = webdriver.Chrome('c:\\chromedriver.exe', chrome_options=options)

driver.implicitly_wait(3)

url = 'https://www.coupang.com'
driver.get(url)

 

 

이 코드를 사용해도 크롤러가 정상적으로 동작하지 않거나 쿠팡 접근에 문제가 있으신 분들은 편하게 질문해주세요 :)

감사합니다 ^^

 

 

 

 

 

 

 

 

 

 

 

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기