Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
أدوات/GitHubGitHub/projectdiscovery/katana
الاستطلاعجمع المعلوماتأمن الويباختبار الاختراقزاحف الويب
GitHubprojectdiscovery/katana

katana

إطار عمل من الجيل التالي للزحف والتجسس.

عرض المستودع
17.3k1.2kمنذ 4 أيامتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

katana

إطار عمل من الجيل التالي للزحف والعنكبوت

الميزات • التثبيت • الاستخدام • النطاق • التكوين • المرشحات • انضم إلى Discord

الميزات

صورة

  • زحف ويب سريع وقابل للتكوين بالكامل
  • وضع Standard ووضع Headless
  • تحليل / زحف JavaScript
  • تعبئة نماذج تلقائية قابلة للتخصيص
  • التحكم في النطاق - حقل / Regex مهيآن مسبقًا
  • قاعدة المعرفة - تصنيف نوع الصفحة / النموذج باستخدام التعلم الآلي (نموذج يُنزَّل تلقائيًا)
  • مخرجات قابلة للتخصيص - حقول مهيأة مسبقًا
  • الإدخال - STDIN و URL و LIST
  • الإخراج - STDOUT و FILE و JSON

التثبيت

يتطلب katana إصدار Go 1.26+ للتثبيت بنجاح. إذا واجهت أي مشكلات في التثبيت، نوصي بتجربة أحدث إصدار متاح من Go، حيث قد يكون الحد الأدنى للإصدار المطلوب قد تغير. شغّل الأمر أدناه أو حمّل مترجمًا مُجمَّعًا مسبقًا من صفحة الإصدارات.```console CGO_ENABLED=1 go install github.com/projectdiscovery/katana/cmd/katana@latest

root@kitploit:~
**خيارات إضافية لتثبيت / تشغيل katana-**

<details>
  <summary>Docker</summary>

> لتثبيت / تحديث Docker إلى أحدث علامة -```sh
docker pull projectdiscovery/katana:latest

لتشغيل katana في الوضع القياسي باستخدام docker -```sh docker run projectdiscovery/katana:latest -u https://tesla.com

root@kitploit:~
> لتشغيل katana في الوضع بدون رأس باستخدام docker -```sh
docker run projectdiscovery/katana:latest -u https://tesla.com -system-chrome -headless
أوبونتو

يوصى بتثبيت المتطلبات الأساسية التالية -```sh sudo apt update sudo apt install zip curl wget git snapd sudo snap refresh sudo snap install golang --classic

sudo install -d -m 0755 /etc/apt/keyrings curl -fsSL https://dl.google.com/linux/linux_signing_key.pub
| sudo gpg --dearmor -o /etc/apt/keyrings/google-chrome.gpg

echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/google-chrome.gpg]
http://dl.google.com/linux/chrome/deb/ stable main"
| sudo tee /etc/apt/sources.list.d/google-chrome.list > /dev/null

sudo apt update sudo apt install google-chrome-stable

root@kitploit:~
> install katana -```sh
go install github.com/projectdiscovery/katana/cmd/katana@latest

الاستخدام```console

katana -h

root@kitploit:~
سيؤدي هذا إلى عرض المساعدة للأداة. فيما يلي جميع الخيارات التي تدعمها.```console
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 4194304)
   -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
   -td, -tech-detect             enable technology detection
   -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
   -fsu, -filter-similar         filter crawling of similar looking URLs (e.g., /users/123 and /users/456)
   -fst, -filter-similar-threshold int  number of distinct values before a path position is treated as parameter (default 10)
   -tlsi, -tls-impersonate       enable experimental client hello (ja3) tls randomization
   -dr, -disable-redirects       disable following redirects (default false)
   -kb, -knowledge-base          enable knowledge base classification
   -kb-secrets                   enable secrets extractor in the knowledge base
   -kb-validate-secrets          validate detected secrets against their provider (sends live API calls)
   -kb-endpoints                 enable endpoints extractor (classifies REST/GraphQL/SOAP/XHR requests)
   -mdp, -max-domain-pages int   maximum number of pages to crawl per domain (default unlimited)

DEBUG:
   -health-check, -hc        run diagnostic check up
   -elog, -error-log string  file to write sent requests error log
   -pprof-server             enable pprof server

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
   -pls, -page-load-strategy string  page load strategy (heuristic, load, domcontentloaded, networkidle, none) (default "heuristic")
   -dwt, -dom-wait-time int          time in seconds to wait after page load when using domcontentloaded strategy (default 5)
   -csp, -captcha-solver-provider string  captcha solver provider (e.g. capsolver)
   -csk, -captcha-solver-key string       captcha solver provider api key

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) (Deprecated: use -output-template instead)
   -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,none)
   -ef, -extension-filter string[]        filter output for given extension (eg, -ef png,css)
   -ndef, -no-default-ext-filter bool     remove default extensions from the filter list
   -mdc, -match-condition string          match response with dsl based condition
   -fdc, -filter-condition string         filter response with dsl based condition
   -duf, -disable-unique-filter           disable duplicate content filtering
   -filter-page-type string[]      filter response with page type (e.g. error,captcha,parked)

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
   -hrl, -host-rate-limit int    maximum requests to send per second per host
   -hrlm, -host-rate-limit-minute int  maximum number of requests to send per minute per host

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
   -output-template string      custom output template
   -sr, -store-response              store http requests/responses
   -srd, -store-response-dir string  store http requests/responses to custom directory
   -ncb, -no-clobber                 do not overwrite output file
   -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
   -lof, -list-output-fields         list available fields for jsonl output format
   -eof, -exclude-output-fields      exclude fields 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

إدخال لـ katana

katana يتطلب url أو endpoint للزحف ويقبل مدخلات مفردة أو متعددة.

يمكن توفير URL المدخل باستخدام الخيار -u، ويمكن توفير قيم متعددة باستخدام مدخلات مفصولة بفواصل، كما يتم دعم إدخال ملف باستخدام الخيار -list بالإضافة إلى دعم الإدخال الأنبوبي (stdin).

إدخال URL```sh

katana -u https://tesla.com

root@kitploit:~
#### إدخال URLs متعددة (مفصولة بفواصل)```sh
katana -u https://tesla.com,https://google.com

