특징 • 설치 • 사용법 • 범위 • 구성 • 필터 • Discord 가입
katana를 성공적으로 설치하려면 Go 1.18이 필요합니다. 설치하려면 아래 명령을 실행하거나 릴리스 페이지에서 미리 컴파일된 바이너리를 다운로드하세요.
CGO_ENABLED=1 go install github.com/projectdiscovery/katana/cmd/katana@latest
Katana를 설치/실행하는 추가 옵션-
Docker를 최신 태그로 설치/업데이트하려면 -
docker pull projectdiscovery/katana:latest
docker를 사용하여 표준 모드에서 katana를 실행하려면 -
docker run projectdiscovery/katana:latest -u https://tesla.com
docker를 사용하여 헤드리스 모드에서 katana를 실행하려면 -
docker run projectdiscovery/katana:latest -u https://tesla.com -system-chrome -headless
다음 필수 구성 요소를 설치하는 것이 좋습니다.
sudo apt update
sudo snap refresh
sudo apt install zip curl wget git
sudo snap install golang --classic
wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add -
sudo sh -c ' echo "deb http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list '
sudo apt update
sudo apt install google-chrome-stable
카타나 설치 -
go install github.com/projectdiscovery/katana/cmd/katana@latest
katana -h
그러면 도구에 대한 도움말이 표시됩니다. 지원하는 모든 스위치는 다음과 같습니다.
Katana is a fast crawler focused on execution in automation
pipelines offering both headless and non-headless crawling.
Usage:
./katana [flags]
Flags:
INPUT:
-u, -list string[] target url / list to crawl
-resume string resume scan using resume.cfg
-e, -exclude string[] exclude host matching specified filter ('cdn', 'private-ips', cidr, ip, regex)
CONFIGURATION:
-r, -resolvers string[] list of custom resolver (file or comma separated)
-d, -depth int maximum depth to crawl (default 3)
-jc, -js-crawl enable endpoint parsing / crawling in javascript file
-jsl, -jsluice enable jsluice parsing in javascript file (memory intensive)
-ct, -crawl-duration value maximum duration to crawl the target for (s, m, h, d) (default s)
-kf, -known-files string enable crawling of known files (all,robotstxt,sitemapxml), a minimum depth of 3 is required to ensure all known files are properly crawled.
-mrs, -max-response-size int maximum response size to read (default 9223372036854775807)
-timeout int time to wait for request in seconds (default 10)
-aff, -automatic-form-fill enable automatic form filling (experimental)
-fx, -form-extraction extract form, input, textarea & select elements in jsonl output
-retry int number of times to retry the request (default 1)
-proxy string http/socks5 proxy to use
-H, -headers string[] custom header/cookie to include in all http request in header:value format (file)
-config string path to the katana configuration file
-fc, -form-config string path to custom form configuration file
-flc, -field-config string path to custom field configuration file
-s, -strategy string Visit strategy (depth-first, breadth-first) (default "depth-first")
-iqp, -ignore-query-params Ignore crawling same path with different query-param values
-tlsi, -tls-impersonate enable experimental client hello (ja3) tls randomization
-dr, -disable-redirects disable following redirects (default false)
DEBUG:
-health-check, -hc run diagnostic check up
-elog, -error-log string file to write sent requests error log
HEADLESS:
-hl, -headless enable headless hybrid crawling (experimental)
-sc, -system-chrome use local installed chrome browser instead of katana installed
-sb, -show-browser show the browser on the screen with headless mode
-ho, -headless-options string[] start headless chrome with additional options
-nos, -no-sandbox start headless chrome in --no-sandbox mode
-cdd, -chrome-data-dir string path to store chrome browser data
-scp, -system-chrome-path string use specified chrome browser for headless crawling
-noi, -no-incognito start headless chrome without incognito mode
-cwu, -chrome-ws-url string use chrome browser instance launched elsewhere with the debugger listening at this URL
-xhr, -xhr-extraction extract xhr request url,method in jsonl output
SCOPE:
-cs, -crawl-scope string[] in scope url regex to be followed by crawler
-cos, -crawl-out-scope string[] out of scope url regex to be excluded by crawler
-fs, -field-scope string pre-defined scope field (dn,rdn,fqdn) or custom regex (e.g., '(company-staging.io|company.com)') (default "rdn")
-ns, -no-scope disables host based default scope
-do, -display-out-scope display external endpoint from scoped crawling
FILTER:
-mr, -match-regex string[] regex or list of regex to match on output url (cli, file)
-fr, -filter-regex string[] regex or list of regex to filter on output url (cli, file)
-f, -field string field to display in output (url,path,fqdn,rdn,rurl,qurl,qpath,file,ufile,key,value,kv,dir,udir)
-sf, -store-field string field to store in per-host output (url,path,fqdn,rdn,rurl,qurl,qpath,file,ufile,key,value,kv,dir,udir)
-em, -extension-match string[] match output for given extension (eg, -em php,html,js)
-ef, -extension-filter string[] filter output for given extension (eg, -ef png,css)
-mdc, -match-condition string match response with dsl based condition
-fdc, -filter-condition string filter response with dsl based condition
RATE-LIMIT:
-c, -concurrency int number of concurrent fetchers to use (default 10)
-p, -parallelism int number of concurrent inputs to process (default 10)
-rd, -delay int request delay between each request in seconds
-rl, -rate-limit int maximum requests to send per second (default 150)
-rlm, -rate-limit-minute int maximum number of requests to send per minute
UPDATE:
-up, -update update katana to latest version
-duc, -disable-update-check disable automatic katana update check
OUTPUT:
-o, -output string file to write output to
-sr, -store-response store http requests/responses
-srd, -store-response-dir string store http requests/responses to custom directory
-sfd, -store-field-dir string store per-host field to custom directory
-or, -omit-raw omit raw requests/responses from jsonl output
-ob, -omit-body omit response body from jsonl output
-j, -jsonl write output in jsonl format
-nc, -no-color disable output content coloring (ANSI escape codes)
-silent display output only
-v, -verbose display verbose output
-debug display debug output
-version display project version
katana는 크롤링을 위해 URL 또는 엔드포인트가 필요하며 단일 또는 다중 입력을 허용합니다.
-u
옵션을 사용하여 입력 URL을 제공할 수 있으며, 쉼표로 구분된 입력을 사용하여 여러 값을 제공할 수 있습니다. 마찬가지로 -list
옵션을 사용하여 파일 입력을 지원하고 추가로 파이프 입력(stdin)도 지원합니다.
katana -u https://tesla.com
katana -u https://tesla.com,https://google.com
$ cat url_list.txt
https://tesla.com
https://google.com
katana -list url_list.txt
echo https://tesla.com | katana
cat domains | httpx | katana
카타나 실행 예 -
katana -u https://youtube.com
__ __
/ /_____ _/ /____ ____ ___ _
/ '_/ _ / __/ _ / _ / _ /
/_/_\_,_/__/_,_/_//_/_,_/ v0.0.1
projectdiscovery.io
[WRN] Use with caution. You are responsible for your actions.
[WRN] Developers assume no liability and are not responsible for any misuse or damage.
https://www.youtube.com/
https://www.youtube.com/about/
https://www.youtube.com/about/press/
https://www.youtube.com/about/copyright/
https://www.youtube.com/t/contact_us/
https://www.youtube.com/creators/
https://www.youtube.com/ads/
https://www.youtube.com/t/terms
https://www.youtube.com/t/privacy
https://www.youtube.com/about/policies/
https://www.youtube.com/howyoutubeworks?utm_campaign=ytgen&utm_source=ythp&utm_medium=LeftNav&utm_content=txt&u=https%3A%2F%2Fwww.youtube.com%2Fhowyoutubeworks%3Futm_source%3Dythp%26utm_medium%3DLeftNav%26utm_campaign%3Dytgen
https://www.youtube.com/new
https://m.youtube.com/
https://www.youtube.com/s/desktop/4965577f/jsbin/desktop_polymer.vflset/desktop_polymer.js
https://www.youtube.com/s/desktop/4965577f/cssbin/www-main-desktop-home-page-skeleton.css
https://www.youtube.com/s/desktop/4965577f/cssbin/www-onepick.css
https://www.youtube.com/s/_/ytmainappweb/_/ss/k=ytmainappweb.kevlar_base.0Zo5FUcPkCg.L.B1.O/am=gAE/d=0/rs=AGKMywG5nh5Qp-BGPbOaI1evhF5BVGRZGA
https://www.youtube.com/opensearch?locale=en_GB
https://www.youtube.com/manifest.webmanifest
https://www.youtube.com/s/desktop/4965577f/cssbin/www-main-desktop-watch-page-skeleton.css
https://www.youtube.com/s/desktop/4965577f/jsbin/web-animations-next-lite.min.vflset/web-animations-next-lite.min.js
https://www.youtube.com/s/desktop/4965577f/jsbin/custom-elements-es5-adapter.vflset/custom-elements-es5-adapter.js
https://www.youtube.com/s/desktop/4965577f/jsbin/webcomponents-sd.vflset/webcomponents-sd.js
https://www.youtube.com/s/desktop/4965577f/jsbin/intersection-observer.min.vflset/intersection-observer.min.js
https://www.youtube.com/s/desktop/4965577f/jsbin/scheduler.vflset/scheduler.js
https://www.youtube.com/s/desktop/4965577f/jsbin/www-i18n-constants-en_GB.vflset/www-i18n-constants.js
https://www.youtube.com/s/desktop/4965577f/jsbin/www-tampering.vflset/www-tampering.js
https://www.youtube.com/s/desktop/4965577f/jsbin/spf.vflset/spf.js
https://www.youtube.com/s/desktop/4965577f/jsbin/network.vflset/network.js
https://www.youtube.com/howyoutubeworks/
https://www.youtube.com/trends/
https://www.youtube.com/jobs/
https://www.youtube.com/kids/
표준 크롤링 양식은 내부적으로 표준 go http 라이브러리를 사용하여 HTTP 요청/응답을 처리합니다. 이 방식은 브라우저 오버헤드가 없기 때문에 훨씬 빠릅니다. 그러나 JavaScript나 DOM 렌더링 없이 HTTP 응답 본문을 있는 그대로 분석합니다. DOM 렌더링 후 엔드포인트가 누락되거나 브라우저별 이벤트 등에 따라 복잡한 웹 애플리케이션에서 발생할 수 있는 비동기 엔드포인트 호출이 누락될 수 있습니다.
헤드리스 모드는 내부 헤드리스 호출을 연결하여 브라우저 컨텍스트 내에서 직접 HTTP 요청/응답을 처리합니다. 이는 두 가지 이점을 제공합니다.
헤드리스 크롤링은 선택 사항이며 -headless
옵션을 사용하여 활성화할 수 있습니다.
다른 헤드리스 CLI 옵션은 다음과 같습니다.
katana -h headless
Flags:
HEADLESS:
-hl, -headless enable headless hybrid crawling (experimental)
-sc, -system-chrome use local installed chrome browser instead of katana installed
-sb, -show-browser show the browser on the screen with headless mode
-ho, -headless-options string[] start headless chrome with additional options
-nos, -no-sandbox start headless chrome in --no-sandbox mode
-cdd, -chrome-data-dir string path to store chrome browser data
-scp, -system-chrome-path string use specified chrome browser for headless crawling
-noi, -no-incognito start headless chrome without incognito mode
-cwu, -chrome-ws-url string use chrome browser instance launched elsewhere with the debugger listening at this URL
-xhr, -xhr-extraction extract xhr requests
-no-sandbox
샌드박스 없음 옵션으로 헤드리스 Chrome 브라우저를 실행하며 루트 사용자로 실행할 때 유용합니다.
katana -u https://tesla.com -headless -no-sandbox
-no-incognito
시크릿 모드 없이 헤드리스 Chrome 브라우저를 실행하며, 로컬 브라우저를 사용할 때 유용합니다.
katana -u https://tesla.com -headless -no-incognito
-headless-options
헤드리스 모드에서 크롤링할 때 -headless-options
사용하여 추가 크롬 옵션을 지정할 수 있습니다. 예를 들면 -
katana -u https://tesla.com -headless -system-chrome -headless-options --disable-gpu,proxy-server=http://127.0.0.1:8080
범위가 지정되지 않은 경우 크롤링은 끝이 없을 수 있습니다. katana에는 크롤링 범위를 정의하기 위한 여러 지원이 제공되기 때문입니다.
-field-scope
사전 정의된 필드 이름으로 범위를 정의하는 가장 편리한 옵션입니다. rdn
필드 범위의 기본 옵션입니다.
rdn
- 루트 도메인 이름 및 모든 하위 도메인(예: *example.com
)으로 범위가 지정된 크롤링(기본값)fqdn
- 특정 하위(도메인)로 범위가 지정된 크롤링(예: www.example.com
또는 api.example.com
)dn
- 도메인 이름 키워드로 범위가 지정된 크롤링(예: example
) katana -u https://tesla.com -fs dn
-crawl-scope
고급 범위 제어를 위해 정규식 지원과 함께 제공되는 -cs
옵션을 사용할 수 있습니다.
katana -u https://tesla.com -cs login
범위 내 다중 규칙의 경우 여러 줄 문자열/정규식을 사용한 파일 입력이 전달될 수 있습니다.
$ cat in_scope.txt
login/
admin/
app/
wordpress/
katana -u https://tesla.com -cs in_scope.txt
-crawl-out-scope
크롤링하지 않을 항목을 정의하려면 -cos
옵션을 사용할 수 있으며 정규식 입력도 지원합니다.
katana -u https://tesla.com -cos logout
범위를 벗어난 여러 규칙의 경우 여러 줄 문자열/정규식을 포함한 파일 입력이 전달될 수 있습니다.
$ cat out_of_scope.txt
/logout
/log_out
katana -u https://tesla.com -cos out_of_scope.txt
-no-scope
Katana의 기본값은 *.domain
범위입니다. 이 -ns
옵션을 비활성화하려면 인터넷을 크롤링하는 데에도 사용할 수 있습니다.
katana -u https://tesla.com -ns
-display-out-scope
기본적으로 범위 옵션을 사용하면 출력으로 표시할 링크에도 적용됩니다. 이러한 외부 URL은 기본적으로 제외되고 이 동작을 덮어쓰므로 -do
옵션을 사용하여 대상에 존재하는 모든 외부 URL을 표시할 수 있습니다. 범위가 지정된 URL/엔드포인트.
katana -u https://tesla.com -do
범위 제어를 위한 모든 CLI 옵션은 다음과 같습니다.
katana -h scope
Flags:
SCOPE:
-cs, -crawl-scope string[] in scope url regex to be followed by crawler
-cos, -crawl-out-scope string[] out of scope url regex to be excluded by crawler
-fs, -field-scope string pre-defined scope field (dn,rdn,fqdn) (default "rdn")
-ns, -no-scope disables host based default scope
-do, -display-out-scope display external endpoint from scoped crawling
Katana에는 원하는 방식으로 크롤링을 구성하고 제어할 수 있는 여러 옵션이 제공됩니다.
-depth
크롤링을 위해 URL을 따르도록 depth
를 정의하는 옵션입니다. 깊이가 클수록 크롤링되는 엔드포인트 수 + 크롤링 시간이 늘어납니다.
katana -u https://tesla.com -d 5
-js-crawl
JavaScript 파일 구문 분석을 활성화하고 JavaScript 파일에서 발견된 끝점을 크롤링하는 옵션은 기본적으로 비활성화되어 있습니다.
katana -u https://tesla.com -jc
-crawl-duration
크롤링 기간을 미리 정의하는 옵션이며 기본적으로 비활성화되어 있습니다.
katana -u https://tesla.com -ct 2
-known-files
robots.txt
및 sitemap.xml
파일 크롤링을 활성화하는 옵션은 기본적으로 비활성화되어 있습니다.
katana -u https://tesla.com -kf robotstxt,sitemapxml
-automatic-form-fill
알려진/알 수 없는 필드에 대한 자동 양식 채우기를 활성화하는 옵션, $HOME/.config/katana/form-config.yaml
에서 양식 구성 파일을 업데이트하여 필요에 따라 알려진 필드 값을 사용자 정의할 수 있습니다.
자동 양식 채우기는 실험적인 기능입니다.
katana -u https://tesla.com -aff
인증된 크롤링에는 보호된 리소스에 액세스하기 위한 HTTP 요청에 사용자 정의 헤더 또는 쿠키를 포함하는 작업이 포함됩니다. 이러한 헤더는 인증 또는 권한 부여 정보를 제공하므로 인증된 콘텐츠/엔드포인트를 크롤링할 수 있습니다. 명령줄에서 헤더를 직접 지정하거나 인증된 크롤링을 수행하기 위해 katana가 포함된 파일로 헤더를 제공할 수 있습니다.
참고 : 사용자는 인증을 수동으로 수행하고 세션 쿠키/헤더를 katana와 함께 사용할 파일로 내보내야 합니다.
-headers
요청에 사용자 정의 헤더 또는 쿠키를 추가하는 옵션입니다.
HTTP 사양의 헤더 구문
다음은 요청에 쿠키를 추가하는 예입니다.
katana -u https://tesla.com -H 'Cookie: usrsess=AmljNrESo'
헤더나 쿠키를 파일로 제공하는 것도 가능합니다. 예를 들어:
$ cat cookie.txt
Cookie: PHPSESSIONID=XXXXXXXXX
X-API-KEY: XXXXX
TOKEN=XX
katana -u https://tesla.com -H cookie.txt
필요할 때 구성할 수 있는 추가 옵션이 있습니다. 여기에 모든 구성 관련 CLI 옵션이 있습니다.
katana -h config
Flags:
CONFIGURATION:
-r, -resolvers string[] list of custom resolver (file or comma separated)
-d, -depth int maximum depth to crawl (default 3)
-jc, -js-crawl enable endpoint parsing / crawling in javascript file
-ct, -crawl-duration int maximum duration to crawl the target for
-kf, -known-files string enable crawling of known files (all,robotstxt,sitemapxml)
-mrs, -max-response-size int maximum response size to read (default 9223372036854775807)
-timeout int time to wait for request in seconds (default 10)
-aff, -automatic-form-fill enable automatic form filling (experimental)
-fx, -form-extraction enable extraction of form, input, textarea & select elements
-retry int number of times to retry the request (default 1)
-proxy string http/socks5 proxy to use
-H, -headers string[] custom header/cookie to include in request
-config string path to the katana configuration file
-fc, -form-config string path to custom form configuration file
-flc, -field-config string path to custom field configuration file
-s, -strategy string Visit strategy (depth-first, breadth-first) (default "depth-first")
Katana는 사용자가 이미 로그인되어 인증된 활성 브라우저 세션에 연결할 수도 있습니다. 크롤링에 사용합니다. 이를 위한 유일한 요구 사항은 원격 디버깅이 활성화된 상태에서 브라우저를 시작하는 것입니다.
다음은 원격 디버깅이 활성화된 상태에서 Chrome 브라우저를 시작하고 이를 katana와 함께 사용하는 예입니다.
1단계) 먼저 크롬 실행 파일의 경로를 찾습니다.
운영 체제 | Chromium 실행 파일 위치 | Google 크롬 실행 파일 위치 |
---|---|---|
Windows(64비트) | C:Program Files (x86)GoogleChromiumApplicationchrome.exe | C:Program Files (x86)GoogleChromeApplicationchrome.exe |
Windows(32비트) | C:Program FilesGoogleChromiumApplicationchrome.exe | C:Program FilesGoogleChromeApplicationchrome.exe |
macOS | /Applications/Chromium.app/Contents/MacOS/Chromium | /Applications/Google Chrome.app/Contents/MacOS/Google Chrome |
리눅스 | /usr/bin/chromium | /usr/bin/google-chrome |
2단계) 원격 디버깅이 활성화된 상태에서 Chrome을 시작하면 websocker URL이 반환됩니다. 예를 들어 MacOS에서는 다음 명령을 사용하여 원격 디버깅을 활성화한 상태로 Chrome을 시작할 수 있습니다 .
$ /Applications/Google Chrome.app/Contents/MacOS/Google Chrome --remote-debugging-port=9222
DevTools listening on ws://127.0.0.1:9222/devtools/browser/c5316c9c-19d6-42dc-847a-41d1aeebf7d6
이제 크롤링하려는 웹사이트에 로그인하고 브라우저를 열어두세요.
3단계) 이제 katana와 함께 websocket URL을 사용하여 활성 브라우저 세션에 연결하고 웹사이트를 크롤링합니다.
katana -headless -u https://tesla.com -cwu ws://127.0.0.1:9222/devtools/browser/c5316c9c-19d6-42dc-847a-41d1aeebf7d6 -no-incognito
참고 :
-cdd
옵션을 사용하여 브라우저 데이터와 쿠키를 저장할 사용자 정의 크롬 데이터 디렉토리를 지정할 수 있지만 쿠키가Session
전용으로 설정되거나 특정 시간 후에 만료되는 경우 세션 데이터가 저장되지 않습니다.
-field
Katana에는 원하는 정보에 대한 출력을 필터링하는 데 사용할 수 있는 필드가 내장되어 있으며, -f
옵션을 사용하여 사용 가능한 필드를 지정할 수 있습니다.
-f, -field string field to display in output (url,path,fqdn,rdn,rurl,qurl,qpath,file,key,value,kv,dir,udir)
다음은 각 필드의 예와 사용 시 예상되는 출력이 포함된 표입니다.
필드 | 설명 | 예 |
---|---|---|
url | URL 끝점 | https://admin.projectdiscovery.io/admin/login?user=admin&password=admin |
qurl | 쿼리 매개변수가 포함된 URL | https://admin.projectdiscovery.io/admin/login.php?user=admin&password=admin |
qpath | 쿼리 매개변수를 포함한 경로 | /login?user=admin&password=admin |
path | URL 경로 | https://admin.projectdiscovery.io/admin/login |
fqdn | 정규화된 도메인 이름 | admin.projectdiscovery.io |
rdn | 루트 도메인 이름 | projectdiscovery.io |
rurl | 루트 URL | https://admin.projectdiscovery.io |
ufile | 파일이 포함된 URL | https://admin.projectdiscovery.io/login.js |
file | URL의 파일 이름 | login.php |
key | URL의 매개변수 키 | user,password |
value | URL의 매개변수 값 | admin,admin |
kv | 키=URL의 값 | user=admin&password=admin |
dir | URL 디렉토리 이름 | /admin/ |
udir | 디렉토리가 포함된 URL | https://admin.projectdiscovery.io/admin/ |
다음은 쿼리 매개변수가 포함된 모든 URL만 표시하기 위해 필드 옵션을 사용하는 예입니다.
katana -u https://tesla.com -f qurl -silent
https://shop.tesla.com/en_au?redirect=no
https://shop.tesla.com/en_nz?redirect=no
https://shop.tesla.com/product/men_s-raven-lightweight-zip-up-bomber-jacket?sku=1740250-00-A
https://shop.tesla.com/product/tesla-shop-gift-card?sku=1767247-00-A
https://shop.tesla.com/product/men_s-chill-crew-neck-sweatshirt?sku=1740176-00-A
https://www.tesla.com/about?redirect=no
https://www.tesla.com/about/legal?redirect=no
https://www.tesla.com/findus/list?redirect=no
정규식 규칙을 사용하여 페이지 응답에서 특정 정보를 추출하고 저장하는 사용자 정의 필드를 만들 수 있습니다. 이러한 사용자 정의 필드는 YAML 구성 파일을 사용하여 정의되며 $HOME/.config/katana/field-config.yaml
의 기본 위치에서 로드됩니다. 또는 -flc
옵션을 사용하여 다른 위치에서 사용자 정의 필드 구성 파일을 로드할 수 있습니다. 다음은 사용자 정의 필드의 예입니다.
- name : email
type : regex
regex :
- ' ([a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+.[a-zA-Z0-9_-]+) '
- ' ([a-zA-Z0-9+._-]+@[a-zA-Z0-9._-]+.[a-zA-Z0-9_-]+) '
- name : phone
type : regex
regex :
- ' d{3}-d{8}|d{4}-d{7} '
사용자 정의 필드를 정의할 때 다음 속성이 지원됩니다.
name 속성의 값은
-field
cli 옵션 값으로 사용됩니다.
사용자 정의 속성 유형, 현재 지원되는 옵션 -
regex
정보를 추출할 응답 부분입니다. 기본값은 헤더와 본문을 모두 포함하는
response
입니다. 다른 가능한 값은header
및body
입니다.
이 속성을 사용하여 정규식에서 특정 일치 그룹을 선택할 수 있습니다(예:
group: 1
.
katana -u https://tesla.com -f email,phone
-store-field
런타임 시 출력을 필터링하는 데 유용한 field
옵션을 보완하기 위해 필터링 대신 필드 옵션과 똑같이 작동하는 -sf, -store-fields
옵션이 있습니다. 대상 URL별로 정렬된 katana_field
디렉터리 아래의 디스크에 모든 정보를 저장합니다. . -sfd
또는 -store-field-dir
사용하여 데이터를 다른 위치에 저장하세요.
katana -u https://tesla.com -sf key,fqdn,qurl -silent
$ ls katana_field/
https_www.tesla.com_fqdn.txt
https_www.tesla.com_key.txt
https_www.tesla.com_qurl.txt
-store-field
옵션은 다음을 포함하되 이에 국한되지 않는 다양한 목적으로 대상 단어 목록을 작성하기 위해 정보를 수집하는 데 유용할 수 있습니다.
-extension-match
크롤링 출력은 특정 확장자를 포함하는 출력만 표시하도록 -em
옵션을 사용하여 특정 확장자와 쉽게 일치시킬 수 있습니다.
katana -u https://tesla.com -silent -em js,jsp,json
-extension-filter
지정된 확장자를 포함하는 모든 URL을 제거하는 -ef
옵션을 사용하여 특정 확장자에 대해 크롤링 출력을 쉽게 필터링할 수 있습니다.
katana -u https://tesla.com -silent -ef css,txt,md
-match-regex
-match-regex
또는 -mr
플래그를 사용하면 정규식을 사용하여 출력 URL을 필터링할 수 있습니다. 이 플래그를 사용하면 지정된 정규식과 일치하는 URL만 출력에 인쇄됩니다.
katana -u https://tesla.com -mr 'https://shop.tesla.com/*' -silent
-filter-regex
-filter-regex
또는 -fr
플래그를 사용하면 정규식을 사용하여 출력 URL을 필터링할 수 있습니다. 이 플래그를 사용하면 지정된 정규식과 일치하는 URL을 건너뜁니다.
katana -u https://tesla.com -fr 'https://www.tesla.com/*' -silent
Katana는 고급 일치 및 필터링 기능을 위해 DSL 기반 표현식을 지원합니다.
katana -u https://www.hackerone.com -mdc ' status_code == 200 '
katana -u https://www.hackerone.com -mdc ' contains(endpoint, "default") && status_code != 403 '
katana -u https://www.hackerone.com -mdc ' contains(to_lower(technologies), "php") '
katana -u https://www.hackerone.com -fdc ' contains(to_lower(technologies), "cloudflare") '
DSL 기능은 jsonl 출력의 모든 키에 적용될 수 있습니다. 사용 가능한 DSL 기능에 대한 자세한 내용을 보려면 dsl 프로젝트를 방문하세요.
추가 필터 옵션은 다음과 같습니다.