네이버 클라우드 플랫폼 API 시작 가이드 개요

자세한 내용은 네이버 클라우드 플랫폼 Site Safer API reference를 참고하시기 바랍니다.

Site Safer API 사용 가이드에서는 Site Safer 의 API 를 사용하는 방법을 설명하고 있습니다.

Site Safer API(Published API) 이용하기

시작하기에 앞서, Site Safer의 API는 API Gateway를 통해 제공되므로 API Gateway의 이용 신청 및 API Key가 필요합니다.

아래의 가이드를 참조하여 API Gateway의 이용을 신청합니다.

API Gateway의 API Keys 메뉴로 이동하여 API Key를 생성합니다.

생성된 API Key를 이용하여 Site Safer의 API를 이용하게 되며, API에 대한 설명은 문서 하단의 연관정보인 Site Safer API reference 내용을 참고하시기 바랍니다.

Site Safer의 API의 Subscription Type은 공개-자율구독(Public)이므로 별도의 구독과정없이 생성하신 API Key를 이용하여 사용 가능합니다.

Site Safer 상품 가입하기

Site Safer를 사용하려면 먼저 Site Safer 상품에 가입을 해야 합니다. 상품에 가입하는 방법은 Site Safer 사용 가이드를 참고하시기 바랍니다.

인증 값 생성하기

네이버 클라우드 플랫폼 API에서 필요한 IAM 인증 값을 생성합니다. 이 인증값은 Site Safer API를 호출할 때 파라미터로 필요합니다. 세부 내용은 아래의 내용을 참조합니다.

인증 값 생성하기 예제

    public static String makeSignature( String method,
                                        String apiUrl,
                                        String timestamp,
                                        String accessKey,
                                        String secretKey ) throws Exception {

        String space = " ";
        String newLine = "\n";

        String message = new StringBuilder()
                .append(method)
                .append(space)
                .append(apiUrl)
                .append(newLine)
                .append(timestamp)
                .append(newLine)
                .append(accessKey)
                .toString();

        SecretKeySpec signingKey = new SecretKeySpec(secretKey.getBytes("UTF-8"), "HmacSHA256");
        Mac mac = Mac.getInstance("HmacSHA256");
        mac.init(signingKey);

        byte[] rawHmac = mac.doFinal(message.getBytes("UTF-8"));

        String encodeBase64String = Base64.getEncoder().encodeToString(rawHmac);

        return encodeBase64String;

    }

    public static void main(String[] args) throws Exception {

        String timestamp = System.currentTimeMillis() + "";

        String accessKey = "AAAAAAAAAAAAAA";   // from Portal or SubAccount
        String secretKey = "AAAAAAAAAAAAAAAAAAAAAAAAAAAA"; 

        String method = "POST";
        String apiDomain = "https://sitesafer.apigw.ntruss.com";

        String apiUrl = "/sitesafer/v1/호출할 API 이름";

        String signature = makeSignature( method, apiUrl, timestamp, accessKey, secretKey );

        URL url = new URL(apiDomain + apiUrl);
        HttpURLConnection con = (HttpURLConnection)url.openConnection();

        con.setRequestMethod(method);

        con.setRequestProperty("x-ncp-apigw-timestamp", timestamp); 
        con.setRequestProperty("x-ncp-iam-access-key", accessKey);
        con.setRequestProperty("x-ncp-apigw-signature-v2", signature);
        con.setRequestProperty("accept", "application/json");

        con.setDoOutput(true);

        String jsonInputString = "API 호출 파라미터 JSON Body";

        try(OutputStream os = con.getOutputStream()) {
            byte[] input = jsonInputString.getBytes("utf-8");
            os.write(input, 0, input.length);
        }

        int httpResponseCode = con.getResponseCode();

        if (httpResponseCode == 200) {

            try(BufferedReader br = new BufferedReader(
                    new InputStreamReader(con.getInputStream(), "utf-8"))) {
                        StringBuilder response = new StringBuilder();
                        String responseLine = null;
                        while ((responseLine = br.readLine()) != null) {
                            response.append(responseLine.trim());
                        }

                        System.out.println("\n");
                        System.out.print("response : \n");
                        System.out.println(response.toString());
                        System.out.println("\n");

                br.close();
            }
        }
    }

Site Safer 검사 그룹 생성하기

Site Safer를 사용하여 URL을 검사하려면 먼저 검사 그룹을 생성해야 합니다. 검사 그룹은 URL 및 검사 주기 등을 관리하는 단위로서, 다른 그룹과 이름이 중복되지 않도록 해야 하며, 20자 이하의 단어로 작성되어야 합니다.

① 인증 값 생성