إدخال القائمة```bash

$ cat url_list.txt

https://tesla.com https://google.com

root@kitploit:~
الملف `user_modules/example.lua` يحتوي على وظيفة بسيطة للتعامل مع الأدلة. يمكن تعديل هذا الملف أو استخدامه كقالب لوحدات المستخدم الخاصة بك.

## مثال على وحدة مستخدم

```lua
-- مثال على وحدة مستخدم للتعامل مع دليل
-- يتم استدعاؤها عند معالجة الدليل المحدد بواسطة المستخدم
-- يمكن العثور على وحدة المستخدم في `user_modules/` أو في المسار المحدد من قبل المستخدم.

local module = {}

function module.process_dir(dir, depth, files, directories)
  -- dir: مسار الدليل المراد معالجته
  -- depth: العمق الحالي (عدد صحيح)
  -- files: مصفوفة (عدد صحيح) تحتوي على محتوى الدليل
  -- directories: مصفوفة (عدد صحيح) تحتوي على أدلة فرعية

  -- قم بإجراء معالجة مخصصة هنا
  -- على سبيل المثال، طباعة محتوى الدليل
  -- print("معالجة الدليل: " .. dir)

  -- إرجاع true للاستمرار في المعالجة العادية، أو false لمنعها
  return true
end

return module

إخلاء المسؤولية: يجب إكمال الكود أعلاه من قبل المستخدم وفقًا لاحتياجاته الخاصة.** ما ورد أعلاه هو مجرد مثال على كيفية إنشاء وحدة مستخدم لـ mimic. لا يوفر هذا المثال أي وظائف إضافية أو تعليمات برمجية مفيدة؛ إنه دليل هيكلي فقط للتنفيذ الخاص بك.** عند تنفيذ وحدتك الخاصة، يرجى مراعاة القيود والمخاطر المحتملة المرتبطة بالوظائف المطلوبة، وأنت وحدك المسؤول عن كودك.** توخ الحذر وانتبه لآثار هذه الأداة. استخدمها فقط على الأنظمة التي تملك الإذن باستهدافها.** لا تتحمل أي جهة، بما في ذلك المساهمين في هذا المشروع، المسؤولية عن سوء استخدام هذه الأداة. استخدمها على مسؤوليتك الخاصة.``` katana -list url_list.txt

root@kitploit:~
#### STDIN (piped) Input```sh
echo https://tesla.com | katana
  • السحابة وSaaS (الشبكات المعرفة بالهوية)
  • استبدال VPN (IPv4 وIPv6)
  • الوصول عن بُعد القائم على الثقة الصفرية
  • إدارة البنية التحتية عن بُعد
  • الشبكات الهجينة ومتعددة السحابة```sh cat domains | httpx | katana
root@kitploit:~
مثال تشغيل katana -```console
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. هذه الطريقة أسرع بكثير لأنها لا تحتوي على حمل المتصفح. ومع ذلك، فهي تحلل نص استجابات HTTP كما هو، دون أي عرض لجافا سكريبت أو DOM، مما قد يؤدي إلى فقدان نقاط النهاية المقدمة بعد DOM أو استدعاءات نقاط النهاية غير المتزامنة التي قد تحدث في تطبيقات الويب المعقدة اعتمادًا، على سبيل المثال، على أحداث خاصة بالمتصفح.

وضع بدون واجهة رسومية

يقوم وضع بدون واجهة رسومية بربط استدعاءات بدون واجهة رسومية داخلية للتعامل مع طلبات/استجابات HTTP مباشرة داخل سياق المتصفح. يوفر هذا ميزتين:

  • بصمة HTTP (TLS ووكيل المستخدم) تحدد العميل بالكامل كمتصفح شرعي
  • تغطية أفضل حيث يتم اكتشاف نقاط النهاية من خلال تحليل الاستجابة الأولية القياسية، كما في الطريقة السابقة، بالإضافة إلى الاستجابة المقدمة من المتصفح مع تمكين جافا سكريبت.

الزحف بدون واجهة رسومية اختياري ويمكن تمكينه باستخدام الخيار -headless.

إليك خيارات CLI الأخرى بدون واجهة رسومية -```console 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 -pls, -page-load-strategy string page load strategy (heuristic, load, domcontentloaded, networkidle, none) (default "heuristic") -dwt, -dom-wait-time int time in seconds to wait after page load when using domcontentloaded strategy (default 5) -csp, -captcha-solver-provider string captcha solver provider (e.g. capsolver) -csk, -captcha-solver-key string captcha solver provider api key

root@kitploit:~
`*`-no-sandbox`*`
----

يشغل متصفح كروم بدون واجهة مع خيار **no-sandbox**، مفيد عند التشغيل كمستخدم جذر.```console
katana -u https://tesla.com -headless -no-sandbox

-no-incognito

تشغيل متصفح كروم بدون رأس دون وضع التصفح المتخفي، مفيد عند استخدام المتصفح المحلي.```console katana -u https://tesla.com -headless -no-incognito

root@kitploit:~
للحفاظ على ملفات تعريف الارتباط (الكوكيز) وبيانات جلسة المتصفح الأخرى عبر عمليات التشغيل، اجمع بين `-no-incognito` و `-chrome-data-dir` حتى يعيد Katana استخدام دليل ملف تعريف Chrome الذي اخترته بدلاً من دليل مؤقت معزول.```console
katana -u https://tesla.com -headless -no-incognito -chrome-data-dir /tmp/katana-profile

-headless-options

عند الزحف في وضع headless، يمكن تحديد خيارات chrome إضافية باستخدام -headless-options، على سبيل المثال -```console katana -u https://tesla.com -headless -system-chrome -headless-options --disable-gpu,proxy-server=http://127.0.0.1:8080

root@kitploit:~
*`-page-load-strategy`*
----

يتحكم في كيفية انتظار katana لتحميل الصفحات في وضع الرأس (headless). الاستراتيجيات المختلفة مفيدة لأنواع مختلفة من تطبيقات الويب:

| الإستراتيجية | الوصف |
|----------|-------------|
| `heuristic` | (افتراضي) انتظار ذكي يتكيف مع سلوك الصفحة - ينتظر حدث التحميل، خمول الشبكة، واستقرار DOM |
| `load` | ينتظر فقط حدث التحميل الخاص بالمتصفح |
| `domcontentloaded` | ينتظر حدث DOMContentLoaded بالإضافة إلى وقت إضافي (قابل للتعديل عبر `-dwt`) لعرض JavaScript |
| `networkidle` | ينتظر حتى يتوقف نشاط الشبكة |
| `none` | لا انتظار - يعود فورًا بعد بدء التنقل |```console
katana -u https://tesla.com -headless -pls domcontentloaded

