반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 네이버매물크롤링
- 가상환경설치
- 네이버부동산크롤링
- 네이버 로그인 하기
- venv 설치
- 네이버 로그인 캡챠해결
- 파이썬 네이버 로그인
- pywinauto 윈도우제어
- UiPath
- 왕초보 파이썬 실행
- pywinauto
- vscode venv 설치
- 파이썬 가상환경 설치
- 네이버커머스API
- 파이썬네이버부동산
- 커머스API
- pywinauto 윈도우
- pycdas.exe
- Element is not clickable at point
- Selenium 셀렉터잡기
- Uipath 설치방법
- Python
- 네이버 로그인 영수증 해결
- 파이썬 환경설정
- 파이썬 가상환경 설치방법
- uipath 입문
- selenium
- pycdc.exe
- 날짜 정규식
- Uipath 기초
Archives
- Today
- Total
콘솔워크
[selenium] selenium으로 네이버 로그인 시 영수증 인증화면이 뜨는 경우 본문
반응형
다른 사이트에서 하듯이 selenium으로 네이버에 로그인을 시도하려고 하면 아래와 같은 영수증 화면이 뜨게 된다.
아마 네이버쪽에서 기계적인 움직임이나 외부 코드가 개입하는 것을 인식하여 인증화면이 발생하는 것 같다.
현재로써는 영수증 인증을 뚫을 방법이 생각나지 않아서, 아예 영수증 화면을 회피하는 방법, 즉 최대한 사람과 같은 움직임으로 로그인을 시도했더니 로그인에 성공하게 되었다.
영수증 인증화면이 발생하던 코드
# 영수증 인증화면이 발생하는 코드
def login(self, id, pw):
driver = get_chrome_driver_new(is_scret=True, is_headless=False)
driver.maximize_window()
driver.get('https://nid.naver.com/nidlogin.login')
time.sleep(1)
try:
input_id = driver.find_element(By.CSS_SELECTOR, '#id')
input_id.clear()
input_id.send_keys(id)
input_pw = driver.find_element(By.CSS_SELECTOR, '#pw')
input_pw.clear()
input_pw.send_keys(pw)
login_button = driver.find_element(By.CSS_SELECTOR, '.btn_login')
login_button.click()
except Exception as e:
print(f'{id} {pw} 로그인에 실패했습니다.')
finally:
time.sleep(1)
return driver
인증화면을 회피한 코드
# 인증화면을 회피한 코드
import pyperclip
def login(self, id, pw):
driver = get_chrome_driver_new(is_scret=True, is_headless=False)
driver.maximize_window()
driver.get('https://nid.naver.com/nidlogin.login')
time.sleep(1)
try:
# 일반적으로 진행하려고 해면 영수증 캡차가 나옴, pyperclip을 사용해야 함
tag_id = driver.find_element(By.NAME, 'id')
tag_pw = driver.find_element(By.NAME, 'pw')
tag_id.clear()
time.sleep(1)
# id 입력
tag_id.click()
pyperclip.copy(id)
tag_id.send_keys(Keys.CONTROL, 'v')
time.sleep(1)
# pw 입력
tag_pw.click()
pyperclip.copy(pw)
tag_pw.send_keys(Keys.CONTROL, 'v')
time.sleep(1)
# 로그인 상태 유지 선택
click_tag_by_text(driver, 'label', '로그인 상태 유지')
time.sleep(1)
# 로그인 버튼을 클릭합니다
login_btn = driver.find_element(By.ID, 'log.login')
login_btn.click()
time.sleep(2)
except Exception as e:
print(f'{id} {pw} 로그인에 실패했습니다.')
finally:
time.sleep(2)
pyperclip 을 이용하여 클립보드에 id pw를 저장하고 그 내용을 각 입력창에 붙여넣기를 하는 방향으로 최대한 사람과 같은 움직임을 줬더니 해결되었다.
반응형
'프로그래밍 > python' 카테고리의 다른 글
[selenium] 자료가 바닥나기 전까지 늘어나는 화면에서 스크롤을 계속 내리는 함수 (0) | 2022.06.24 |
---|---|
[Python] dataframe 데이터프레임 컬럼 필터, column value length check, value check (0) | 2022.06.24 |
[Python] 데이터 프레임 left outer join (특정키로 조인)하고 빈 컬럼 나머지 데이터프레임으로 채우기 merge (0) | 2022.06.21 |
[selenium] 크롤링으로 가져온 문자열이 깨져있는 경우 (0) | 2022.06.21 |
[selenium] 셀레니움으로 부모 webelement 찾기 (0) | 2022.06.21 |