본문 바로가기

MY아이디어

[아이디어] 스크래핑으로 플로우 간단히 만들기

외부 페이지 연동이 많은 서비스들은 상당 플로우가 복잡하기에, 사용자 이탈이 심하다.

 

가입 한번해서 앱한번 사용하려면, 어디 페이지 로그인해서 동의하고, 어디 사이트 웹페이지 열어서 선택해야하고 등등...

외부 연동 페이지에 종속적인 서비스들은 사용자의 이탈이 상당히 심하다.

그렇다고, 서비스를 접을수도 없으니 고민이 많을것이다.

 

이런 경우,

쉽게 풀수있는 방법은 해당 외부 연동 서비스에서 oauth등을 지원하여, server to server로 연동을 하는 방법이다.

하지만, 쉽게 oauth기능을 제공하지 못하는 곳도 많이 있기때문에, 다른 방법이 대안이 될수도 있을것같다.

 

그 대안중에 하나가 '스크래핑' 기술을 이용하는 방법이다.

사실 단점이 명확하고 심지어 위험하기까지도 하지만,

그 사용함에 있어서의 장점 또한 뚜렸하기에 나름 좋은 대안중에 하나라고 생각도 든다.

 

이 스크래핑을 업체에 맡기면, 외주개발비와 함께, 건당 얼마와 같은 비용책정이 되는경우가 많다. ;;;;;;;;;;

마치 봉이 김선달처럼, 개발비도 받고, 스크래핑 건당 얼마로 지속적으로 수익이 발생하는 아주 배아픈 현실이랄까?...ㅋㅋ

 

 

이런 배아픔을 조금이나마 없애기 위해서,

직접 스크래핑 기능을 만든다면, 어떻게 만들어야 할까? 생각해봤다.

 

1) 클라이언트 베이스 스크래핑으로 만들어야한다.

- 스크래핑을 서버에서 진행하는 경우, 잦은 접속을 하는 서버 아이피가 막히는 경우가 상당히 많기 때문에,

이런 리스크를 줄이기 위해서는 클라이언트 (앱)에서 스크래핑이 동작하게 만드는것이 더 안전하다고 생각했다.

 

2) 웹뷰 + javascript 브릿지 통신을 이용하여 구현한다.

- 웹페이지를 자연스럽게 스크래핑하고 돔 접근이 가능한것은 웹뷰를 이용하는 방법이다. 그리고 해당 돔을 제어하거나, 조작하는 것은 브릿지 통신으로 구현하면 될듯한다.

 

3) 돔접근에 대한 기본적은 룰은 서버에서 관리하고, 스크래핑 최초에 클라이언트가 서버에게 룰을 받아서 동작하게 만든다.

- 웹페이지는 갑자기 개편이 되거나, 구조가 바뀔수 있기에 스크래핑룰을 클라이언트가 가지고 있으면, 빠른 대응이 어렵다.

빠른 수정 대응을 위해, 서버에서 룰을 관리하고 클라이언트에게 동적으로 제공하는 방법을 제공하는게 안전하다.

 

4) 그 룰은 기본적으로 아래와 비슷하게 만들면 될듯하다. - 어셈블리 언어와 비슷하게 만들면 될듯?!!

- move "https://www.naver.com"

- select id "login_id"

- click 

- wait onload

- select id "address" 

- click index 1

이런식으로 명령과 그에 따른 파라미터 구성으로 룰을 만들면 어떨까?

 

위에 내가 만든 명령은 대략 이렇다.

naver.com으로 페이지를 이동하여, id가 login_id인 돔을 선택하여, 클릭하고, 페이지 로딩이 될때까지 기다린다. 그리고 id가 address인 돔을 선택하고 첫번째 항목을 클릭한다.

 

좀 어셈블리, 기계어 같지않나? ㅋㅋㅋ

 

이렇게 구성을 한 이유는 이 명령어를 AI프롬프트를 통해, 선언하고,

AI에게 저 룰을 자동으로 만들어 내게 하여, 관리포인트를 줄이기 위함과 함께,

해당 룰은 스택머신과 같이 한줄한줄 읽어가며 실행을 하면 되는 것이기에,

해당 룰을 가지고 실제 구현체를 만들 클라이언트의 복잡함을 좀더 단순하게 할수있기 때문이다.

 

이렇게 하면, 클라이언트 베이스 스크래핑을 만들수있을듯하다.

물론 실제로는 될지 안될지는 다음 문제이겠지만, 우선은 머릿속에서 시뮬레이션을 돌려보면,

가능하겠다라고는 생각이 든다.

 

기회가 된다면 한번 만들어봐야겠다!!!! (봉이 김선달!)