استراتيجية domcontentloaded مفيدة بشكل خاص لتطبيقات الصفحة الواحدة (SPAs) التي لا تكتمل تحميلها بالكامل أبدًا بسبب الطلبات الخلفية المستمرة (websockets, polling, إلخ).

-dom-wait-time

عند استخدام استراتيجية تحميل الصفحة domcontentloaded، يحدد هذا الخيار عدد الثواني التي يجب الانتظارها بعد إطلاق حدث DOMContentLoaded. يتيح ذلك وقتًا لجافا سكريبت لعرض العناصر التفاعلية. القيمة الافتراضية هي 5 ثوان.```console katana -u https://tesla.com -headless -pls domcontentloaded -dwt 10

root@kitploit:~
### حل الكابتشا

تدعم Katana اكتشاف وحل الكابتشا تلقائيًا أثناء الزحف بدون واجهة رسومية. عند مواجهة صفحة كابتشا، تقوم Katana بتحديد مزود الكابتشا، وحله عبر خدمة خارجية، ثم متابعة الزحف.

أنواع الكابتشا المدعومة: **reCAPTCHA v2**، **reCAPTCHA v3**، **reCAPTCHA Enterprise**، **Cloudflare Turnstile**، **hCaptcha**

*`-captcha-solver-provider`*
----

خيار لتحديد مزود حل الكابتشا. المدعوم حاليًا: `capsolver`.

*`-captcha-solver-key`*
----

مفتاح API لمزود حل الكابتشا.```console
katana -u https://example.com -headless -csp capsolver -csk YOUR_API_KEY

يمكن أيضًا تعيين المزود والمفتاح عبر متغيرات البيئة:```console export CAPTCHA_SOLVER_PROVIDER=capsolver export CAPTCHA_SOLVER_KEY=YOUR_API_KEY katana -u https://example.com -headless

root@kitploit:~
## التحكم في النطاق

يمكن أن يكون الزحف لا نهائيًا إذا لم يتم تحديد نطاقه، ولهذا تأتي katana مع دعم متعدد لتحديد نطاق الزحف.

*`-field-scope`*
----
الخيار الأكثر فائدة لتحديد النطاق باستخدام اسم حقل محدد مسبقًا، `rdn` هو الخيار الافتراضي لنطاق الحقل.

   - `rdn` - الزحف مقيد باسم نطاق الجذر وجميع النطاقات الفرعية (مثل `*example.com`) (افتراضي)
   - `fqdn` - الزحف مقيد بالنطاق الفرعي المحدد (مثل `www.example.com` أو `api.example.com`)
   - `dn` - الزحف مقيد بكلمة مفتاحية لاسم النطاق (مثل `example`)```console
katana -u https://tesla.com -fs dn

-crawl-scope

للتحكم المتقدم في النطاق، يمكن استخدام الخيار -cs الذي يأتي مع دعم regex.```console katana -u https://tesla.com -cs login

root@kitploit:~
بالنسبة لقواعد متعددة داخل النطاق، يمكن تمرير إدخال ملف مع سلسلة متعددة الأسطر / تعبير عادي.```bash
$ cat in_scope.txt

login/
admin/
app/
wordpress/
  • يوفر الإطار وثيقة تشغيل مفصلة تحتوي على جميع خطوات المشاركة وتوثيق التفويض الخاص بالمشاركة. تساعد وثيقة التشغيل هذه في تقديم مفهوم "الأمن والخصوصية حسب التصميم" خلال المشاركة. كما تحدد تدفق المشاركة الذي يمكن لأي مدقق أو مقيم استخدامه لفهم المشاركة وخطواتها.

  • يوفر الإطار قائمة التحقق الخاصة ببرنامج NIST National Checklist Program (NCP) لتتبع جميع إعدادات/سياسات الأمان المطبقة أثناء المشاركة.

  • يوفر الإطار وثيقة خدمات الأمان التي تسرد جميع خدمات الأمان المستخدمة: Microsoft 365 Defender وMicrosoft Sentinel وMicrosoft Defender for Cloud.

  • يوفر الإطار وثيقة سيناريوهات المستخدم التي تشرح السيناريوهات/المستخدمين المختلفين التي يغطيها الإطار بالإضافة إلى أنواع حسابات المستخدمين وشخصيات المستخدمين.```console katana -u https://tesla.com -cs in_scope.txt

root@kitploit:~
*`-crawl-out-scope`*
-----

لتحديد ما لا يجب الزحف إليه، يمكن استخدام الخيار `-cos` ويدعم أيضًا إدخال **regex**.```console
katana -u https://tesla.com -cos logout

بالنسبة لعدة قواعد خارج النطاق، يمكن تمرير إدخال ملف بسلسلة متعددة الأسطر / تعبير منتظم.```bash $ cat out_of_scope.txt

/logout /log_out

root@kitploit:~
المعلمات```console
katana -u https://tesla.com -cos out_of_scope.txt

-no-scope

النطاق الافتراضي لـ Katana هو *.domain، ولتعطيل هذا يمكن استخدام الخيار -ns وأيضًا لزحف الإنترنت.```console katana -u https://tesla.com -ns

root@kitploit:~
*`-display-out-scope`*
----

بشكل افتراضي، عند استخدام خيار النطاق، فإنه ينطبق أيضًا على الروابط التي يتم عرضها كمخرجات، وبالتالي **يتم استبعاد عناوين URL الخارجية بشكل افتراضي**، ولتجاوز هذا السلوك، يمكن استخدام خيار `-do` لعرض جميع عناوين URL الخارجية الموجودة في عناوين URL / نقطة النهاية المحددة للنطاق للأهداف.```
katana -u https://tesla.com -do

