파이썬을 이용한 네이버 카페 업무 자동화 2

이미지
지난 글 에서 네이버 카페 특정 레벨의 회원 아이디 리스트 얻기와 찾아진 명단으로 게시글 검색하는 내용까지 다루었다. 실제 해야 하는 작업은 검색 결과를 바탕으로 회원 레벨을 조정하는 것. 이제 이 마지막 작업을 자동화할 단계이다. 회원 레벨 조정은 어느 메뉴에서든 할 수 있지만, 관리 메뉴의 전체 멤버 관리 화면이 아이디로 검색해 원하는 멤버를 찾아 레벨 조정하기 편리하게 되어 있어 그걸 이용하기로 했다. 준비 과정은 동일하게 셀레늄을 import하고 크롬 드라이버를 띄운다. 이제 브라우저 화면의 원하는 자리에 원하는 값을 넣고 원하는 버튼을 누르는 작업을 파이썬으로 한줄씩 코딩해 넣으면 된다. 물론 아이디 목록이 들어있는 파일을 읽어와서 이 작업을 반복하는 for 루프 하나 만들고. 원하는 자리나 원하는 버튼을 찾아내는 것은 지난 글에서 쓴 대로, 크롬 브라우저에서 마우스 우클릭 후 맨 아래 "검사(N)" 메뉴를 클릭하면 된다. 오른쪽에 창이 열리면서 해당 element가 반전되어 보이는데, 먼저 반전된 element에 마우스 우클릭하여 copy - copy element를 눌러보자. 메모장 등에 붙여넣어보면 element 내용을 확인할 수 있는데, 여기 id나 name 등이 포함되어 있어야 find_element_by_id(), find_element_by_name() 등으로 찾을 수가 있다. 어떤 버튼은 copy element로 보면 별다른 정보가 없는데, 이때는 copy - copy xpath를 선택하고 find_element_by_xpath()를 이용해서 찾으면 된다. 가령 (2)번 버튼의 경우 copy element로 해서 보면 "<span>검색</span>" 이렇게밖에 안 나오지만, copy xpath로 보면 "//*[@id="frmSearch"]/div/div/div[1]/a[1]/span"로 나온다. 한단계 한단계 찾아...

스마트폰 잠금에 대한 설명

1. 스마트폰 화면잠금은 필수! 스마트폰을 왜 잠궈야 할까? 물론 내 스마트폰이 남의 손에 들어갈 일이 절대로 발생할 리가 없다면, 잠그지 않아도 괜찮다. 그러나, 도난, 분실의 우려는 물론이고, 잠시 부주의한 사이 누군가 내 스마트폰을 만질 수도 있다. "내 폰에는 중요한 게 없어서 잠그지 않아도 괜찮다."고 하는 분들이 있는데, 이분들은 한국 사회에서 "신원확인"의 대부분을 휴대폰으로 한다는 사실이 무엇을 의미하는지 진지하게 생각해 보지 않아서 그렇다. 휴대폰 소액결제는 물론이고, 고가의 유료 통화, 문자, 게임 아이템 구매 등 휴대폰 만으로 직접 돈을 쓸 수 있는 방법만도 수없이 많다. 게다가 휴대폰으로 신원 확인을 통해 대출을 받거나 할부로 물건을 구매하는 등 예상할 수 있는 피해는 한계를 정하기 어렵다. 물론 휴대폰이 잠시 내 손을 떠난게 겨우 5분이라면 그 사이에 누군가 내 명의로 대출을 완료하기는 어렵겠지만, 그정도 시간이면 누군가 내 폰에 악성 앱을 설치하기에는 충분한 시간이다. 악성 앱은 장기적으로 내 주소록과 사진은 물론, 카메라와 마이크를 원격 조정해 내 생활을 모두 감시하거나 모바일 뱅킹을 할 때 비밀번호, 공인인증서 비밀번호 등을 모두 훔쳐낼 수 있다. 그리고 분실, 도난이 내가 조심한다고 100% 막아지는 일인가? 휴대폰과 지갑을 같이 분실한다면? 그 휴대폰에 잠금이 안 걸려 있다면? 나는 이런 상황은 상상조차 하고 싶지 않다. 혹자는 휴대폰 잠금 걸어봐야 다 풀어낸다고도 하지만, 그 잠금을 푸는 데 걸리는 시간을 벌 수 있다면 그 사이에 통신사에 연락해 번호를 정지시킬 수 있다. 잠금이 안 걸려 있다면, 누군가 내 폰을 손에 넣는 순간부터 내가 그 사실을 인지하는 순간까지 내 인생은 완전히 다른 누군가의 손에 맡겨져 버리는 셈이다. 그 폰으로 내가 목숨보다 사랑하는 내 가족에게 전화를 해서 사기를 친다면? 그들의 생명을 위태롭게 한다면? 자, 만약 당신의 스마트폰에 화면잠금이 설정되어...

