? 벌써 영하의 날씨로 온도가 떨어지고, 2021년도 거의 끝나가고 있다. 즉 인턴으로 출근할 수 있는 날도 얼마 남지 않았다? 인턴으로 첫 출근을 할 때만 해도 세달 반 정도의 시간이 매우 길 거라고 생각했는데 벌써 이주밖에 남지 않았다는 게 믿기지 않고 지금까지의 인턴 기간을 되돌아보게 되는 것 같다. 


개발일지

오늘은 거의 마무리 되어가고 있는 '캠퍼스론을 위한 데이터 정형화 프로젝트'에 대해서 이야기해 보려고 한다. 데이터를 스크래핑 해오고 정형화한 데이터를 제공하는 큼직큼직한 기능들은 구현을 완료했기 때문에, 이제는 이를 자동화하기 위한 개발을 진행 중이다. 사용자의 인스타그램 계정을 꾸준히 가져와서 저장해야 하지만, 매번 직접 api를 호출할 수는 없다. 따라서 서버가 켜져 있을 때, 자동으로 스크래핑 api를 호출할 수 있어야하고, 계속되는 요청에 서버가 튼튼하게 데이터를 저장하거나 반환할 수 있어야 한다.

 

[ log 이용하기 ]

인스타그램에 로그인하는 하나의 계정이 특정 시간 동안 인스타그램의 api를 호출할 수 있는 횟수가 정해져 있다 보니, 우리는 이를 위한 실험을 했고, 이를 적용해서 구현을 하고 있다. 먼저, config 테이블과 log 테이블을 지정해서 꾸준히 비교하면서 api를 호출한다.

api를 호출할 때마다 log에 호출할 당시 로그인한 아이디, 스크래핑 대상인 인스타그램 계정, api 호출 시작 시간과 종료 시간 등을 저장한다. 아래 이미지가 호출할 때마다 저장된 log 데이터들이다.

Log 데이터를 저장하는 테이블

log 테이블의 데이터를 통해 현재 인스타그램의 api를 호출을 해도 되는지, 안되는지 쉽게 파악할 수 있다. 이를 활용하기 전에는 호출 횟수가 초과될 경우 계정이 차단되는 등의 이슈들이 굉장히 자주 발생했었다.

 

[ 로그인계정 암호화 ]

스크래핑 해야 하는 계정이 많아질수록, 인스타그램에 로그인을 하고 스크래핑할 수 있는 계정도 많아져야 한다. 그래야 막혀서 멈춰있는 시간을 줄이고 계속해서 스크래핑을 진행할 수 있기 때문이다. 이를 위해서 인스타그램 계정의 ID와 비밀번호를 저장하는 테이블을 생성했다. 데이터베이스에 민감한 정보를 저장할 때에는 암호화된 데이터를 저장해야 보안을 유지할 수 있기 때문에 암호화 로직을 구현하여 비밀번호를 안전하게 저장할 수 있도록 했다.