평범한 이야기들

[Selenium] Pyperclip 를 이용해서 네이버 로그인하기 본문

평범한 개발 이야기/ETC

[Selenium] Pyperclip 를 이용해서 네이버 로그인하기

songsariya 2023. 7. 4. 11:09
728x90

Pyperclip?

Pyperclip은 복사/붙여넣기 클립보드 기능 사용을 위한 크로스 플랫폼 파이썬 모듈입니다.

Pyperclip을 사용해서 간단하게 파이썬으로 클립보드에 텍스트를 ‘복사’하고, 저장한 텍스트를 ‘붙여넣기’할 수 있습니다.

Python 2, 3 버전에서 동작을 합니다.

 

공식문서 보러가기

 

Pyperclip 설치

pip를 이용해서 설치를 하시면 됩니다.

윈도우 : pip install pyperclip
맥 & 리눅스 : pip3 install pyperclip

 

Pyperclip 기본 사용 방법

import pyperclip

pyperclip.copy('Copy Text') # pyperclip.copy(): 클립보드에 텍스트를 복사합니다.
pyperclip.paste()           # pyperclip.paste(): 클립보드에 저장된 텍스트를 붙여넣습니다.

클립보드에 텍스트를 복사하고, 다시 붙여넣기 한 후 출력합니다.

 

네이버 로그인 방법

셀레니움과 Pyperclip을 이용해 네이버에 로그인하는 소스코드입니다. 아이디하고 패스워드를 입력하는 사이에 일정한 텀을 주어야 합니다. 너무 빠르게 입력을 하면 네이버 측에서 봇으로 인식을 하고 캡챠를 띄우는 경우가 많이 존재합니다.

 # -*- coding: utf-8 -*- 

import time
import random
import pyperclip
import platform

from selenium.webdriver.chrome.service import Service as ChromeService
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.keys import Keys

from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common.by import By

import undetected_chromedriver as uc

# 운영체제에 맞게 ctrl, cmd 키 변경 (mac os 호환)
def paste_key(element):
    if os_info != 'Darwin' :
        element.send_keys(Keys.CONTROL, "v")
    else :
        element.send_keys(Keys.COMMAND, "v")

# 크롬드라이버 셋팅
chrome_service = ChromeService(ChromeDriverManager().install())
chrome_options = Options()

chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--window-size=1920,1080')
chrome_options.add_argument('--disable-dev-shm-usage')
chrome_options.add_argument('--disable-blink-features=AutomationControlled')

driver = uc.Chrome(service=chrome_service, options=chrome_options)


# 사용자 아이디 패스워드
user_id = "userid"
user_pw = "XXXXXX"

# 운영체제 정보 가져오기
os_info = platform.system()

driver.get("https://naver.com")
driver.implicitly_wait(10) # 처음에만 셋팅 암묵적 10초 대기

time.sleep(random.randint(3, 5))

driver.maximize_window() # 브라우저 최대 사이즈로

# 로그인 버튼 클릭
driver.find_element(By.XPATH, '//*[@id="account"]/div/a').click()

time.sleep(random.randint(3, 5))

pyperclip.copy(str(user_id))

elem = driver.find_element(By.XPATH, '//*[@id="id"]')
elem.click()

time.sleep(random.randint(1, 2))

paste_key(elem)

time.sleep(random.randint(1, 2))

elem.send_keys(Keys.TAB)

time.sleep(random.randint(1, 2))

pyperclip.copy(str(user_pw))

elem = driver.find_element(By.XPATH, '//*[@id="pw"]')

paste_key(elem)

time.sleep(random.randint(1, 2))

elem.send_keys(Keys.ENTER)

time.sleep(60)

"""
그 외 작업
"""

driver.quit()

 

* 참조문서

https://codetorial.net/pyperclip/index.html

728x90
Comments