네이버 스마트스토어 마스크 구매용 매크로 프로그램 제작기

2020. 7. 15. 10:17


얼큰이의 생존을 위한 네이버 스마트스토어 마스크 구매용 매크로 프로그램 도전기



2020년의 절반이 코로나19와 함께 순식간에 사라져버렸다. 


어~어~ 하다가 6월이 지나고 이제는 코로나가 과연 끝나기는 할까 싶다.



코로나 사태 초기에는 작년 말 미세먼지와 황사 대비용으로 구매해놓은 KF94 마스크가 있어서 그냥저냥 넘어갈 수 있었고 공적마스크를 약국에서 구매할 수 있게 되면서 마스크 수급은 문제가 없었다. 


하지만 내 고민은.... 


마스크가 너무 작다. ㅠㅠ


불특정 다수의 사람들과 하루종일 접촉해야 하는 일을 하고 있기 때문에 마스크도 하루 종일 착용해야 하는데 작은 마스크는 귀 뒷쪽에 상처를 내고, 가뜩이나 높지 않은 콧대를 더 주저앉히는 듯 압박을 해서 여간 힘든게 아니다. 

(의료진은 얼마나 힘들까.. 다시 한 번 의료진에게 감사를.. )




여러 종류의 마스크를 사용해보면서 그 중에서 제일 크고 편했던 마스크는 


아에르 스텐다드 베이직 L사이즈 마스크였다. 



온라인 구매로 물량이 매일 조금씩 풀리는데 이걸 구매하기가 하늘에 별따기더라. 


9시45분 정각에 온라인 쇼핑몰에 물건이 나오는데 구매창에 들어가서 새로고침 F5키를 연타하며 구매버튼이 뜨기만을 기다리다가도 막상 구매버튼이 떴는데도 습관적으로 F5키를 다시 눌렀을 때는 정말 눈치없이 빠른 손가락이 원망스럽더라.


그래서 홧김(?)에 마스크 구매를 위한 매크로 프로그램을 알아봤다. 


매크로 프로그램을 이용해서 내가 구매할 물품을 구매하는 경우는 불법이 아니라고 한다. 

대량으로 구매해서 다른 사람이 구매할 수 없게 하거나, 

내가 구매한 것을 다시 판매하는 경우는 업무방해가 될 수 있고

서버에 장애를 유발해서 서비스 운영을 방해하는 경우라면 불법이 될 수 있지만...


내가 원하는건 구매버튼이 뜬 다음에도 새로고침 버튼을 누르는 저주받은 순발력을 대신해줄 똑똑한 프로그램을 사용하는 정도는 합법 범위 안이다.  




그래서 처음으로 파이썬 프로그래밍을 해보기로 했다.


며칠의 구글링으로 파이썬 프로그램과 파이참을 설치하고


초보코딩님의 블로그에서 내가 원하는 딱 그런 파이썬 프로그램을 찾았다. 



초보자도 할 수 있는 품절상품 구매 매크로 제작(네이버 스토어)


(https://blog.naver.com/jsk6824/221915034522)



이 블로그 주인 초보코딩님이 이 매크로에 대해 설명해주는 유튜브 동영상.

(https://youtu.be/y9EvDw8ikJs)



초보코딩님의 블로그글과 유튜브 동영상을 열씸히 공부해서 필요한 부분만 갖춘 아주 간단한 파이썬 프로그램을 만들었다




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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
import pyperclip
 
 
## 브라우저 기동 후 네이버 이동
driver = webdriver.Chrome('D:/chromedriver')
driver.get('https://naver.com')
time.sleep(1)
 

## 네이버 로그인 과정
driver.find_element_by_xpath("//a[@class='link_login']").click()
time.sleep(1)
 
tag_id = driver.find_element_by_name('id')
tag_id.clear()
tag_id.click()
pyperclip.copy('ttend')  ## ID입력
tag_id.send_keys(Keys.CONTROL, 'v')
 
tag_pw = driver.find_element_by_name('pw')
tag_pw.clear()
tag_pw.click()
pyperclip.copy('passwd')  ## 패스워드 입력
tag_pw.send_keys(Keys.CONTROL, 'v')
 
driver.find_element_by_id('log.login').click()
 
 
time.sleep(1)
 
 
# 물품구매 사이트 URL
url = 'https://smartstore.naver.com/aer-shop/products/4987781381' 
 
driver.get(url)
driver.set_window_size(9601200)
 
while True:
    try:
        xpath = "//span[@class='buy']/a"
        aa = driver.find_element_by_xpath(xpath).get_attribute("class")
        if aa == '_stopDefault':
            driver.refresh()
            time.sleep(1)
 
        else:
            winsound.Beep(440250)  # frequency, duration
            time.sleep(1)
            break
 
    except Exception:
 
        driver.refresh()
        time.sleep(1
 
cs




초보코딩님의 코드와 다른 부분은 "구매" 버튼이 활성화되면 비프음을 내고 멈추도록 했다. 


옵션에서 마스크 크기(L사이즈)를 선택하고 구매버튼을 눌러야 하는데 이 부분 때문에 그냥 멈추도록 했다. 


초보코딩님의 다른 유튜브 동영상을 보면 옵션을 골라준 다음에 구매버튼이 눌려지도록 하는 코드도 올라와있는데 이상하게 몇 번 테스트 했는데도 제대로 동작하지 않을 때가 있더라. 


원인을 찾기 어렵고, 가뭄에 콩나듯 하는 구매버튼 활성 찬스(?)가 그냥 사라지는게 너무 아쉬워서 여기까지만 동작하도록 했다. 


원래 내가 맨처음부터 원하던게 여기까지 였으니.... 



그리고 프로그램을 돌려서..... 짠~~







오늘 아에르 마스크 라지 사이즈와 비말차단 마스크를 모두 구매할 수 있었다. ㅎㅎㅎㅎ


초보코딩님께 다시 한 번 감사를... ^^





덧. 


프로그램 만들고 실제 하루만에 구매한건 아니다. (당연하게도...)


마스크 구매 경쟁이 워낙 치열한 탓에 매크로 프로그램도 계속 새로고침만 하다가 "재고가 소진되었습니다"는 문구가 보이면서 구매하지 못한 날도 있고


어떤 때는 구매 버튼 클릭까지는 갔지만 결재과정에서 수량이 부족하다면서 결재취소되는 날도 있었다.


회사에서는 인터넷 쇼핑 하기가 어려운데, 

휴가인 날 두 가지 마스크를 모두 구매하게 되어서 몹시 기쁘다. ^___^

또루아빠 잡동사니 , , ,