파이썬을 이용한 네이버 카페 업무 자동화

네이버의 영어책 읽기 카페 에서 스탭으로 활동하고 있는데, 연말에 회원 레벨 조정 작업을 할 일이 생겼다. 간단한 일이지만 수백명이나 되는 회원에 대해 확인을 수동으로 다 하려니 상당히 지루한 일이 될 것 같아, 자동화를 위해 방법을 찾아보기로 했다. 일단 아래 적은 것들 대부분 인터넷 검색하면 다 나오는 것이므로, 다른 사이트에서 자세히 설명되어 있는 내용을 부가적으로 설명하지는 않고 전체적인 흐름만 기록하고자 한다. 전체적으로  여기 의 도움을 많이 받았다. 첫번째로 필요한 것은 파이썬 설치다. 아직 파이썬2를 쓰는 사람도 있지만 특별한 이유가 없다면 가급적 파이썬3를 설치하도록 하자. Windows 피씨에도 무리없이 설치할 수 있고, path도 설정해 주면 cmd 터미널에서 현재 어느 디렉토리에 있든지 쉽게 사용 가능하다. 둘째 웹 자동화에 필수적인 것이 셀레늄(Selenium)이다. 파이썬 모듈로 설치하면 된다. pip install selenium 명령으로 쉽게 설치할 수 있다. 또한 웹페이지를 읽고 처리하려면 Beautiful Soup의 도움이 필요하다. 역시 pip을 써서 pip install bs4 명령으로 쉽게 설치할 수 있다. 세째 셀레늄에서 다룰 수 있는 브라우저 설치다. 크롬 드라이버를 설치하면 된다. 위에서 언급한 블로그에 자세히 나와 있으므로 따라하면 된다. 다 설치되었으면 cmd 창에서 python shell을 띄우고 크롬을 띄워보자. 크롬 브라우저가 새로 뜨면서 "자동화된 테스트 소프트웨어에 의해 제어되고 있습니다"라는 안내창이 보일 것이다. 아래에서 물론 경로는 크롬 드라이버가 깔려 있는 디렉토리명이다. >>> from selenium import webdriver >>> driver = webdriver.Chrome('c:/temp/chromedriver') 네째로 알아야 할 것은 브라우저의 개발자 도구다. 이건 별도로 설치할 필요는 없고...

스마트폰 잠금 2분 안에 풀린다고?