네이버 클라우드 플랫폼 API에서 필요한 IAM 인증 값을 생성합니다. 세부 내용은 아래의 내용을 참조합니다.

② 인증 값과 함께 API 호출

검사 그룹 생성하기 예제


    public static String makeSignature( String method,
                                        String apiUrl,
                                        String timestamp,
                                        String accessKey,
                                        String secretKey ) throws Exception {

        String space = " ";
        String newLine = "\n";

        String message = new StringBuilder()
                .append(method)
                .append(space)
                .append(apiUrl)
                .append(newLine)
                .append(timestamp)
                .append(newLine)
                .append(accessKey)
                .toString();

        SecretKeySpec signingKey = new SecretKeySpec(secretKey.getBytes("UTF-8"), "HmacSHA256");
        Mac mac = Mac.getInstance("HmacSHA256");
        mac.init(signingKey);

        byte[] rawHmac = mac.doFinal(message.getBytes("UTF-8"));

        String encodeBase64String = Base64.getEncoder().encodeToString(rawHmac);

        return encodeBase64String;

    }

    public static void main(String[] args) throws Exception {

        String timestamp = System.currentTimeMillis() + "";

        String accessKey = "AAAAAAAAAAAAAA";   // from Portal or SubAccount   
        String secretKey = "AAAAAAAAAAAAAAAAAAAAAAAAAAAA"; 

        String method = "POST";
        String apiDomain = "https://sitesafer.apigw.ntruss.com";

        String apiUrl = "/sitesafer/v1/createUrlGroup";

        String signature = makeSignature( method, apiUrl, timestamp, accessKey, secretKey );

        URL url = new URL(apiDomain + apiUrl);
        HttpURLConnection con = (HttpURLConnection)url.openConnection();

        con.setRequestMethod(method);

        con.setRequestProperty("x-ncp-apigw-timestamp", timestamp);  
        con.setRequestProperty("x-ncp-iam-access-key", accessKey);
        con.setRequestProperty("x-ncp-apigw-signature-v2", signature);
        con.setRequestProperty("accept", "application/json");

        con.setDoOutput(true);

        String jsonInputString = "{\"urlGroupName\" : \"새그룹이름\"}";

        try(OutputStream os = con.getOutputStream()) {
            byte[] input = jsonInputString.getBytes("utf-8");
            os.write(input, 0, input.length);
        }

        int httpResponseCode = con.getResponseCode();

        if (httpResponseCode == 200) {

            try(BufferedReader br = new BufferedReader(
                    new InputStreamReader(con.getInputStream(), "utf-8"))) {
                        StringBuilder response = new StringBuilder();
                        String responseLine = null;
                        while ((responseLine = br.readLine()) != null) {
                            response.append(responseLine.trim());
                        }

                        System.out.println("\n");
                        System.out.print("response : \n");
                        System.out.println(response.toString());
                        System.out.println("\n");

                br.close();
            }
        }
    }

③ 생성된 검사 그룹의 ID 확인

API 호출에 대한 응답으로 생성된 검사 그룹의 ID가 전달됩니다. 이 검사 그룹 ID는 URL 추가 및 검사 일정 추가 시 파라미터로 활용될 수 있습니다.

Site Safer 검사 그룹에 URL 추가하기

Site Safer에 생성되어 있는 검사 그룹에 검사 대상 URL을 추가합니다. 검사 그룹의 ID는 검사 그룹 생성 시 전달되며, 검사 그룹 조회 API를 활용하여 확인할 수 있습니다.

① 인증 값 생성

네이버 클라우드 플랫폼 API에서 필요한 IAM 인증 값을 생성합니다. 세부 내용은 아래의 내용을 참조합니다.

② 인증 값과 함께 API 호출