إليك جميع خيارات CLI للتحكم في النطاق -```console 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

root@kitploit:~
## إعدادات الزاحف

تأتي Katana مع خيارات متعددة لتكوين الزحف والتحكم فيه بالطريقة التي نريدها.

*`-depth`*
----

خيار لتحديد `depth` لمتابعة عناوين URL للزحف، كلما زاد العمق زاد عدد نقاط النهاية التي يتم الزحف إليها + الوقت المستغرق للزحف.```
katana -u https://tesla.com -d 5

-js-crawl

خيار لتمكين تحليل ملفات JavaScript + الزحف إلى نقاط النهاية المكتشفة في ملفات JavaScript، معطل افتراضيًا.``` katana -u https://tesla.com -jc

root@kitploit:~
*`-crawl-duration`*
----

خيار لتحديد مدة الزحف مسبقًا، معطل افتراضيًا.```
katana -u https://tesla.com -ct 2

-known-files

خيار لتمكين الزحف إلى ملفي robots.txt و sitemap.xml، معطل افتراضياً.``` katana -u https://tesla.com -kf robotstxt,sitemapxml

root@kitploit:~
*`-automatic-form-fill`*
----

خيار لتمكين الملء التلقائي للنماذج للحقول المعروفة / غير المعروفة، يمكن تخصيص قيم الحقول المعروفة حسب الحاجة عن طريق تحديث ملف تكوين النموذج في `$HOME/.config/katana/form-config.yaml`.

الملء التلقائي للنماذج هو ميزة تجريبية.```
katana -u https://tesla.com -aff

قيم تكوين النموذج تدعم دوال المساعدة الخاصة بـ DSL لتوليد البيانات الديناميكي. جميع دوال rand_* من مكتبة projectdiscovery/dsl متاحة:```yaml

$HOME/.config/katana/form-config.yaml

email: "rand_email()" phone: "rand_phone()" placeholder: "rand_first_name()" password: 'rand_base(16, "")' color: "#e66465"

root@kitploit:~
*`-filter-similar`*
----

خيار لتصفية زحف عناوين URL المتشابهة عن طريق تسوية أجزاء المسار المتغيرة. يكتشف هذا المعرفات، UUIDs، الهاشات، التواريخ، والقيم الديناميكية الأخرى، ويتعلم أيضًا أنماطًا متكررة في وقت التشغيل. على سبيل المثال، يتم التعامل مع `/users/123` و `/users/456` كنفس نقطة النهاية.```
katana -u https://tesla.com -fsu

يمكن ضبط عتبة الترويج (عدد القيم المميزة في موضع مسار قبل معاملته كمعامل) باستخدام -fst. القيم المنخفضة أكثر عدوانية (عدد أقل من عناوين URL التي يتم الزحف إليها)، والقيم الأعلى أكثر تسامحًا. القيمة الافتراضية هي 10.``` katana -u https://tesla.com -fsu -fst 5

root@kitploit:~
*`-max-domain-pages`*
----

خيار لتحديد عدد الصفحات التي يتم الزحف إليها لكل نطاق. يمنع أي نطاق واحد من استهلاك ميزانية الزحف بأكملها، مفيد للمواقع الكبيرة أو الحماية من فخ الزاحف.```
katana -u https://tesla.com -mdp 100

تصنيف قاعدة المعرفة

يمكن لـ Katana إثراء نتائج الزحف بـ قاعدة معرفة — تصنيف بالتعلّم الآلي لكل صفحة تم الزحف إليها مدعوم من dit. عند تفعيلها، يتم تصنيف كل استجابة حسب نوع الصفحة (مثل login، error، captcha، parked) ويتم تحديد أي نماذج على الصفحة، مع إرفاق النتيجة بحقل knowledgebase في مخرجات JSONL. يعمل هذا عبر جميع المحركات (القياسية وبدون واجهة رسومية).

ملاحظة: يتم تنزيل نموذج التصنيف تلقائيًا عند أول استخدام إلى ~/.dit/model.json (من Hugging Face). هذه تكلفة لمرة واحدة لكل جهاز — التشغيلات اللاحقة تعيد استخدام النموذج المخبأ. لا حاجة للتثبيت اليدوي لـ dit.

-knowledge-base

تمكين تصنيف قاعدة المعرفة. يُضاف تصنيف نوع الصفحة والنماذج إلى حقل knowledgebase لكل نتيجة.```console katana -u https://example.com -kb -jsonl

root@kitploit:~
لكني أعتقد أن العملية تحتاج إلى تحديث لتناسب العصر الحديث. إليك النسخة التي أستخدمها```json
{
  "timestamp": "...",
  "request": { "...": "..." },
  "response": {
    "...": "...",
    "knowledgebase": {
      "PageType": "login",
      "Forms": [{ "type": "login", "fields": { "username": "username or email", "password": "password" } }]
    }
  }
}

-filter-page-type

تصفية النتائج لتشمل أنواع الصفحات المحددة فقط. تفعيل هذا يعني ضمنيًا -kb (المصنف تتم تهيئته تلقائيًا).```console katana -u https://example.com -fpt login,error

root@kitploit:~
*`-kb-secrets`*
----

قم بتمكين مستخرج الأسرار في قاعدة المعرفة، ليتم عرض الأسرار المكتشفة (مفاتيح API، الرموز، إلخ) تحت مفتاح `secrets`. أضف `-kb-validate-secrets` للتحقق من صحة الأسرار المكتشفة مقابل موفرها — لاحظ أن هذا **يرسل استدعاءات API حية**.```console
katana -u https://example.com -kb-secrets

-kb-endpoints