** 업데이트 ** 제작 피디님과 추가적으로 확인한 결과, 제가 아래에서 "화면 잠금 상태에서 쉽게 할 수 없다"고 했던 그 루팅을 학생들이 실제 했다고 합니다. 아래 피디님의 댓글에도 있지만 사전에 USB디버깅 활성화나 루팅이 되어 있지 않은 상태에서 화면을 잠그고 학생들에게 전달했고, 학생들이 이를 풀었다고 합니다. 인터뷰시 제게 보여준 영상은 이미 루팅이 되어 있는 상태에서 패스워드 파일을 지우는 것 뿐이었기 때문에 제가 오해를 했던 것 같습니다. 아직 이 학생들이 구체적으로 어떤 방법으로 루팅에 성공했는지는 파악하지 못했으나, 그것이 가능했다면 이는 매우 심각한 문제가 아닐 수 없습니다. 다만 이러한 형태의 루팅은 대개 특정 제조사의 특정 버전에 존재하는 알려지지 않은 버그를 이용하는 방식이라, 모든 안드로이드폰에 일괄적으로 적용 가능한 것은 아닐 것으로 생각됩니다. 해당 허점이 최신 버전의 안드로이드에서는 이미 개선되어 있을 수도 있으나, 구체적인 정보가 파악되는 대로 문제를 파악해 필요한 조치를 취하도록 하겠습니다. ** 추가 업데이트 ** 자체적으로 분석하여 파악한 문제점에 대해 수정 조치하였습니다. 하고 싶은 말은 많으나 이쯤에서 마무리합니다. ------------------------------------------------------------------------- 오늘 KBS 추적60분에서 스마트폰 보안에 대해 다뤘다. 경각심을 불러 일으키기 위한 문제제기는 잘 했다고 본다. 그런데 방송 중간에 화면 잠금을 설정하고 고등학생들을 불러다 2분 안에 풀 수 있다고 하는 장면이 나왔는데, 이 부분은 오해의 소지가 있다. 나도 잠깐 인터뷰에 나왔는데, 약 1시간에 걸친 인터뷰 중 10초만 잘라서 나간거라 충분히 설명이 되지 않은 부분이 많다. 이번 기회에 스마트폰, 특히 안드로이드 스마트폰 보안에 대해 간략히 정리해 볼까 한다. 단 아래 내용은 LG전자의 공식 입장과는 무관한, 내 개인적인 견해임을 먼...

국립국어원의 일방적 대화 단절

오랜 기간에 걸친 국립국어원과의 문답이 끝이 났습니다. 국립국어원의 결론은, "규정이고 뭐고 국립국어원 맘대로 '새너제이'라고 쓰는 게 맞고, 더이상 할 말 없다"입니다. 아래 문답을 모아놨으니 국립국어원의 답변을 직접 보시고 싶은 분은 참고하시기 바랍니다. San Jose 표기법 관련 국립국어원과의 문답 모음 간단하게 제 주장을 아래에 다시 요약하고 마무리하겠습니다. 누가 맞고 누가 억지를 부리고 있는지, 글을 읽는 분들이 판단해 주시기 바랍니다. 1. '새너제이' 표기는 외래어 표기 규정을 위배하고 있다.  San Jose는 두 단어로 이루어진 지명이므로, 해당 외래어 표기 규정에 따라 단독으로 쓰일 때의 표기대로 적어야 한다. ( 외래어 표기 규정 제3장 제1절 제10항) 제10항 복합어 (3) 1. 따로 설 수 있는 말의 합성으로 이루어진 복합어는 그것을 구성하고 있는 말이 단독으로 쓰일 때의 표기대로 적는다. cuplike[kʌplaik] 컵라이크 bookend[bukend] 북엔드 headlight[hedlait] 헤드라이트 touchwood[tʌtʃwud] 터치우드 sit-in[sitin] 싯인 bookmaker[bukmeikə] 북메이커 flashgun[flæʃgʌn] 플래시건 topknot[tɔpnɔt] 톱놋 2. 원어에서 띄어 쓴 말은 띄어 쓴 대로 한글 표기를 하되, 붙여 쓸 수도 있다. Los Alamos[lɔs æləmous] 로스 앨러모스/로스앨러모스 top class[tɔpklæs] 톱 클래스/톱클래스 San은 '샌', Jose은 '호세' 혹은 '호제이'로 적을 수 있으므로, San Jose는 '샌호세' 혹은 '샌호제이'로 적어야 한다. 그렇지 않으면 위 10항의 2를 따를 방법이 없다. '새너제이'를 원어에서 띄어 쓴 대로 한글 ...