ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • C#을 이용한 국민건강보험공단 스크래핑
    틸코 API 서비스 2021. 3. 31. 16:56

     

    안녕하세요 #틸코블렛 입니다.

    최근 많은 분들이 #스크린_스크래핑 개발에 관심을 가지고 문의를 해주시는데요.

    오늘은 #국민건강보험공단 홈페이지에 #공인인증서로 로그인하고 원하는 데이터를 스크래핑 하는 방법에 대해서 알아 보도록 하겠습니다.

    1) 로그인에 필요한 변수들 획득 방안

    우선 로그인 패킷을 살펴 보도록 하겠습니다.

     

    국민건강보험공단 스크래핑

     

    위 이미지에서 보시는 바와 같이 로그인에 중요한 변수 중에 “signedMsg”와 “vidMsg”라는 값이 있습니다.

    “signedMsg”의 경우는 인증서의 개인키를 이용하여 서명한 문자열 변수 데이터입니다.

    SHA1 방식으로 암호화 되므로, 복호화는 불가능합니다(hash 방식).

    “vidMsg”는 “signedMsg” 값과 기타 변수들을 복합적으로 조합하여 생성해내는 문자열 변수 데이터입니다.

    2) AnySign4PC

    1번의 문제점은 이 변수들을 구하기 위해서 AnySign4PC라는 소켓서버가 클라이언트 컴퓨터에 상시 돌아가고 있다는 점입니다. 해당 소켓서버가 인증서를 읽고, 각각의 변수들을 생성해서 리턴해 주는 형식입니다. 이는 브라우저인증서나 공인인증서나 동일한 방식으로 구동되고 있습니다.

     

    국민건강보험공단 스크래핑

     

    아래는 127.0.0.1 루프백 주소로 소켓 연결을 한 후, 결과 값을 전송 받고 있는 화면입니다.

     

    국민건강보험공단 스크래핑

     

    위에 보시는 308로 시작하는 ReturnValue가 AnySign4PC 소켓 서버로부터 전달 받은 “signedMsg” 값입니다.

    이렇다면, Windows 환경이 아닌 컴퓨터에서는 AnySign4PC를 구동할 수 없으므로 #건강보험공단 #스크래핑이 불가하다는 판단이 듭니다. BUT, 여기서 포기할 수는 없죠? 🤯

    3) Workaround 탐색

    이 방법을 해결할 workaround를 탐색해 보겠습니다. 국내 보안 프로그램들은 ActiveX 구동이 힘든 상황이거나 Windows 외의 OS를 지원하기 위해서 JRE 형태의 라이브러리를 동시에 제공하기도 합니다. 따라서 Mac과 Ubuntu OS에서 건보사이트 로그인을 시도해 보았습니다.

    결론은 Mac 혹은 Ubuntu에서는 공인인증서 로그인 창 호출을 위한 AnySign4PC 프로그램 설치를 할 수 없습니다. 또 JRE 등을 활용한 workaround도 제공되지 않습니다.

     

    국민건강보험공단 스크래핑 ​

     

    모바일 사이트 조차 로그인 기능이 없는 단순한 정보조회 페이지들 뿐입니다.

    국민건강보험공단 모바일 사이트

    즉, 로그인 서비스를 제공하지 않는 것으로 보여집니다. 게다가 개인 로그인이 필요한 앱은 별도로 제공하고 있었습니다. 그렇다면, Windows 계열의 컴퓨터에서 AnySign4PC 소켓 서버를 상시 구동할 수 있는 환경이 되어야 정상적인 #스크래핑 #개발이 가능하다는 얘기가 됩니다.

    다만, 기본 평문을 공인인증서로 서명한 signedMessage와 식별번호(주민등록번호 혹은 사업자등록번호)를 서명한 vidMessage를 직접 생성하면 AnySign4PC가 필요하지 않을 수도 있습니다.

    더 자세한 국민건강보험공단 스크래핑 정보가 궁금하신가요?

    "틸코블렛" 으로 문의해주세요~! 😃

    틸코블렛은 여러분의 비즈니스를 응원합니다🍀


    🥨틸코블렛 홈페이지 바로가기

    https://tilko.net/

    🥨틸코블렛 1:1 컨설팅 바로가기

    https://tilko.channel.io

    🥨틸코블렛 카카오톡 상담 바로가기

    http://pf.kakao.com/_ZahSK

    댓글

Designed by Tistory.