قم بتمكين endpoints extractor، الذي يصنف الطلبات إلى REST أو GraphQL أو SOAP أو XHR تحت المفتاح endpoints.```console katana -u https://example.com -kb-endpoints

root@kitploit:~
## الزحف المُعتمد على المصادقة

يتضمن الزحف المُعتمد على المصادقة إدراج رؤوس مخصصة أو ملفات تعريف ارتباط (كوكيز) في طلبات HTTP للوصول إلى الموارد المحمية. توفر هذه الرؤوس معلومات المصادقة أو التفويض، مما يسمح لك بزحف المحتوى/النقاط النهائية المُوثَّقة. يمكنك تحديد الرؤوس مباشرة في سطر الأوامر أو تقديمها كملف مع katana لإجراء الزحف المُعتمد على المصادقة.

> **ملاحظة**: يحتاج المستخدم إلى إجراء المصادقة يدويًا وتصدير ملف تعريف ارتباط الجلسة / الرأس إلى ملف لاستخدامه مع katana.

*`-headers`*
----

خيار لإضافة رأس مخصص أو ملف تعريف ارتباط (كوكي) إلى الطلب.
> بناء جملة [الرؤوس](https://datatracker.ietf.org/doc/html/rfc7230#section-3.2) في مواصفات HTTP

إليك مثال لإضافة ملف تعريف ارتباط (كوكي) إلى الطلب:```
katana -u https://tesla.com -H 'Cookie: usrsess=AmljNrESo'

من الممكن أيضًا توفير الرؤوس أو ملفات تعريف الارتباط كملف. على سبيل المثال:``` $ cat cookie.txt

Cookie: PHPSESSIONID=XXXXXXXXX X-API-KEY: XXXXX TOKEN=XX

root@kitploit:~
| **OpenSCA** | أداة استخدام تجارية لتحليل تكوين البرمجيات. |```
katana -u https://tesla.com -H cookie.txt

هناك خيارات إضافية لتكوينها عند الحاجة، فيما يلي جميع خيارات CLI المتعلقة بالتكوين -```console 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") -iqp, -ignore-query-params Ignore crawling same path with different query-param values -fsu, -filter-similar filter crawling of similar looking URLs (e.g., /users/123 and /users/456) -fst, -filter-similar-threshold int number of distinct values before a path position is treated as parameter (default 10) -mdp, -max-domain-pages int maximum number of pages to crawl per domain (default unlimited)

root@kitploit:~
### الاتصال بجلسة المتصفح النشطة

يمكن لـ Katana أيضًا الاتصال بجلسة متصفح نشطة حيث يكون المستخدم قد سجل الدخول بالفعل وتم المصادقة عليه، واستخدامها للزحف. الشرط الوحيد لذلك هو تشغيل المتصفح مع تمكين التصحيح عن بعد.

فيما يلي مثال على تشغيل متصفح Chrome مع تمكين التصحيح عن بعد واستخدامه مع Katana -

**الخطوة 1) أولاً، حدد مسار ملف chrome التنفيذي**

| نظام التشغيل | موقع Chromium التنفيذي | موقع Google Chrome التنفيذي |
|------------------|------------------------------|-----------------------------------|
| Windows (64-bit) | `C:\Program Files (x86)\Google\Chromium\Application\chrome.exe` | `C:\Program Files (x86)\Google\Chrome\Application\chrome.exe` |
| Windows (32-bit) | `C:\Program Files\Google\Chromium\Application\chrome.exe` | `C:\Program Files\Google\Chrome\Application\chrome.exe` |
| macOS | `/Applications/Chromium.app/Contents/MacOS/Chromium` | `/Applications/Google Chrome.app/Contents/MacOS/Google Chrome` |
| Linux | `/usr/bin/chromium` | `/usr/bin/google-chrome` |

**الخطوة 2) قم بتشغيل Chrome مع تمكين التصحيح عن بعد، وسيعيد عنوان websocker url. على سبيل المثال، على MacOS، يمكنك تشغيل Chrome مع تمكين التصحيح عن بعد باستخدام الأمر التالي** -```console
$ /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) الآن استخدم عنوان websocket مع katana للاتصال بجلسة المتصفح النشطة وزحف الموقع الإلكتروني```console katana -headless -u https://tesla.com -cwu ws://127.0.0.1:9222/devtools/browser/c5316c9c-19d6-42dc-847a-41d1aeebf7d6 -no-incognito

root@kitploit:~
> **ملاحظة**: يمكنك استخدام الخيار `-cdd` لتحديد دليل بيانات كروم مخصص لتخزين بيانات المتصفح والكوكيز، لكن ذلك لا يحفظ بيانات الجلسة إذا تم تعيين الكوكيز على `Session` فقط أو تنتهي صلاحيتها بعد وقت معين.

## المرشحات

*`-field`*
----

> [!WARNING]
> مهمل: استخدم [**`-output-template`**](#-output-template) بدلاً من ذلك. لا يزال علم `-field` مدعومًا للتوافق مع الإصدارات السابقة.

تأتي كاتانا مع حقول مدمجة يمكن استخدامها لتصفية المخرجات للحصول على المعلومات المطلوبة، ويمكن استخدام الخيار `-f` لتحديد أي من الحقول المتاحة.```
   -f, -field string  field to display in output (url,path,fqdn,rdn,rurl,qurl,qpath,file,key,value,kv,dir,udir)

فيما يلي جدول يحتوي على أمثلة لكل حقل والمخرجات المتوقعة عند الاستخدام -

فيما يلي مثال على استخدام خيار الحقل لعرض جميع عناوين 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

root@kitploit:~
### الحقول المخصصة

يمكنك إنشاء حقول مخصصة لاستخراج وتخزين معلومات محددة من استجابات الصفحات باستخدام قواعد التعبير العادي (regex). يتم تعريف هذه الحقول المخصصة باستخدام ملف إعدادات YAML، ويتم تحميلها من الموقع الافتراضي الموجود في `$HOME/.config/katana/field-config.yaml`. بدلاً من ذلك، يمكنك استخدام الخيار `-flc` لتحميل ملف إعدادات حقل مخصص من موقع مختلف.
فيما يلي مثال على حقل مخصص.```yaml
- 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 (مطلوب)

يتم استخدام قيمة سمة name كقيمة خيار سطر الأوامر -field.

  • type (مطلوب)

نوع السمة المخصصة، الخيار المدعوم حالياً - regex

  • part (اختياري)

الجزء من الاستجابة لاستخراج المعلومات منه. القيمة الافتراضية هي response، والتي تشمل كلاً من الترويسة والمحتوى. القيم الأخرى المحتملة هي header و body.

  • group (اختياري)

يمكنك استخدام هذه السمة لتحديد مجموعة مطابقة معينة في التعبير النمطي، على سبيل المثال: group: 1

تشغيل katana باستخدام حقل مخصص:```console

