안녕하세요~?
조각배처럼 예쁜 별 가득한, 야삐미얼의 티스토리입니다.
오늘은 어제에 이어서 파이썬을 이용한 웹브라우저 자동화에 대해 조금 심화된 부분을 포스팅해보려고 합니다.
제가 자동화를 많이 만들면서 겪은 고충들을 해결했던 방법들을 소개해드리면서 많은 도움이 되셨으면 좋겠습니다!
1. 네이버 로그인 하기
현재 많은 사이트들이 웹 자동화를 막기 위해 고군분투하고 있습니다.
쿠팡에서는 셀레니움의 자동화 브라우저가 인식되면 접근이 안되게 막는 경우도 있죠.
네이버 같은 경우에는 셀레니움의 명령어를 인식하면 로그인 부분에서 리캡챠가 발생하고, 이 리캡챠를 풀어야 로그인이 가능해지게 됩니다. 그렇다면 "어떻게 네이버 로그인을 리캡챠 없이" 할 수 있을까요?
바로 "Pyperclip 모듈" 을 사용하여 해결할 수 있었습니다.
pyperclip
A cross-platform clipboard module for Python. (Only handles plain text for now.)
pypi.org
파이썬의 "복사/붙여넣기 클립보드 기능" 을 사용할 수 있는 유용한 모듈입니다.
간단하게 아이디와 비밀번호를 복사하여 붙여넣기 한다면 네이버 로그인에서도 "셀레니움이 감지되지 않아" 로그인을 해결할 수 있었습니다. 자세한 사용법은 아래 사진과 같습니다.
pyperclip.copy("ID값")
#파이퍼클립에 ID값 저장
driver.find_element_by_xpath("/html/body/div[1]/div[2]/div/div[1]/form/ul/li/div/div[1]/div[1]/input").send_keys(Keys.CONTROL, 'v')
#네이버 ID 입력란에 Ctrl+V 로 저장된 ID값 붙여넣기
pyperclip.copy("PW값")
#파이퍼클립에 PW값 재저장
driver.find_element_by_xpath("/html/body/div[1]/div[2]/div/div[1]/form/ul/li/div/div[1]/div[2]/input").send_keys(Keys.CONTROL, 'v')
#네이버 PW 입력란에 Ctrl+V 로 저장된 PW값 붙여넣기
물론 이 또한 네이버에서 막을 수 있겠지만, 복사/붙여넣기를 사용하는 "일반 사용자들도 리캡챠를 해야된다는 부담감" 이 있을 겁니다. 웹 자동화는 항상 막는 사람과 뚫는 사람의 싸움이라고 볼 수 있겠네요.
2. 네이버 2차 비밀번호 인증하기
많은 분들이 겪으시는 2차 비밀번호 입력하는 부분입니다.
스마트스토어나 물건을 구매하는 경우에 위 사진처럼 2차 비밀번호를 입력하셨던 경험들이 다들 많으실텐데요.
해당 비밀번호의 위치는 "매번 정해져있지 않고, 랜덤으로 형성" 되고 있습니다.
그래서 원하는 값의 요소를 찾아도 다음에 실행했을 때는 해당 요소의 값이 우리가 원하는 값이 아니게 되는건데요.
매번 다르게 변하는 위치를 찾으려면 어떤 방법이 있을까요?
바로 "Pyautogui 모듈" 을 사용하여 해결할 수 있습니다.
PyAutoGUI
PyAutoGUI lets Python control the mouse and keyboard, and other GUI automation tasks. For Windows, macOS, and Linux, on Python 3 and 2.
pypi.org
파이썬에서 "마우스와 키보드를 제어할 수 있게 해주는 유용한 모듈" 입니다.
다만 2차 비밀번호를 인증하기 위해 좌표 값을 알려주는 함수만 사용하여 해결하였는데요.
자세한 사용법은 아래 사진과 같습니다.
temp = pyautogui.locateOnScreen("1.jpg", confidence=0.9, grayscale=True)
#현재 웹페이지에서 1.jpg와 일치하는 부분의 좌표 얻기
centerxy = pyautogui.center(temp)
#일치하는 좌표의 중앙값 얻기
pyautogui.click(centerxy)
#얻은 중앙 좌표값 클릭
이미지 파일은 파이썬 프로젝트 내부에 저장하시면 되고, 2차 비밀번호의 숫자 이미지들을 각각 캡쳐해서 저장하시면 됩니다. 매번 위치가 변경되어도 이미지를 비교하여 위치를 찾기 때문에 절대 틀릴 일이 없게 되었죠.
"confidence 는 정확도" 라고 생각하시면 됩니다. 0.9 로 설정하셨으면 이미지와 90% 일치하는 부분을 찾게 되고 숫자가 1에 가까워질수록 더욱 정확도가 높아진다고 할 수 있죠.
"grayscale 은 화면의 이미지들을 음영처리" 하여 찾을 수 있는 옵셥입니다. 높은 해상도와 색상들로 인해 찾는 속도가 저하된다면 grayscale 옵션을 True 로 설정하여 약 30% 정도의 빠른 속도 개선을 경험하실 수 있습니다.
마무리
오늘은 웹 자동화를 만들면서 다들 한번 쯤은 경험하게 될 문제들을 2가지 정도 다뤄보았는데요.
제가 해결한 방법을 참고하셔서 다양하게 자신의 입맛대로 문제들을 해결하실 수 있을거라 생각합니다.
다음 포스팅에서는 "Google OTP 를 자동화로 입력" 하는 방법이 있을지 알아보고, 추가로 시간이 여유가된다면 Google 리캡챠를 우회하는 방법과 어쩔수 없이 해제해야만 할 때의 해결방법들을 소개해보도록 하겠습니다.
오늘도 긴 글 읽어주셔서 감사합니다. :)
- 야삐미얼 -
'파이썬' 카테고리의 다른 글
파이썬을 배우면 할 수 있는 것들 총정리 (17) | 2023.07.13 |
---|---|
파이썬으로 구글OTP 인증번호 자동화 해결방법 총정리 (32) | 2023.06.18 |
파이썬 셀레니움 기본 사용법 (29) | 2023.06.04 |
[나만의 자동화 봇] 파이썬을 활용한 자동화 만들기 - 셀레니움 설치 및 실행 (0) | 2023.05.16 |
[나만의 자동화 봇] 파이썬을 활용한 자동화 만들기 - 자동화란? + 셀레니움에 대한 이해 (0) | 2023.05.15 |
댓글