searchJobs
    • PDF

    searchJobs

    • PDF

    記事の要約

    Classic/VPC環境で利用できます。

    NAVERクラウドプラットフォームコンソールでユーザーが登録した診断リストを検索タイプとジョブの状態といった特定の診断内容でフィルタリング照会して結果を出力します。

    リクエスト

    リクエスト形式を説明します。リクエスト形式は次の通りです。

    メソッドURI
    POST/search

    リクエストヘッダ

    Web Security Checkerで共通して使用されるヘッダの詳細は、Web Security Checkerのリクエストヘッダをご参照ください。

    リクエストボディ

    リクエストボディの説明は次の通りです。

    {
        "searchType": "url",
        "searchKeyword": "http://your-domain",
        "statusCode": null,
        "limit": 10,
        "page": 1
    }
    
    フィールドタイプ必須の有無説明
    searchTypeStringRequired検索タイプ
    • url | memo | 空白
      • url: searchKeywordncloud.comといったドメインまたは URIを入力
      • memo: ジョブ作成時に入力したメモの文字列をsearchKeywordに入力
      • 空白: すべて検索
    searchKeywordStringRequiredsearchTypeに対応する検索キーワードを指定
    statusCodeIntegerRequiredジョブの状態コードで検索
    • null: すべて検索
    • 2: 診断待ち
    • 3: 診断進行中
    • 4: 診断完了
    • 5: 診断失敗
    • 12: URL収集待ち
    • 13: URL収集進行中
    • 14: URL収集完了
    • 15: URL収集失敗
    • 91: 診断キャンセル
    • 92: 停止中
    • 93: ジョブ停止
    limitIntegerRequiredリストのページごとの出力項目数
    pageIntegerRequiredリストのページ番号

    リクエスト例

    リクエストのサンプルコードは次の通りです。

    curl --location --request POST 'https://wsc.apigw.ntruss.com/api/v1/jobs/search'
    --header 'x-ncp-apigw-timestamp: {Timestamp}'
    --header 'x-ncp-iam-access-key: {Access Key}'
    --header 'x-ncp-apigw-signature-v2: {API Gateway Signature}'
    --header 'Content-Type: application/json'
    --data '{"searchType": "url",
    "searchKeyword": "http://your-domain",
    "statusCode": null,
    "limit": 10,
    "page": 1}'
    

    レスポンス

    レスポンス形式を説明します。

    レスポンスボディ

    レスポンスボディの説明は次の通りです。

    フィールドタイプ必須の有無説明
    total_cntInteger-ジョブレコードの総数
    total_page_cntInteger-最後のページ
    current_start_pageInteger-最初のページ番号(単位: 10)
    current_end_pageInteger-最後のページ番号(単位: 10)
    record_dataArray-診断リスト
    record_data[].instanceNoInteger-ジョブの識別番号
    record_data[].start_dateDate-診断ジョブの開始時間
    record_data[].end_dateDate-診断ジョブの終了時間
    record_data[].statusString-ジョブの状態
    record_data[].progressInteger-診断の進捗率
    record_data[].start_urlString-診断ジョブ対象 URL
    record_data[].crawl_cntInteger-クローリング URL収集数
    record_data[].scan_cntInteger-脆弱性数
    record_data[].memoString-ジョブのメモ
    record_data[].result_buttonString-ジョブの状態
    • report | cancel | terminate | expired | cause
      • report: レポート出力可能な状態
      • cancel: ジョブキャンセル状態
      • terminate: ジョブ停止状態
      • expired: 期限切れ
      • cause: ジョブ進行中にエラー発生
    record_data[].result_descString-ジョブ結果の詳細
    • ジョブエラー時に詳細出力
    record_data[].rescan_buttonString-再診断可能状態
    • possible | expired | null
      • possible: 再診断が可能
      • expired: 期限切れで再診断不可
      • null: 再診断不可
    record_data[].slave_dataArray-

    レスポンスステータスコード

    Web Security Checker APIで共通して使用されるエラーコードの詳細は、Web Security Checkerの共通エラーコードをご参照ください。

    レスポンス例

    レスポンスのサンプルコードは次の通りです。

    • 照会完了: 照会情報がある場合
    {
        "returnCode": "0",
        "returnDesc": "Request Success",
        "returnMessage": "Success",
        "resources": {
            "total_cnt": 1,
            "total_page_cnt": 1,
            "current_start_page": 1,
            "current_end_page": 1,
            "record_data": [
                {
                    "instanceNo": "1234567890",
                    "start_date": "2024-07-08 13:12:03",
                    "end_date": "2024-07-08 13:15:10",
                    "status": "診断完了",
                    "progress": null,
                    "start_url": "http://your-domain",
                    "crawl_cnt": "1",
                    "scan_cnt": "1",
                    "memo": "サンプル",
                    "result_button": "report",
                    "result_desc": "",
                    "rescan_button": "possible",
                    "slave_data": null
                }
            ]
        }
    }
    
    • 照会完了: 照会情報がない場合
    {
        "returnCode": "0",
        "returnDesc": "Request Success",
        "returnMessage": "Success",
        "resources": {
            "total_cnt": 0,
            "total_page_cnt": 0,
            "current_start_page": 0,
            "current_end_page": 0,
            "record_data": null
        }
    }
    

    サンプルコード

    make_signature関数でシグネチャーを作成してリクエストヘッドを作成し、入力したリクエストパラメータに応じて特定の状態の診断リストを照会してレスポンスコードが200の場合、結果を出力するサンプルコードは次の通りです。

    import sys
    import os
    import hashlib
    import hmac
    import base64
    import requests
    import time
    import json
    
    def make_signature(method, uri, timestamp):
    
        access_key = "{accessKey}"  # access key id (from portal or sub account)
        secret_key = "{secretKey}"  # secret key (from portal or sub account)
        secret_key = bytes(secret_key, 'UTF-8')
    
        method = method
        uri = uri
    
        message = method + " " + uri + "\n" + timestamp + "\n" + access_key
        message = bytes(message, 'UTF-8')
        signingKey = base64.b64encode(hmac.new(secret_key, message, digestmod=hashlib.sha256).digest())
        return signingKey
    
    timestamp = str(int(time.time() * 1000))
    
    method = 'POST'
    uri = '/api/v1/jobs/search'
    payload = {
      "searchType": "url",
      "searchKeyword": "user-domain",
      "statusCode": None,
      "limit": 1,
      "page": 1
    }
    
    timestamp = str(int(time.time() * 1000))
    
    signature = make_signature(method, uri, timestamp)
    
    headers = {
        'x-ncp-apigw-signature-v2': signature.decode('utf-8'),
        'x-ncp-apigw-timestamp': timestamp,
        'x-ncp-iam-access-key': '{accessKey}', # access key id (from portal or sub account)
        'Content-Type': 'application/json'
    }
    
    response = requests.request(
        method,
        f"https://wsc.apigw.ntruss.com{uri}",
        headers=headers,
        data=json.dumps(payload), # Json format required
    )
    
    if response.status_code == 200:
        print(response.text)
    
    参考

    サンプルコードは Python3を基に作成しました。Java、Node.jsなど他の言語で作成したサンプルコードは、API Gatewayご利用ガイドのAPIの呼び出しをご参照ください。


    この記事は役に立ちましたか?

    What's Next
    Changing your password will log you out immediately. Use the new password to log back in.
    First name must have atleast 2 characters. Numbers and special characters are not allowed.
    Last name must have atleast 1 characters. Numbers and special characters are not allowed.
    Enter a valid email
    Enter a valid password
    Your profile has been successfully updated.