katana -u https://tesla.com -f email,phone

root@kitploit:~
*`-store-field`*
---

لتكملة خيار `field` الذي يُستخدم لتصفية المخرجات أثناء وقت التشغيل، يوجد خيار `-sf، -store-fields` الذي يعمل تمامًا مثل خيار الحقل باستثناء أنه بدلاً من التصفية، يقوم بتخزين جميع المعلومات على القرص داخل مجلد `katana_field` مرتبة حسب عنوان URL المستهدف. استخدم `-sfd` أو `-store-field-dir` لتخزين البيانات في موقع مختلف.```
katana -u https://tesla.com -sf key,fqdn,qurl -silent

المدخلات:```bash $ ls katana_field/

https_www.tesla.com_fqdn.txt https_www.tesla.com_key.txt https_www.tesla.com_qurl.txt

root@kitploit:~
يمكن أن يكون خيار `-store-field` مفيدًا لجمع المعلومات لبناء قائمة كلمات مستهدفة لأغراض متنوعة، بما في ذلك على سبيل المثال لا الحصر:

- تحديد المعاملات الأكثر استخدامًا
- اكتشاف المسارات المستخدمة بشكل متكرر
- العثور على الملفات الشائعة الاستخدام
- تحديد النطاقات الفرعية ذات الصلة أو غير المعروفة

### مرشحات Katana

*`-extension-match`*
---

يمكن مطابقة مخرجات الزحف بسهولة لامتداد معين باستخدام خيار `-em` لضمان عرض المخرجات التي تحتوي على الامتداد المطلوب فقط.```
katana -u https://tesla.com -silent -em js,jsp,json

استخدم القيمة الخاصة none لتضمين عناوين URL بدون امتداد ملف في المخرجات أيضًا:``` katana -u https://tesla.com -silent -em js,jsp,json,none

root@kitploit:~
*`-extension-filter`*
---

يمكن تصفية مخرجات الزحف بسهولة لامتداد معين باستخدام الخيار `-ef` الذي يضمن إزالة جميع عناوين URL التي تحتوي على الامتداد المحدد.```
katana -u https://tesla.com -silent -ef css,txt,md

-no-default-ext-filter

يقوم Katana بتصفية عدة امتدادات افتراضيًا. يمكن تعطيل ذلك باستخدام الخيار -ndef.``` katana -u https://tesla.com -silent -ndef

root@kitploit:~
*`-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

root@kitploit:~
### الترشيح المتقدم

تدعم Katana تعابير DSL لإمكانيات المطابقة والتصفية المتقدمة:

- لمطابقة نقاط النهاية مع رمز الحالة 200:```shell
katana -u https://www.hackerone.com -mdc 'status_code == 200'
  • لمطابقة نقاط النهاية التي تحتوي على "default" ولها رمز حالة غير 403:```shell katana -u https://www.hackerone.com -mdc 'contains(endpoint, "default") && status_code != 403'
root@kitploit:~
- لمطابقة نقاط النهاية مع تقنيات PHP:```shell
katana -u https://www.hackerone.com -mdc 'contains(to_lower(technologies), "php")'
  • لتصفية نقاط النهاية التي تعمل على Cloudflare:```shell katana -u https://www.hackerone.com -fdc 'contains(to_lower(technologies), "cloudflare")'
root@kitploit:~
يمكن تطبيق دوال DSL على أي مفاتيح في مخرجات jsonl. لمزيد من المعلومات حول دوال DSL المتاحة، يرجى زيارة [dsl project](https://github.com/projectdiscovery/dsl).

فيما يلي خيارات تصفية إضافية -```console
katana -h filter

Flags:
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,none)
   -ef, -extension-filter string[]        filter output for given extension (eg, -ef png,css)
   -ndef, -no-default-ext-filter bool     remove default extensions from the filter list
   -mdc, -match-condition string          match response with dsl based condition
   -fdc, -filter-condition string         filter response with dsl based condition
   -duf, -disable-unique-filter           disable duplicate content filtering

حد المعدل

من السهل أن يتم حظرك أثناء الزحف إذا لم تتبع حدود المواقع المستهدفة، كاتانا تأتي مع خيارات متعددة لضبط الزحف ليكون بالسرعة التي نريدها (سريعًا أو بطيئًا).

-delay

خيار لإدخال تأخير بالثواني بين كل طلب جديد تقوم به كاتانا أثناء الزحف، معطل بشكل افتراضي.``` katana -u https://tesla.com -delay 20

root@kitploit:~
*`-concurrency`*
-----
خيار للتحكم في عدد عناوين URL لكل هدف يتم جلبها في نفس الوقت.```
katana -u https://tesla.com -c 20

-parallelism

خيار لتحديد عدد الأهداف التي سيتم معالجتها في نفس الوقت من قائمة الإدخال.``` katana -u https://tesla.com -p 20

root@kitploit:~
*`-rate-limit`*
-----
الحد الأقصى للطلبات في الثانية، يتم تطبيقه عالميًا على جميع المضيفين.```
katana -u https://tesla.com -rl 100

-rate-limit-minute

الحد الأقصى للطلبات في الدقيقة، يُطبق عالميًا على جميع المضيفين.``` katana -u https://tesla.com -rlm 500

root@kitploit:~
*`-host-rate-limit`*
-----
الحد الأقصى لعدد الطلبات في الثانية لكل مضيف. يحصل كل مضيف على سلة حد معدل خاصة به، لذا لن يؤدي المضيف البطيء إلى تقييد المضيفات السريعة. يحل محل حد المعدل العالمي عند تعيينه. كما يقوم Katana بالتراجع تلقائيًا مع تأخير أسي وتشويش عندما يعيد المضيف 429 أو 503.```console
katana -u https://tesla.com -hrl 50

-host-rate-limit-minute

الحد الأقصى للطلبات في الدقيقة لكل مضيف.```console katana -u https://tesla.com -hrlm 200

root@kitploit:~
فيما يلي جميع خيارات CLI الطويلة / القصيرة للتحكم في حد المعدل -```console
katana -h rate-limit

