기간:
- 2022.06.27 ~ 2022.07.08 (약 2주)
목표:
- 인스타그램에게 정지당하지 않고 DM 보내기 (하루 200개 정도)
팀원:
기술 스택:
- python, Django, Selenium (Server)
- Javascript, React, nodeJS (Chrome Extension)
구현 사항:
특이사항) 인스타그램에서 봇의 움직임을 잘 캐치하기 때문에 모든 행동을 Random하게 진행한다.
예) 스크롤 - 스크롤을 몇 번 할지, 한 번 스크롤에 얼마나 내릴 것인 지, 스크롤 당 시간 간격을 얼마나 줄 지 등...
- 로그인
- 인스타ID로 로그인 / 페이스 북ID로 로그인
- 인스타 서핑
- 메인루틴 (스크롤 내리기, 포스트 선택, 탐험하기(나침반버튼), 검색(해시태그, 채널)
- 해시태그 루틴 (스크롤 내리기, 포스트 선택, 메인으로 돌아가기, 탐험하기)
- 포스트 루틴 (좋아요, 이미지 넘기기, 댓글 스크롤 내리기, 댓글남기기, 메인으로 돌아가기)
- DM 루틴(아이디검색 -> (팔로우) -> 메시지보내기 -> DM 보내기)
- Custom Command
- $ python manage.py command 1000 입력 시 1000번의 Random Activity 실행
- 평상시에는 2.인스타 서핑을 하다가 미션(DM보내기)이 들어오면 미션을 진행한다.
- 미션(DM)을 4~6분의 주기를 두고 진행하도록 구현했다.(안하면 정지됨)
- 아이디를 4개를 만들고 각 아이디당 50개 정도씩만 보내도록 진행하고, 50개 다쓰면 다른 아이디로 로그인하도록 했다.
- 혹시 아이디가 맛탱이가 가면, 다른 아이디로 로그인하도록 했다.
- 시간대별 DM 보낼 interval을 정했다.
- 08-18(5~7분), 18~24(6~8분), 00~08(안보내고 10분간격으로 08시 되었나 확인)
- Decorator
- 파이썬의 decorator기능을 사용하여 로그를 자동으로 남기도록 구현.
- Chrome Extension
- 미션을 부여하기 위해서 어떤 방법을 줄까 하다가, 간단하게 크롬익스텐션을 구현해보았다.
어려웠던 점
- 대부분 처음 써보는 스택이라 쉽지는 않았다.
- Selenium은 버전 차이로 인해 안되는 코드들이 많았다. (이것 때문에 생각보다 시간투자 많이 함..)
- "Random Activity를 하다가, DM 미션이 들어와있으면 미션을 진행한다"
- 이 부분을 어떻게 해결하지? 라는 고민을 많이 했다.
- Redis, Celery 등을 조사해봤지만 해결할 수 없었다.
- Django 모델을 만들어서 DM미션을 넣고 해당 모델에 저장되어있는 DM이 있는지 확인하는 방식으로 해결했다.
잘 저장 된다.
아쉬운 점
- 프로젝트 구조나, 코드를 남들이 알아보기 쉽게 써야하는데, 아무래도 아무도 못 알아볼 것 같다.
- 인플루언서 조건에 따라 스크랩하는 기능도 만들고 싶었는데, 시간이 부족해서 못해서 아쉽다.