요구사항
- JDK 17 이상
개발 환경 설정
-
Maven Repository 사용
Maven Repository 사용해 sdk를 사용할 수 있습니다. gradle 스크립트에 아래와 같이 추가합니다.implementation 'io.github.sparrow-co-ltd:sparrow-ondemand-java-sdk:2.0.0-SNAPSHOT' -
로컬 JAR 사용
로컬에 위치한 JAR 파일을 사용하려면 gradle 스크립트에 아래와 같이 파일 경로를 명시합니다.implementation files("{jar 파일 경로}")
토큰 발급
초기화
ondemand 분석 관련 요청을 위해 아래의 코드를 추가해 OndemandClient 인스턴스를 생성합니다.
// config
OndemandClientConfig config = OndemandClientConfig.builder()
.apiKey("eyJhbGciOiJIUzUxMiJ9.........")
.url("http://test.com")
.build();
// create client
OndemandClient client = new OndemandClient(config);
OndemandClientConfig 는 OndemandClient 생성시 설정 값 지정을 위해 사용됩니다.
- apiKey : api 요청시 인증을 위해 3에서 발급 받은 토큰 입력
- url : ondemand backend url 입력
분석 메소드
생성한 client의 메소드를 통해 분석을 수행합니다. 메소드 동작시 OndemandException이 발생 할 수 있습니다. 예외에 대한 자세한 내용은 아래를 참고해주세요
1. 분석 요청
생성한 client로 분석 요청을 전송할 수 있습니다.
RequestInfo requestInfo = client.doAnalysis(analysisRequest : AnalysisRequest);
파라미터
-
analysisRequest 필수 object
분석 타입 별로 SastAnalysisRequest , ScaAnalysisRequest , DastAnalysisRequest 3가지 인터페이스를 제공합니다.-
SastAnalysisRequest
분석 파일을 다운로드 받아서 Sast 분석을 수행합니다SastAnalysisRequest request = SastAnalysisRequest.builder()
.callbackUrl(...)
.option(...)
.build();-
callbackUrl List
분석 종료 , 분석 상태 등 이벤트가 발생했을 때 콜백을 설정합니다. 생성 편의를 위해 of 메소드와 전송되는 콜백 형식인 SrcUploadCallback , CompleteCallback, ProgressCallback, DastProgressCallback 클래스를 제공합니다.- url 필수 String
콜백 url 설정 - type 필수 List < CallbackType > 콜백 타입을 설정
- headers List
- key 필수 String
콜백 header 키 - value 필수 String
콜백 header 값
- key 필수 String
- url 필수 String
-
memo String 분석에 부가적인 정보를 기록하기 위한 항목입니다. 입력한 그대로 출력됩니다.
-
option 필수 object
Sast 분석 소스코드 정보, 분석 옵션 등을 설정할 수 있습니다.-
analysisSource 필수 object
분석할 파일이 저장된 저장소이며 VCS , ObjectStorage 타입을 지원합니다.-
VCS
- url 필수 String
분석할 파일이 저장된 저장소의 url입니다. - branch String
저장소 중 분석하려는 파일이 업로드된 브랜치의 이름입니다. 입력하지 않았을 때 default 브랜치를 타겟으로 분석합니다. - tag String
분석하려는 브랜치의 태그 정보입니다. - commitId String
분석 하려는 커밋 아이디 정보입니다. - id String
VCS 인증을 위한 id입니다. - password String
VCS 인증을 위한 password 입니다. id와 같이 입력되야하며 authToken과 동시에 입력될 수 없습니다. - authToken String
VCS 인증을 위한 authToken 이며 id, password와 동시에 입력될 수 없습니다.
- url 필수 String
-
ObjectStorage
- bucket 필수 String
분석할 파일의 bucket입니다. - object 필수 String
분석할 파일의 object 경로입니다. - endPoint 필수 String
분석할 버켓이 위치한 endPoint입니다. - accessKey String
인증을 위한 accessKey입니다. - secretKey String
인증을 위한 secretKey입니다.
- bucket 필수 String
-
-
-
-
ScaAnalysisRequest
분석 파일을 다운로드 받아서 Sca 분석을 수행합니다ScaAnalysisRequest request = ScaAnalysisRequest.builder()
.callbackUrl(...)
.option(...)
.build();-
callbackUrl List
분석 종료 , 분석 상태 등 이벤트가 발생했을 때 콜백을 설정합니다. 생성 편의를 위해 of 메소드와 전송되는 콜백 형식인 SrcUploadCallback , CompleteCallback, ProgressCallback, DastProgressCallback 클래스를 제공합니다.- url 필수 String
콜백 url 설정 - type 필수 List < CallbackType > 콜백 타입을 설정
- headers List
- key 필수 String
콜백 header 키 - value 필수 String
콜백 header 값
- key 필수 String
- url 필수 String
-
memo 분석에 부가적인 정보를 기록하기 위한 항목입니다. 입력한 그대로 출력됩니다.
-
option 필수 object
Sca 분석 소스코드 정보, 분석 옵션 등을 설정할 수 있습니다.-
analysisSource 필수 object
분석할 파일이 저장된 저장소이며 VCS , ObjectStorage 타입을 지원합니다.-
VCS
- url 필수 String
분석할 파일이 저장된 저장소의 url입니다. - branch String
저장소 중 분석하려는 파일이 업로드된 브랜치의 이름입니다. 입력하지 않았을 때 default 브랜치를 타겟으로 분석합니다. - tag String
분석하려는 브랜치의 태그 정보입니다. - commitId String
분석 하려는 커밋 아이디 정보입니다. - id String
VCS 인증을 위한 id입니다. - password String
VCS 인증을 위한 password 입니다. id와 같이 입력되야하며 authToken과 동시에 입력될 수 없습니다. - authToken String
VCS 인증을 위한 authToken 이며 id, password와 동시에 입력될 수 없습니다.
- url 필수 String
-
ObjectStorage
- bucket 필수 String
분석할 파일의 bucket입니다. - object 필수 String
분석할 파일의 object 경로입니다. - endPoint 필수 String
분석할 버켓이 위치한 endPoint입니다. - accessKey String
인증을 위한 accessKey입니다. - secretKey String
인증을 위한 secretKey입니다.
- bucket 필수 String
-
-
-
-
DastAnalysisRequest
취약점 분석 대상 url을 입력해 Dast 분석을 수행합니다.DastAnalysisRequest request = DastAnalysisRequest.builder()
.option(...)
.build();- callbackUrl List
분석 종료 , 분석 상태 등 이벤트가 발생했을 때 콜백을 설정합니다. 생성 편의를 위해 of 메소드와 전송되는 콜백 형식인 SrcUploadCallback , CompleteCallback, ProgressCallback, DastProgressCallback 클래스를 제공합니다.- url 필수 String
콜백 url 설정 - type 필수 List < CallbackType > 콜백 타입을 설정
- headers List
- key 필수 String
콜백 header 키 - value 필수 String
콜백 header 값
- key 필수 String
- url 필수 String
- memo 분석에 부가적인 정보를 기록하기 위한 항목입니다. 입력한 그대로 출력됩니다.
- option 필수 object
- callbackUrl List
-
반환값
- RequestInfo object
예시 코드
Sast VCS 분석 , Sca ObjectStorage 분석, Dast 분석을 요청하는 예시 코드입니다.
SastAnalysisRequest request = SastAnalysisReqeust.builder()
.option(
SastOptionRequest.builder()
.analysisSource(
AnalysisSourceRequest.VCS.builder()
.url("https://github.com/test/testRepo.git")
.build())
.build())
.build();
RequestInfo requestInfo = client.doAnalysis(request);
//Sca
ScaAnalysisReqeust request2 = ScaAnalysisReqeust.builder()
.callbackUrl(
Arrays.asList(
CallbackUrl.of("url",
Arrays.asList(CallbackType.ANALYSIS_PROGRESS),
Arrays.asList(CallbackHeader.of("key", "value"))
)))
.option(
ScaOptionRequest.builder()
.analysisSource(
AnalysisSourceRequest.ObjectStorage.builder()
.endPoint("endpoint")
.bucket("bucket")
.object("object")
.accessKey("accessKey")
.secretKey("secretKey")
.build())
.sbomCreatorEmail("DD")
.build())
.build();
RequestInfo requestInfo2 = client.doAnalysis(request2);
//Dast
DastAnalysisRequest request3 = DastAnalysisRequest.builder()
.option(
DastOptionRequest.builder()
.crawlerTargetSeedUrls(Arrays.asList("http://52.78.58.6:38380/dcta-for-java/absolutePathDisclosure"))
.build())
.build();
RequestInfo requestInfo3 = client.doAnalysis(request3);
각 도구별 AnalysisRequest를 파라미터로 doAnalysis 메소드를 호출합니다.
응답으로 RequestInfo를 반환합니다.
2. 요청 상태 확인
분석 요청이 정상적으로 됐다면 요청 상태를 확인 할 수 있습니다.
RequestInfo requestInfo = client.getRequest(requestId: Long)
파라미터
- requestId 필수 Long
요청 id입니다.
반환값
- RequestInfo object
3. 분석 상태 확인
분석 요청이 정상적으로 됐다면 진행 중인 분석 상태를 확인 할 수 있습니다. 각 도구별 상세 정보인 SastAnalysisInfo , ScaAnalysisInfo , DastAnalysisInfo로 타입 캐스팅이 가능합니다.
AnalysisInfo analysisInfo = client.getAnalysis(analysisId: Long)
파라미터
- analysisId 필수 Long
분석 id입니다.
반환값
- AnalysisInfo object
4. 분석 결과 파일 다운로드
분석이 완료됐다면 분석 결과 파일을 다운로드 받을 수 있습니다.
client.downLoadAnalysisResult(analysisId: Long ,filePath: String);
downLoadAnalysisResult 메소드를 호출하면 지정한 file path에 분석 결과 파일이 다운로드됩니다.
파라미터
- analysisId 필수 Long
분석 id입니다. - filePath 필수 String
분석 다운로드 file path 입니다. path에는 파일 이름까지 명시돼야하며 zip 확장자만 지원합니다.
ex) /home/result.zip
반환값
없음
5. 분석 결과 Reader 생성
분석이 완료됐다면 분석 결과 Reader 객체를 반환 받을 수 있습니다.
ResultReader resultReader = client.getAnalysiResultReader(analysisId: Long ,filePath: String);
getAnalysiResultReader 메소드를 호출하게되면 path 경로에 분석 결과를 다운로드 받은 후 같은 경로에 analysisId를 이름으로 디렉토리를 생성해 압축 해제합니다.
압축 해제된 파일을 대상으로 Reader 객체가 생성됩니다.
파라미터
- analysisId 필수 Long
분석 id입니다. - filePath 필수 String
분석 다운로드 file path 입니다. path에는 파일 이름까지 명시돼야하며 zip 확장자만 지원합니다.
ex) /home/result.zip
반환값
-
ResultReader object SastResultReader , ScaResultReader , DastResultReader가 제공되며 도구별로 타입 캐스팅을 필수로 해야합니다.
SastResultReader sastResultReader = (SastResultReader) client.getAnalysiResultReader(analysisId: Long ,filePath: String);
ScaResultReader scaResultReader = (ScaResultReader) client.getAnalysiResultReader(analysisId: Long ,filePath: String);
DastResultReader dastResultReader = (DastResultReader) client.getAnalysiResultReader(analysisId: Long ,filePath: String);-
SastResultReader object
readSummary method
분석 결과 요약 정보를 반환합니다.
SastSummary sastSummary = sastResultReader.readSummary();-
파라미터 없음
-
반환값
-
SastSummary
readAsset method
분석 자산 목록을 반환합니다.
List<String> assets = sastResultReader.readAsset();-
파라미터 없음
-
반환값 List< String >
issueSize method
결과 이슈 파일 총 개수를 반환합니다.
int size = sastResultReader.issueSize();-
파라미터 없음
-
반환값
-
size int 이슈 파일 총 개수
readIssue method
결과 이슈 파일을 읽어 SastIssue 리스트를 반환합니다.
List<SastIssue> sastIssues = sastResultReader.readIssue(index: int);- 파라미터
- index 이슈 파일 index를 의미하며 1부터 시작합니다. 최대 index는 issueSize()를 통해 확인할 수 있습니다.
- 반환값 List< SastIssue >
readWorkMessage method
분석 중 발생하는 메세지를 읽어 WorkMessage 리스트를 반환합니다.
List<WorkMessage> workMessages = sastResultReader.readWorkMessage();-
파라미터 없음
-
반환값 List< WorkMessage >
-
-
ScaResultReader object
readSummary method
분석 결과 요약 정보를 반환합니다.
ScaSummary scaSummary = scaResultReader.readSummary();-
파라미터 없음
-
반환값 ScaSummary
readAsset method
분석 자산 목록을 반환합니다.
List<String> assets = scaResultReader.readAsset();-
파라미터 없음
-
반환값 List< String >
issueSize method
결과 이슈 파일 총 개수를 반환합니다.
int size = scaResultReader.issueSize();-
파라미터 없음
-
반환값 int
readIssue method
결과 이슈 파일을 읽어 ScaComponent 리스트를 반환합니다.
List<ScaComponent> scaComponents = scaResultReader.readIssue(index: int);- 파라미터
- index 이슈 파일 index를 의미하며 1부터 시작합니다. 최대 index는 issueSize()를 통해 확인할 수 있습니다.
- 반환값 List< ScaComponent >
readWorkMessage method
분석 중 발생하는 메세지를 읽어 WorkMessage 리스트를 반환합니다.
List<WorkMessage> workMessages = scaResultReader.readWorkMessage();-
파라미터 없음
-
반환값 List< WorkMessage >
getSbomPath method
sbomType을 받아 해당 타입에 맞는 sbom 경로를 반환합니다.
Path sbomPath = scaResultReader.getSbomPath(sbomType: SbomType);-
파라미터
- sbomType 필수 sbom 타입
-
반환값
- sbomPath Path sbom 파일 경로입니다.
getLicenseNoticeHtmlPath method
html 타입 라이선스 고지문 파일 경로를 반환합니다.
Path path = scaResultReader.getLicenseNoticeHtmlPath();-
파라미터 없음
-
반환값
- path Path html 타입 라이선스 고지문 파일 경로 입니다.
getLicenseNoticeMarkDownPath method
markdown 타입 라이선스 고지문 파일 경로를 반환합니다.
Path path = scaResultReader.getLicenseNoticeMarkDownPath();-
파라미터 없음
-
반환값
- path Path markdown 타입 라이선스 고지문 파일 경로 입니다.
getLicenseNoticeTextPath method
텍스트 타입 라이선스 고지문 파일 경로를 반환합니다.
Path path = scaResultReader.getLicenseNoticeTextPath();-
파라미터 없음
-
반환값
- path Path 텍스트 타입 라이선스 고지문 파일 경로 입니다.
-
-
DastResultReader object
readSummary method
분석 결과 요약 정보를 반환합니다.
DastSummary dastSummary = dastResultReader.readSummary();-
파라미터 없음
-
반환값 DastSummary
readAsset method
분석 자산 목록을 반환합니다.
List<String> assets = dastResultReader.readAsset();-
파라미터 없음
-
반환값 List< String >
issueSize method
결과 이슈 파일 총 개수를 반환합니다.
int size = dastResultReader.issueSize();-
파라미터 없음
-
반환값 int
readIssue method
결과 이슈 파일을 읽어 DastIssue 리스트를 반환합니다.
List<DastIssue> dastIssues = dastResultReader.readIssue(index: int);- 파라미터
- index 이슈 파일 index를 의미하며 1부터 시작합니다. 최대 index는 issueSize()를 통해 확인할 수 있습니다.
- 반환값 List< DastIssue >
readWorkMessage method
분석 중 발생하는 메세지를 읽어 WorkMessage 리스트를 반환합니다.
List<WorkMessage> workMessages = dastResultReader.readWorkMessage();-
파라미터 없음
-
반환값 List< WorkMessage >
-
-
6. 분석 중지
진행 중인 분석을 중지할 수 있습니다.
client.analysisStop(analysisId: Long);
파라미터
- analysisId 필수 Long
분석 id입니다.
반환값
없음
사용 정보
RequestInfo
- requestId Long 요청 아이디
- accountId Long 사용자 아이디
- operationType String
요청 타입 - requestVersion String
분석 결과 형식 버전 - stopAnalysisId Long
중지 요청된 분석 id - status String
요청 상태 - result String
요청 결과 - insertTime Timestamp 요청이 등록된 일시
- updateTime Timestamp 요청이 마지막으로 수정된 일시
- analysisList List< AnalysisInfo > 분석 목록
AnalysisInfo
- analysisId Long 분석 id
- requestId Long
분석 요청 id - status String
분석 상태 - result String
분석 결과 - progress Integer
분석 진행률 - toolType String
분석 타입 - memo String
분석 메모 - startTime TimeStamp
분석 시작 시간 - endTime TimeStamp
분석 종료 시간 - issueCount Long
분석에서 검출된 총 이슈의 수 - issueCountRisk1 Long
위험도가 '낮음'에 해당하는 이슈 수 - issueCountRisk2 Long
위험도가 '보통'에 해당하는 이슈 수 - issueCountRisk3 Long
위험도가 '높음'에 해당하는 이슈 수 - issueCountRisk4 Long
위험도가 '위험'에 해당하는 이슈 수 - issueCountRisk5 Long
위험도가 '매우 위험'에 해당하는 이슈 수
ANALYSIS_STATUS
분석 상태를 나타내며 7가지로 구분됩니다.
- INIT
분석을 진행하기 위한 초기화 진행 중임을 나타냅니다. - READY
초기화 완료 후 분석 준비 진행 중임을 나타냅니다. - PRE_PROCESS
분석을 위한 전처리 진행 중임을 나타냅니다. - ANALYSIS
분석 진행 중임을 나타냅니다. - POST_PROCESS
분석이 완료된 후 결과 처리 진행 중임을 나타냅니다. - COMPLETE
분석, 결과 처리 모두 완료된 상태를 나타냅니다. - STOP
분석이 중지된 상태를 나타냅니다.
ANALYSIS_RESULT
분석 결과값을 나타냅니다.
- SUCCESS
분석이 성공했음을 의미합니다. - FAIL
분석이 실패했음을 의미합니다. - STOPPED 분석이 중지됐음을 의미합니다.
Progress
분석 결과값을 나타냅니다.
- SUCCESS
분석이 성공했음을 의미합니다. - FAIL
분석이 실패했음을 의미합니다. - STOPPED 분석이 중지됐음을 의미합니다.
OndemandException
OndemandException은 RuntimeException을 통해 예외를 전달하며 두가지로 분류됩니다.
- OndmandClientException
온디맨드 서비스에 요청을 보내거나 응답 처리 로직을 수행할 때 클라이언트단에 발생합니다.
- resultCode String exception 발생 원인 코드 정보를 담고 있습니다.
- message String 예외 메세지를 담고있습니다.
- OndmandServerException
온디맨드 서비스가 성공적으로 요청을 받았지만 처리하지 못해 에러 응답을 반환하는 경우 발생합니다.
- resultCode String exception 발생 원인 코드 정보를 담고 있습니다.
- message string 예외 메세지를 담고있습니다.
- statusCode int 응답 상태 코드를 나타냅니다.
- validationErrors 요청 유효성 검증 실패시 서버에서 반횐되는 상세 실패 메세지입니다.
분석 옵션
소스코드 분석 옵션
-
maxSourceSize 최대 소스 크기 소스코드 분석 또는 오픈소스 분석에서 검사할 분석 대상의 최대 크기입니다. 소스코드 분석 또는 오픈소스 분석을 수행하는 동안 내려받은 분석 대상의 크기가
SOURCE_SIZE보다 크면 분석이 종료됩니다.1부터200사이의 정수를 입력할 수 있습니다.(단위: MB) -
extensions 분석 대상 파일 확장자 목록 소스코드 분석은 분석 대상에 포함시킬 파일을 확장자(FILE_EXTENSION1, FILE_EXTENSION2)로 구분합니다. 여기에 해당하지 않는 파일은 분석에서 제외됩니다.
*로 입력하는 경우 모든 파일을 분석합니다.입력 예시
["java", "go"]["*"]
Tip: 압축 파일의 경우 압축 파일의 확장자가 분석 대상자에 해당하면 압축 파일 안에 있는 모든 파일이 분석에 포함됩니다.
-
excludedPath 분석 제외 경로 분석에서 제외할 파일이 있는 경우 해당 파일의 경로(EXCLUDED_PATH1, EXCLUDED_PATH2, EXCLUDED_PATH3)를 입력합니다. 여기에 입력한 경로에 포함된 파일로부터 이슈가 검출되지 않게 됩니다.
입력 예시
/User/jkw/ddde/home/sparrow/*\*/dev/\*
Tip: 대소문자를 구분하지 않으며
*를 사용할 수 있습니다.*AA*: AA가 포함된 모든 문자열과 일치AA*: AA로 시작하는 모든 문자열과 일치
오픈소스 분석 옵션
-
maxSourceSize 최대 소스 크기 소스코드 분석 또는 오픈소스 분석에서 검사할 분석 대상의 최대 크기입니다. 소스코드 분석 또는 오픈소스 분석을 수행하는 동안 내려받은 분석 대상의 크기가
SOURCE_SIZE보다 크면 분석이 종료됩니다.1부터200사이의 정수를 입력할 수 있습니다.(단위: MB) -
sbomTypes SBOM 유형 목록 빈 목록의 경우 SBOM을 생성하지 않습니다. 다음과 같은 값을 입력할 수 있습니다.
- SPDX 2.2:
SPDX22(.spdx),SPDX22_JSON(.json),SPDX22_SPREADSHEET(.xlsx),SPDX22_RDF(.rdf) - SPDX 2.3:
SPDX23(.spdx),SPDX23_JSON(.json),SPDX23_SPREADSHEET(.xlsx),SPDX23_RDF(.rdf) - SPDX 3.0:
SPDX30_JSON(.json) - CycloneDX:
CycloneDX14,CycloneDX15,CycloneDX16(.json) - SWID:
SWID(.zip) - NIS SBOM:
NIS_CSV(.csv),NIS_PDF(.pdf),NIS_JSON(.json)
- SPDX 2.2:
-
sbomCreatorUsername SBOM 생성자
-
sbomCreatorEmail SBOM 생성자 이메일
웹취약점 분석 옵션
-
crawlerTargetSeedUrls 분석 대상 URL 분석할 URL이며 하나만 입력할 수 있습니다.
분석 대상 URL을 입력할 때는 해당 URL에 외부 인터넷이 접근할 수 있는지, 해당 서버에 방화벽이 동작하고 있지 않은지 확인해야 합니다.
-
commonRecordsLogin 로그인 기록 파일 목록 로그인 기록 파일은 이벤트 클립보드에서 저장한 .ecl 형식의 파일로써 특정 URL에서 사용자의 동작이 기록되어 있습니다. 주로 사용자가 특정 URL에서 로그인하는 데 사용한 ID 및 비밀번호 정보를 저장하여 URL을 수집하거나 분석할 때 사용합니다.
로그인 기록 파일을 첨부하는 경우 URL 수집 및 분석 중에 이벤트 클립보드의 기록이 시작된 URL에 도달하면 해당 파일에 저장된 사용자의 동작을 그대로 재현하게 됩니다. 이러한 방법으로 로그인 페이지에서 필요한 인증을 통과할 수 있습니다.
- Sparrow Event Clipboard를 다운로드하고 로그인 과정을 파일로 저장해서 사용하세요.
-
crawlerTargetContainEntireSeed 하위 경로만 수집 하위 경로만 수집은 프로젝트에 입력한 분석 대상 URL을 모두 포함하는 경로만 수집하는지를 의미하며
true,false로 구분합니다.(기본값:true) 이 옵션을true로 설정하면 분석 대상 URL을 포함한 하위 경로만 분석하게 됩니다. 이 옵션을false로 설정하면 프로젝트의 분석 대상 URL에 포함된 상위 경로도 분석하게 됩니다. -
crawlerRequestAcceptLanguage 클라이언트 언어 분석 대상인 웹 애플리케이션이 표시되는 브라우저에서 어떤 언어를 설정했고, HTTP 클라이언트가 어떤 언어를 이해할 수 있는지 설정합니다. 언어_지역으로 표시되는 로케일 형식으로 입력할 수 있습니다.(기본값:
ko_KR) -
crawlerCrawlMaxUrl 최대 수집 URL 수
최대 수집 URL 수는 분석에서 수집할 수 있는 URL 수의 최대 개수입니다. 너무 많은 URL이 수집될 경우 분석 결과가 정확하지 않을 수 있습니다. 따라서 이 옵션에서 수집할 URL의 최대 개수를 지정하는 것이 좋습니다.(기본값:
0)이 옵션에 입력된 값이 클수록 수집할 수 있는 URL의 개수가 늘어나지만 수집을 위한 분석 시간도 증가할 수 있습니다. 이 옵션에 입력된 값이 적을수록 수집할 수 있는 URL 개수가 줄어들어 분석 시간도 줄어듭니다. 아무것도 입력하지 않는 경우 옵션의 기본값은
0이며 이 경우에 수집할 수 있는 URL의 개수를 제한하지 않게 됩니다. -
crawlerCrawlTimeout 최대 수집 시간
최대 수집 시간은 분석에서 URL을 수집할 수 있는 최대 시간입니다. 너무 많은 시간이 걸리는 경우 분석 결과가 정확하지 않을 수 있습니다. 따라서 이 옵션에서 수집 시간을 지정하는 것이 좋습니다.(단위: 분, 기본값:
0)이 옵션에 입력된 값이 클수록 수집을 위한 분석 시간이 증가하고 수집할 수 있는 URL의 개수도 늘어날 수 있습니다. 이 옵션에 입력된 값이 적을수록 분석 시간이 감소하고 수집할 수 있는 URL의 개수가 줄어들 수 있습니다. 아무것도 입력하지 않는 경우 옵션의 기본값은
0이며 이 경우에 수집할 수 있는 시간을 제한하지 않게 됩니다. -
analyzerAnalyzeTimeout 최대 분석 시간
최대 분석 시간은 분석에서 URL을 분석할 수 있는 최대 시간입니다. 너무 많은 시간이 걸리는 경우 분석 결과가 정확하지 않을 수 있습니다. 따라서 이 옵션에서 분석 시간을 지정하는 것이 좋습니다.(단위: 분, 기본값:
0)이 옵션에 입력된 값이 클수록 분석 시간이 증가하고 분석의 결과도 늘어날 수 있습니다. 이 옵션에 입력된 값이 적을수록 분석 시간이 감소하고 분석의 결과도 줄어들 수 있습니다. 아무것도 입력하지 않는 경우 옵션의 기본값은
0이며 이 경우에 분석할 수 있는 시간을 제한하지 않게 됩니다. -
crawlerSkipUrl 제외할 수집 URL
제외할 수집 URL은 URL에 특정 단어가 포함된 경우 해당 URL을 수집하지 않고 건너뛰는 문자열 목록을 가리킵니다. 하나 이상의 문자열을 입력하고 엔터 또는 쉼표(,)로 구분할 수 있습니다.
이 옵션에 입력한 목록에 해당하는 단어가 하나라도 수집하려는 URL에 포함되었다면 해당 URL을 수집하지 않게 됩니다. 단, URL을 수집하기 직전에 건너뛰기 때문에 브라우저가 해당 URL에 방문할 수 있습니다.
-
analyzerSkipUrl 제외할 분석 URL
제외할 분석 URL은 URL에 특정 단어가 포함된 경우 해당 URL을 분석하지 않고 건너뛰는 문자열 목록을 가리킵니다. 하나 이상의 URL을 입력하고 엔터 또는 쉼표(,)로 구분할 수 있습니다.
이 옵션에 입력한 목록에 해당하는 단어가 하나라도 분석하려는 URL에 포함되었다면 해당 URL을 분석하지 않게 됩니다.
Tip: URL로 표시되는 페이지 전체가 아니라 페이지의 동작을 분석에서 제외하려는 경우 아래에 있는 이벤트 수행 제외 요소 옵션을 사용하세요.
-
crawlerSkipUrlSuffix 제외할 URL 접미사
제외할 URL 접미사는 URL의 끝에 특정 단어나 확장자가 포함된 경우 해당 URL을 수집하지 않고 건너뛰는 접미사 목록을 가리킵니다. 마침표(.)로 시작하는 확장자 형식으로 입력하고 엔터 또는 쉼표(,)로 구분할 수 있습니다.(기본값:
.js .jsx .ts .tsx .css .xml .jpg .jpeg .gif .bmp .png .ico .wma .wav .mp3 .wmv .avi .mp4 .mov .exe .zip .tar .tar.gz .7z .doc .xls .ppt .docx .xlsx .pptx .pdf .txt .csv .jar .eot .woff2 .woff .ttf .otf .apk .hwp .svg .msi)이 옵션에 입력한 목록에 해당하는 단어가 하나라도 수집하려는 URL의 끝에 포함되었다면 해당 URL을 수집하지 않게 됩니다. URL로 이동하기 전에 HTML 요소의 속성 값 등을 보고 건너뛰기 때문에 해당 URL에 방문하지 않으므로 파일 다운로드 등을 수행하기 전에 건너뛸 수 있습니다.
-
crawlerExcludeCssSelector 이벤트 수행 제외 요소 (CSS 선택자)
이 옵션에 입력한 목록에 해당하는 CSS 선택자가 하나라도 페이지에 포함되었다면 해당하는 HTML 요소와 하위 HTML 요소의 이벤트를 모두 수행하게 됩니다. 하나 이상의 제외할 CSS 선택자를 입력하고 엔터 또는 쉼표(,)로 구분할 수 있습니다.
이 옵션에 입력한 목록에 해당하는 CSS 선택자가 하나라도 페이지에 포함되었다면 해당하는 HTML 요소와 하위 HTML 요소의 이벤트를 모두 수행하지 않게 됩니다. 이러한 방법으로 페이지에서 로그아웃 버튼을 클릭하지 않도록 설정할 수 있습니다.
-
crawlerIncludeCssSelector 이벤트 수행 추가 요소 (CSS 선택자)
이 옵션에 입력한 목록에 해당하는 CSS 선택자가 하나라도 페이지에 포함되었다면 해당하는 HTML 요소와 하위 HTML 요소의 이벤트를 모두 수행하게 됩니다. 하나 이상의 추가할 CSS 선택자를 입력하고 엔터 또는 쉼표(,)로 구분할 수 있습니다.
이 옵션에 입력한 목록에 해당하는 CSS 선택자가 하나라도 페이지에 포함되었다면 해당하는 HTML 요소와 하위 HTML 요소의 이벤트를 모두 수행하게 됩니다. 이러한 방법으로 페이지에서 이벤트에 포함되지 않는 태그와 같은 요소를 수행할 수 있습니다.
-
crawlerExcludeXpath 이벤트 수행 제외 요소 (XPath)
이 옵션에 입력한 목록에 해당하는 XPath가 하나라도 페이지에 포함되었다면 해당하는 HTML 요소와 하위 HTML 요소의 이벤트를 모두 수행하지 않게 됩니다. 이러한 방법으로 페이지에서 로그아웃 버튼을 클릭하지 않도록 설정할 수 있습니다. 하나 이상의 제외할 XPath를 입력하고 엔터 또는 쉼표(,)로 구분할 수 있습니다.
이 옵션에 입력한 목록에 해당하는 XPath가 하나라도 페이지에 포함되었다면 해당하는 HTML 요소와 하위 HTML 요소의 이벤트를 모두 수행하지 않게 됩니다. 이러한 방법으로 페이지에서 로그아웃 버튼을 클릭하지 않도록 설정할 수 있습니다.
-
crawlerIncludeXpath 이벤트 수행 추가 요소 (XPath) 이 옵션에 입력한 목록에 해당하는 XPath가 하나라도 페이지에 포함되었다면 해당하는 HTML 요소와 하위 HTML 요소의 이벤트를 모두 수행하게 됩니다. 하나 이상의 추가할 XPath를 입력하고 엔터 또는 쉼표(,)로 구분할 수 있습니다.
이 옵션에 입력한 목록에 해당하는 XPath가 하나라도 페이지에 포함되었다면 해당하는 HTML 요소와 그 하위 HTML 요소의 이벤트를 모두 수행하게 됩니다. 이러한 방법으로 페이지에서 이벤트에 포함되지 않는 태그와 같은 요소를 수행할 수 있습니다.
-
crawlerRequestCustomHeaders 사용자 정의 HTTP 헤더
사용자 정의 HTTP 헤더는 URL을 수집할 때 전송할 HTTP 요청에 포함되는 헤더의 이름과 값의 목록을 가리킵니다. 이 옵션에 헤더의 이름과 값을 입력하면 해당 헤더를 모든 HTTP 요청 메시지에 추가하게 됩니다. 추가하기 버튼을 클릭하여 하나 이상의 헤더를 추가하고 휴지통 아이콘을 클릭하여 삭제할 수 있습니다.
이 옵션에는 HTTP 요청에 반드시 필요한 헤더를 입력해야 합니다. 이로 인해 브라우저에 프록시를 설정하므로 수집 속도가 느려질 수 있습니다.
Cookie헤더를 제외하고 동일한 이름의 헤더를 여러 개 입력한 경우 그 중 하나만 적용됩니다. 따라서 여러 값을 입력해야 하는 경우 헤더 값을;로 구분하여 입력하세요. 같은 이름의 헤더가 이미 있는 경우 해당 헤더를 지우고 커스텀 헤더가 추가됩니다. 커스텀 헤더를 사용하려면 분석 대상 URL의 호스트가localhost또는127.0.0.1로 설정되면 안됩니다. 로컬에 있는 웹 애플리케이션을 분석하려는 경우 로컬 IP 주소를 입력해야 합니다. -
crawlerLimitUrlDepthDegree URL 수집 깊이 URL 수집 깊이는 수집할 URL이 시작 URL에서부터 얼마나 멀리 떨어져 있는지를 의미하며
high,medium,low로 구분합니다. URL이 멀수록 시작 URL에서 특정 URL에 도달하기 위해 페이지 이동 등 수행해야 하는 최소한의 동작이 많아집니다.(기본값:medium)이 옵션을
high로 설정하면 시작 URL에서부터 멀리 있는 URL까지도 수집하게 되지만 수집하는 시간이 오래 걸립니다. 이 옵션을low로 설정하면 프로젝트에서 URL을 수집하는 시간은 짧아지지만 멀리 있는 URL은 수집하지 않게 됩니다. -
crawlerLimitDomDepthDegree DOM 수집 깊이 DOM 수집 깊이는 수집할 DOM이 동일한 URL에서 생성된 첫 번째 DOM으로부터 얼마나 멀리 떨어져 있는지를 의미하며
high,medium,low로 구분합니다. DOM이 멀수록 첫 번째 DOM에서 동일한 URL의 특정 DOM에 도달하기 위해 수행해야 하는 최소한의 동작이 많아집니다.(기본값:medium)이 옵션을
high로 설정하면 URL로 이동할 때 생성되는 첫 DOM에서부터 멀리 있는 DOM까지도 수집하게 되지만 수집하는 시간이 오래 걸립니다. 이 옵션을low로 설정하면 프로젝트에서 DOM을 수집하는 시간은 짧아지지만 멀리 있는 DOM은 수집하지 않게 됩니다. -
crawlerBrowserExplicitTimeout 이벤트 대기 시간 이벤트 대기 시간은 이벤트를 수행할 때마다 이벤트 수행 결과가 DOM에 반영되기를 기다리는 시간을 가리킵니다.
0이상5000이하의 숫자를 입력할 수 있으며 옵션을 입력하지 않은 경우 기본값은300입니다.(단위: 밀리초, 기본값:300)이 옵션에 입력된 값이 클수록 수행한 이벤트를 DOM에 반영하는데 시간이 걸리는 웹 애플리케이션의 URL을 수집할 수 있지만 수집하는 속도가 느려집니다. 이 옵션에 입력된 값이 적을수록 URL을 수집하는 속도는 향상되지만 DOM이 변경될 때 시간이 필요한 웹 애플리케이션의 URL을 수집하지 않게 됩니다.
-
crawlerRequestCountPerSecond HTTP 요청 횟수 HTTP 요청 횟수는 URL을 수집할 때 1초에 전송할 수 있는 HTTP 요청의 개수를 가리킵니다.
-1이상10000이하의 숫자를 입력할 수 있으며 옵션을 입력하지 않는 경우 기본값은-1이며 이 경우에 전송할 수 있는 HTTP 요청의 개수를 제한하지 않게 됩니다.(단위: 개, 기본값:-1)이 옵션에 입력된 값이 클수록 1초에 전송할 수 있는 HTTP 요청의 개수가 늘어나서 URL을 수집하는 속도가 빨라지지만 트래픽량이 늘어나 분석 대상 웹 애플리케이션 서버에 부하도 늘어날 수 있습니다. 이 옵션에 입력된 값이 적을수록 트래픽량이 낮아져 분석 대상 웹 애플리케이션 서버의 부하도 줄어들지만 URL을 수집하는 속도가 늦어집니다.
-
crawlerClientTimeout HTTP 클라이언트 대기 시간 HTTP 클라이언트 대기 시간은 HTTP 클라이언트가 분석을 수행하기 위해 웹 서버에 연결하고, HTTP 요청을 보내고, HTTP 응답을 받는 과정에서 지연이 발생했을 때 기다리는 최대 시간을 가리킵니다.
0이상30000이하의 숫자를 입력할 수 있으며 옵션을 입력하지 않은 경우 기본값은3000입니다.(단위: 밀리초, 기본값:3000)이 옵션에 입력된 값이 클수록 웹 서버와의 네트워크 연결 상태가 좋지 않아 지연이 발생한 경우에도 분석이 정상적으로 진행됩니다. 단, 웹 서버와의 연결 끊김이 지속적으로 발생하면 분석 시간이 늘어날 가능성이 높습니다. 이 옵션에 입력된 값이 적을수록 분석 속도는 빨라지지만 웹 서버와의 네트워크 연결 상태가 좋지 않아서 지연이 발생한 경우 URL을 분석하지 못할 가능성이 있습니다.