Flags:
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
   -hrl, -host-rate-limit int    maximum requests to send per second per host
   -hrlm, -host-rate-limit-minute int  maximum number of requests to send per minute per host

المخرجات

تدعم Katana كل من إخراج الملفات بصيغة النص العادي وكذلك JSON والتي تتضمن معلومات إضافية مثل source وtag واسم attribute لربط النقاط النهائية المكتشفة.

-output

بشكل افتراضي، تقوم katana بإخراج النقاط النهائية التي تم الزحف إليها بصيغة النص العادي. يمكن كتابة النتائج إلى ملف باستخدام خيار -output.```console katana -u https://example.com -no-scope -output example_endpoints.txt

root@kitploit:~
*`-output-template`*
---

يتيح لك خيار `-output-template` تخصيص تنسيق الإخراج باستخدام قالب، مما يوفر مرونة في تعريف هيكل الإخراج. يحل هذا الخيار محل العلامة المهملة `-field` لتصفية الإخراج. بدلاً من الاعتماد على حقول محددة مسبقًا، يمكنك تحديد قالب مخصص مباشرة في سطر الأوامر للتحكم في كيفية عرض البيانات المستخرجة.

مثال على استخدام خيار `-output-template`:```sh
katana -u https://example.com -output-template '{{email}} - {{url}}'

في هذا المثال، يمثل email حقلًا مخصصًا يقوم باستخراج وعرض عناوين البريد الإلكتروني الموجودة داخل المصدر url.

[!NOTE] إذا كان الحقل المحدد غير موجود أو لا يحتوي على قيمة، فسيتم ببساطة حذفه من المخرجات.

يمكن لهذا الخيار تنظيم المخرجات بشكل فعال بطريقة تناسب حالة الاستخدام الخاصة بك، مما يجعل استخراج البيانات أكثر بديهية وقابلية للتخصيص.

-jsonl ---```console katana -u https://example.com -jsonl | jq .

root@kitploit:~
``````json
{
  "timestamp": "2023-03-20T16:23:58.027559+05:30",
  "request": {
    "method": "GET",
    "endpoint": "https://example.com",
    "raw": "GET / HTTP/1.1\r\nHost: example.com\r\nUser-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 11_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36\r\nAccept-Encoding: gzip\r\n\r\n"
  },
  "response": {
    "status_code": 200,
    "headers": {
      "accept_ranges": "bytes",
      "expires": "Mon, 27 Mar 2023 10:53:58 GMT",
      "last_modified": "Thu, 17 Oct 2019 07:18:26 GMT",
      "content_type": "text/html; charset=UTF-8",
      "server": "ECS (dcb/7EA3)",
      "vary": "Accept-Encoding",
      "etag": "\"3147526947\"",
      "cache_control": "max-age=604800",
      "x_cache": "HIT",
      "date": "Mon, 20 Mar 2023 10:53:58 GMT",
      "age": "331239"
    },
    "body": "<!doctype html>\n<html>\n<head>\n    <title>Example Domain</title>\n\n    <meta charset=\"utf-8\" />\n    <meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\" />\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n    <style type=\"text/css\">\n    body {\n        background-color: #f0f0f2;\n        margin: 0;\n        padding: 0;\n        font-family: -apple-system, system-ui, BlinkMacSystemFont, \"Segoe UI\", \"Open Sans\", \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n        \n    }\n    div {\n        width: 600px;\n        margin: 5em auto;\n        padding: 2em;\n        background-color: #fdfdff;\n        border-radius: 0.5em;\n        box-shadow: 2px 3px 7px 2px rgba(0,0,0,0.02);\n    }\n    a:link, a:visited {\n        color: #38488f;\n        text-decoration: none;\n    }\n    @media (max-width: 700px) {\n        div {\n            margin: 0 auto;\n            width: auto;\n        }\n    }\n    </style>    \n</head>\n\n<body>\n<div>\n    <h1>Example Domain</h1>\n    <p>This domain is for use in illustrative examples in documents. You may use this\n    domain in literature without prior coordination or asking for permission.</p>\n    <p><a href=\"https://www.iana.org/domains/example\">More information...</a></p>\n</div>\n</body>\n</html>\n",
    "technologies": [
      "Azure",
      "Amazon ECS",
      "Amazon Web Services",
      "Docker",
      "Azure CDN"
    ],
    "raw": "HTTP/1.1 200 OK\r\nContent-Length: 1256\r\nAccept-Ranges: bytes\r\nAge: 331239\r\nCache-Control: max-age=604800\r\nContent-Type: text/html; charset=UTF-8\r\nDate: Mon, 20 Mar 2023 10:53:58 GMT\r\nEtag: \"3147526947\"\r\nExpires: Mon, 27 Mar 2023 10:53:58 GMT\r\nLast-Modified: Thu, 17 Oct 2019 07:18:26 GMT\r\nServer: ECS (dcb/7EA3)\r\nVary: Accept-Encoding\r\nX-Cache: HIT\r\n\r\n<!doctype html>\n<html>\n<head>\n    <title>Example Domain</title>\n\n    <meta charset=\"utf-8\" />\n    <meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\" />\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n    <style type=\"text/css\">\n    body {\n        background-color: #f0f0f2;\n        margin: 0;\n        padding: 0;\n        font-family: -apple-system, system-ui, BlinkMacSystemFont, \"Segoe UI\", \"Open Sans\", \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n        \n    }\n    div {\n        width: 600px;\n        margin: 5em auto;\n        padding: 2em;\n        background-color: #fdfdff;\n        border-radius: 0.5em;\n        box-shadow: 2px 3px 7px 2px rgba(0,0,0,0.02);\n    }\n    a:link, a:visited {\n        color: #38488f;\n        text-decoration: none;\n    }\n    @media (max-width: 700px) {\n        div {\n            margin: 0 auto;\n            width: auto;\n        }\n    }\n    </style>    \n</head>\n\n<body>\n<div>\n    <h1>Example Domain</h1>\n    <p>This domain is for use in illustrative examples in documents. You may use this\n    domain in literature without prior coordination or asking for permission.</p>\n    <p><a href=\"https://www.iana.org/domains/example\">More information...</a></p>\n</div>\n</body>\n</html>\n"
  }
}

-store-response

الخيار -store-response يسمح بكتابة جميع طلبات واستجابات نقاط النهاية التي تم الزحف إليها إلى ملف نصي. عند استخدام هذا الخيار، سيتم كتابة ملفات نصية تحتوي على الطلب والاستجابة إلى دليل katana_response. إذا كنت ترغب في تحديد دليل مخصص، يمكنك استخدام الخيار -store-response-dir.```console katana -u https://example.com -no-scope -store-response