검사 그룹에 URL 추가하기 예제

    public static String makeSignature( String method,
                                        String apiUrl,
                                        String timestamp,
                                        String accessKey,
                                        String secretKey ) throws Exception {

        String space = " ";
        String newLine = "\n";

        String message = new StringBuilder()
                .append(method)
                .append(space)
                .append(apiUrl)
                .append(newLine)
                .append(timestamp)
                .append(newLine)
                .append(accessKey)
                .toString();

        SecretKeySpec signingKey = new SecretKeySpec(secretKey.getBytes("UTF-8"), "HmacSHA256");
        Mac mac = Mac.getInstance("HmacSHA256");
        mac.init(signingKey);

        byte[] rawHmac = mac.doFinal(message.getBytes("UTF-8"));

        String encodeBase64String = Base64.getEncoder().encodeToString(rawHmac);

        return encodeBase64String;

    }

    public static void main(String[] args) throws Exception {

        String timestamp = System.currentTimeMillis() + "";

        String accessKey = "AAAAAAAAAAAAAA";   // from Portal or SubAccount   
        String secretKey = "AAAAAAAAAAAAAAAAAAAAAAAAAAAA"; 

        String method = "POST";
        String apiDomain = "https://sitesafer.apigw.ntruss.com";

        String apiUrl = "/sitesafer/v1/addInspectionUrl";

        String signature = makeSignature( method, apiUrl, timestamp, accessKey, secretKey );

        URL url = new URL(apiDomain + apiUrl);
        HttpURLConnection con = (HttpURLConnection)url.openConnection();

        con.setRequestMethod(method);

        con.setRequestProperty("x-ncp-apigw-timestamp", timestamp);   
        con.setRequestProperty("x-ncp-iam-access-key", accessKey);
        con.setRequestProperty("x-ncp-apigw-signature-v2", signature);
        con.setRequestProperty("accept", "application/json");

        con.setDoOutput(true);

        String jsonInputString = "{\"urlGroupId\": 그룹ID, \"url\": \"http://www.naver.com\"}";

        try(OutputStream os = con.getOutputStream()) {
            byte[] input = jsonInputString.getBytes("utf-8");
            os.write(input, 0, input.length);
        }

        int httpResponseCode = con.getResponseCode();

        if (httpResponseCode == 200) {

            try(BufferedReader br = new BufferedReader(
                    new InputStreamReader(con.getInputStream(), "utf-8"))) {
                        StringBuilder response = new StringBuilder();
                        String responseLine = null;
                        while ((responseLine = br.readLine()) != null) {
                            response.append(responseLine.trim());
                        }

                        System.out.println("\n");
                        System.out.print("response : \n");
                        System.out.println(response.toString());
                        System.out.println("\n");

                br.close();
            }
        }
    }

③ 등록된 검사 URL의 ID 확인

등록된 검사 URL ID는 다른 API를 호출할 때 파라미터로 활용될 수 있습니다.

Site Safer 검사 그룹에 검사 일정 추가하기

Site Safer에 생성되어 있는 검사 그룹에 검사 일정을 추가합니다. 검사 그룹의 ID는 검사 그룹 생성 시 전달되며, 검사 그룹 조회 API를 활용하여 확인할 수 있습니다.

① 인증 값 생성

네이버 클라우드 플랫폼 API에서 필요한 IAM 인증 값을 생성합니다. 세부 내용은 아래의 내용을 참조합니다.

② 인증 값과 함께 API 호출

검사 그룹에 검사 일정 추가하기 예제


    public static String makeSignature( String method,
                                        String apiUrl,
                                        String timestamp,
                                        String accessKey,
                                        String secretKey ) throws Exception {

        String space = " ";
        String newLine = "\n";

        String message = new StringBuilder()
                .append(method)
                .append(space)
                .append(apiUrl)
                .append(newLine)
                .append(timestamp)
                .append(newLine)
                .append(accessKey)
                .toString();

        SecretKeySpec signingKey = new SecretKeySpec(secretKey.getBytes("UTF-8"), "HmacSHA256");
        Mac mac = Mac.getInstance("HmacSHA256");
        mac.init(signingKey);

        byte[] rawHmac = mac.doFinal(message.getBytes("UTF-8"));

        String encodeBase64String = Base64.getEncoder().encodeToString(rawHmac);

        return encodeBase64String;

    }

    public static void main(String[] args) throws Exception {

        String timestamp = System.currentTimeMillis() + "";

        String accessKey = "AAAAAAAAAAAAAA";   // from Portal or SubAccount    
        String secretKey = "AAAAAAAAAAAAAAAAAAAAAAAAAAAA"; 

        String method = "POST";
        String apiDomain = "https://sitesafer.apigw.ntruss.com";

        String apiUrl = "/sitesafer/v1/setInspectionSchedule";

        String signature = makeSignature( method, apiUrl, timestamp, accessKey, secretKey );

        URL url = new URL(apiDomain + apiUrl);
        HttpURLConnection con = (HttpURLConnection)url.openConnection();

        con.setRequestMethod(method);

        con.setRequestProperty("x-ncp-apigw-timestamp", timestamp);   
        con.setRequestProperty("x-ncp-iam-access-key", accessKey);
        con.setRequestProperty("x-ncp-apigw-signature-v2", signature);
        con.setRequestProperty("accept", "application/json");

        con.setDoOutput(true);

        String jsonInputString = "{\"urlGroupId\": 그룹ID, \"repeat\": \"daily\", \"inspectionHour\": 13, \"inspectionMinute\": 0, \"timeZoneId\": \"Asia/Seoul\", \"timeZoneOffset\": \"+09:00\"}";

        // repeat, timeZoneId,timeZoneOffset는 고정값입니다.
        // inspectionHour는 0 ~ 23, inspectionMinute는 0 또는 30

        try(OutputStream os = con.getOutputStream()) {
            byte[] input = jsonInputString.getBytes("utf-8");
            os.write(input, 0, input.length);
        }

        int httpResponseCode = con.getResponseCode();

        if (httpResponseCode == 200) {

            try(BufferedReader br = new BufferedReader(
                    new InputStreamReader(con.getInputStream(), "utf-8"))) {
                        StringBuilder response = new StringBuilder();
                        String responseLine = null;
                        while ((responseLine = br.readLine()) != null) {
                            response.append(responseLine.trim());
                        }

                        System.out.println("\n");
                        System.out.print("response : \n");
                        System.out.println(response.toString());
                        System.out.println("\n");

                br.close();
            }
        }
    }