root@kitploit:~
(no content to translate)```bash
$ cat katana_response/index.txt

katana_response/example.com/327c3fda87ce286848a574982ddd0b7c7487f816.txt https://example.com (200 OK)
katana_response/www.iana.org/bfc096e6dd93b993ca8918bf4c08fdc707a70723.txt http://www.iana.org/domains/reserved (200 OK)

ملاحظة:

خيار -store-response غير مدعوم في وضع -headless.

-list-output-fields

يُظهر العلم -list-output-fields أو -lof جميع الحقول المتاحة التي يمكن استخدامها في تنسيق الإخراج JSONL. هذا مفيد لفهم البيانات المتاحة عند استخدام قوالب إخراج مخصصة أو عند استبعاد حقول محددة.```console katana -lof

root@kitploit:~
*`-exclude-output-fields`*
----

يسمح لك العَلَم `-exclude-output-fields` أو `-eof` باستثناء حقول محددة من مخرجات JSONL. هذا مفيد لتقليل حجم المخرجات أو التركيز على بيانات محددة عن طريق إزالة الحقول غير المرغوب فيها.```console
katana -u https://example.com -jsonl -eof raw,body

إليك خيارات إضافية لـ CLI تتعلق بالمخرجات -```console katana -h output

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 -lof, -list-output-fields list available fields for jsonl output format -eof, -exclude-output-fields exclude fields from jsonl output -j, -json write output in JSON Lines format -nc, -no-color disable output content coloring (ANSI escape codes) -silent display output only -v, -verbose display verbose output -version display project version

root@kitploit:~
## Katana كمكتبة
يمكن استخدام `katana` كمكتبة عن طريق إنشاء نموذج من البنية `Option` وملئه بنفس الخيارات التي ستُحدد عبر CLI. باستخدام الخيارات يمكنك إنشاء `crawlerOptions` وبالتالي `crawler` قياسي أو هجين.
يجب استدعاء طريقة `crawler.Crawl` لزحف الإدخال.```go
package main

import (
	"math"

	"github.com/projectdiscovery/gologger"
	"github.com/projectdiscovery/katana/pkg/engine/standard"
	"github.com/projectdiscovery/katana/pkg/output"
	"github.com/projectdiscovery/katana/pkg/types"
)

func main() {
	options := &types.Options{
		MaxDepth:     3,             // Maximum depth to crawl
		FieldScope:   "rdn",         // Crawling Scope Field
		BodyReadSize: math.MaxInt,   // Maximum response size to read
		Timeout:      10,            // Timeout is the time to wait for request in seconds
		Concurrency:  10,            // Concurrency is the number of concurrent crawling goroutines
		Parallelism:  10,            // Parallelism is the number of urls processing goroutines
		Delay:        0,             // Delay is the delay between each crawl requests in seconds
		RateLimit:    150,           // Maximum requests to send per second
		Strategy:     "depth-first", // Visit strategy (depth-first, breadth-first)
		OnResult: func(result output.Result) { // Callback function to execute for result
			gologger.Info().Msg(result.Request.URL)
		},
	}
	crawlerOptions, err := types.NewCrawlerOptions(options)
	if err != nil {
		gologger.Fatal().Msg(err.Error())
	}
	defer crawlerOptions.Close()
	crawler, err := standard.New(crawlerOptions)
	if err != nil {
		gologger.Fatal().Msg(err.Error())
	}
	defer crawler.Close()
	var input = "https://www.hackerone.com"
	err = crawler.Crawl(input)
	if err != nil {
		gologger.Warning().Msgf("Could not crawl %s: %s", input, err.Error())
	}
}

الإبلاغ عن المشكلات وطلبات الميزات

للحفاظ على تتبع المشكلات وتحسين كفاءة التصنيف:

تبدأ جميع التقارير كـ مناقشات GitHub

  • تقارير الأخطاء → بدء مناقشة أسئلة وأجوبة
  • طلبات الميزات → بدء مناقشة أفكار
  • الأسئلة → بدء مناقشة أسئلة وأجوبة

لماذا المناقشات أولاً؟

  • يمكن للمجتمع المساعدة في الأسئلة السريعة وحل المشكلات
  • تصنيف أفضل - تتحول الأخطاء/الميزات المؤكدة إلى مشكلات متتبعة
  • متتبع مشكلات أنظف - التركيز على العناصر القابلة للتنفيذ فقط

سيقوم المشرفون بتحويل المناقشات إلى مشكلات عند الاقتضاء بعد المراجعة المناسبة.


katana مصنوع بـ ❤️ بواسطة فريق projectdiscovery ويُوزع تحت رخصة MIT.

انضم إلى Discord

تنزيل الأداة
الحقلالوصفالمثال
urlنقطة نهاية URLhttps://admin.projectdiscovery.io/admin/login?user=admin&password=admin
qurlURL بما في ذلك معلمة الاستعلامhttps://admin.projectdiscovery.io/admin/login.php?user=admin&password=admin
qpathالمسار بما في ذلك معلمة الاستعلام/login?user=admin&password=admin
pathمسار URLhttps://admin.projectdiscovery.io/admin/login
fqdnاسم النطاق المؤهل بالكاملadmin.projectdiscovery.io
rdnاسم النطاق الجذرprojectdiscovery.io
rurlURL الجذرhttps://admin.projectdiscovery.io
ufileURL مع ملفhttps://admin.projectdiscovery.io/login.js
fileاسم الملف في URLlogin.php
keyمفاتيح المعلمات في URLuser,password
valueقيم المعلمات في URLadmin,admin
kvالمفاتيح=القيم في URLuser=admin&password=admin
dirاسم دليل URL/admin/
udirURL مع دليلhttps://admin.projectdiscovery.io/admin/