③ 등록된 검사 일정의 ID 확인

등록된 검사 일정 ID는 다른 API를 호출할 때 파라미터로 활용될 수 있습니다.

Site Safer 검사 그룹의 검사 결과 조회하기

Site Safer가 검사한결과를 조회할 수 있습니다.

① 인증 값 생성

네이버 클라우드 플랫폼 API에서 필요한 IAM 인증 값을 생성합니다. 세부 내용은 아래의 내용을 참조합니다.

② 인증 값과 함께 API 호출

검사 그룹의 검사 결과 조회하기 예제


    public static String makeSignature( String method,
                                        String apiUrl,
                                        String timestamp,
                                        String accessKey,
                                        String secretKey ) throws Exception {

        String space = " ";
        String newLine = "\n";

        String message = new StringBuilder()
                .append(method)
                .append(space)
                .append(apiUrl)
                .append(newLine)
                .append(timestamp)
                .append(newLine)
                .append(accessKey)
                .toString();

        SecretKeySpec signingKey = new SecretKeySpec(secretKey.getBytes("UTF-8"), "HmacSHA256");
        Mac mac = Mac.getInstance("HmacSHA256");
        mac.init(signingKey);

        byte[] rawHmac = mac.doFinal(message.getBytes("UTF-8"));

        String encodeBase64String = Base64.getEncoder().encodeToString(rawHmac);

        return encodeBase64String;

    }

    public static void main(String[] args) throws Exception {

        String timestamp = System.currentTimeMillis() + "";

        String accessKey = "AAAAAAAAAAAAAA";   // from Portal or SubAccount  
        String secretKey = "AAAAAAAAAAAAAAAAAAAAAAAAAAAA"; 

        String method = "POST";
        String apiDomain = "https://sitesafer.apigw.ntruss.com";

        String apiUrl = "/sitesafer/v1/getInspectionResult";

        String signature = makeSignature( method, apiUrl, timestamp, accessKey, secretKey );

        URL url = new URL(apiDomain + apiUrl);
        HttpURLConnection con = (HttpURLConnection)url.openConnection();

        con.setRequestMethod(method);

        con.setRequestProperty("x-ncp-apigw-timestamp", timestamp); 
        con.setRequestProperty("x-ncp-iam-access-key", accessKey);
        con.setRequestProperty("x-ncp-apigw-signature-v2", signature);
        con.setRequestProperty("accept", "application/json");

        con.setDoOutput(true);

        String jsonInputString = "{ \"urlGroupId\": 그룹 ID, \"fromDate\": 1588258801000, \"toDate\": 1590850799000, \"page\": 1, \"countPerPage\": 10 }";
        // fromDate, toDate 는 timestamp        


        try(OutputStream os = con.getOutputStream()) {
            byte[] input = jsonInputString.getBytes("utf-8");
            os.write(input, 0, input.length);
        }

        int httpResponseCode = con.getResponseCode();

        if (httpResponseCode == 200) {

            try(BufferedReader br = new BufferedReader(
                    new InputStreamReader(con.getInputStream(), "utf-8"))) {
                        StringBuilder response = new StringBuilder();
                        String responseLine = null;
                        while ((responseLine = br.readLine()) != null) {
                            response.append(responseLine.trim());
                        }

                        System.out.println("\n");
                        System.out.print("response : \n");
                        System.out.println(response.toString());
                        System.out.println("\n");

                br.close();
            }
        }
    }

참고 사항

본 상품은 글로벌 리전 서비스로도 제공됩니다.

연관 정보 바로가기

아래 가이드에서 연관 정보를 확인할 수 있습니다.

""에 대한 건이 검색되었습니다.

    ""에 대한 검색 결과가 없습니다.

    처리중...