TopGit
Đánh giá repo GitHub

Katana: Go Web Crawler cho Pipeline

KTopGit review image for projectdiscovery/katana
Review by Topgit.dev for projectdiscovery/katana, with GitHub repository stats and README context.
Nhận định nhanh

Katana làm tốt đúng một việc: biến một URL hoặc danh sách URL thành tập endpoint được phát hiện gọn gàng, nhanh, mà không ép bạn dùng browser trừ khi bạn yêu cầu. Điểm giá trị thật sự nằm ở việc tách riêng hai chế độ standard/headless — crawl bằng HTTP thuần của Go cho phần lớn target, chỉ bật headless Chrome khi nội dung render bằng JavaScript đòi hỏi điều đó. Sự linh hoạt này có cái giá của nó: chế độ headless cần cài Chrome hoạt động được, còn giải captcha thì cần API key của bên thứ ba.

Sao
★ 17.3k
Fork
⑂ 1.2k
Ngôn ngữ
Go
Giấy phép
MIT
Chủ đề
Developer Tools
Cập nhật
Aug 2026
Trang chủ
GitHub

Katana là gì?

Katana là một framework crawling và spidering dạng command-line của ProjectDiscovery, viết bằng Go, được thiết kế để nối vào pipeline recon và automation chứ không chạy như một ứng dụng độc lập. Nó crawl một hoặc nhiều URL ở chế độ HTTP thuần hoặc chế độ headless Chrome, đi theo các link, parse JavaScript để tìm endpoint, rồi ghi kết quả ra stdout, file, hoặc JSONL.

Tính năng chính của Katana

  • Chế độ standard dùng HTTP client của Go để crawl nhanh, không cần browser, còn chế độ headless hook trực tiếp vào Chrome để render các trang nặng JavaScript.
  • Parse JavaScript (-jc) trích endpoint ra từ file JS; có thêm parser dựa trên jsluice (-jsl) nhưng README ghi rõ nó tốn nhiều bộ nhớ.
  • Tự động điền form (-aff) được đánh dấu là experimental, cố gắng điền các form gặp phải trong lúc crawl.
  • Kiểm soát scope khóa crawl vào một domain, root domain, hoặc FQDN, hoặc nhận regex tùy chỉnh qua -crawl-scope và -crawl-out-scope.
  • Knowledge base (-kb) tự tải một model ML ở lần chạy đầu để phân loại loại trang và loại form trong lúc crawl.
  • Bộ lọc độ tương đồng nội dung trang chạy thêm một lớp khử trùng lặp sau bước khớp chính xác, chọn giữa simhash, TF-IDF, hoặc BM25.
  • Xử lý captcha ở chế độ headless chuyển thử thách reCAPTCHA cho một bên giải bên ngoài như capsolver qua -captcha-solver-provider.
  • Output ghi ra stdout, file, hoặc JSONL có cấu trúc, kèm flag để bỏ dữ liệu request/response thô hoặc bỏ field cụ thể.
Số sao GitHub của repo này thay đổi thế nào theo thời gian. Nguồn: star-history.com.Xem lịch sử sao

Cài đặt Katana

Katana cần Go 1.26+ để build từ source; README ghi chú rằng nếu cài lỗi thì thử bản Go mới nhất thường khắc phục được, vì phiên bản tối thiểu từng thay đổi. Cách cài chuẩn là `CGO_ENABLED=1 go install github.com/projectdiscovery/katana/cmd/katana@latest`. Bản binary dựng sẵn cũng có trên trang release của GitHub. Người dùng Docker chạy `docker pull projectdiscovery/katana:latest`, rồi `docker run projectdiscovery/katana:latest -u https://tesla.com` cho chế độ standard, hoặc thêm `-system-chrome -headless` cho chế độ headless. Trên Ubuntu, cách README khuyến nghị là cài Go qua snap và Google Chrome từ repo apt trước khi chạy go install, vì chế độ headless cần một bản Chrome thật.

Cách dùng Katana cơ bản

Lệnh cơ bản là `katana -u https://tesla.com` cho một target; nối nhiều URL bằng dấu phẩy, trỏ `-list` vào một file, hoặc pipe URL qua stdin, ví dụ `cat domains | httpx | katana`. `-d` set độ sâu crawl (mặc định 3), `-c` set concurrency (mặc định 10), `-rl` giới hạn số request mỗi giây (mặc định 150). Thêm `-jc` để parse file JavaScript tìm endpoint, `-headless` để chuyển sang crawl bằng browser, và `-j` để ghi JSONL thay vì URL thuần ra stdout. `katana -h` in ra toàn bộ danh sách flag, chia theo input, configuration, headless, scope, filter, rate-limit, và output.

Điểm mạnh

  • Chế độ standard không phụ thuộc browser nên chạy được ngay trong pipeline CI hoặc trên một máy Linux trần mà không cần cài thêm gì.
  • Kiểm soát scope khá chi tiết: field dựng sẵn (domain, root domain, FQDN) cộng regex tùy ý cho cả in-scope lẫn out-of-scope.
  • Input/output thân thiện với pipeline: nhận input qua stdin, file, hoặc URL; xuất ra stdout, file, hoặc JSONL với kiểm soát tới từng field.
  • Rate limiting có cả kiểm soát toàn cục lẫn theo từng host (-rl, -hrl và biến thể theo phút), nên một lượt crawl không dồn dập lên một target.
  • Giấy phép MIT giúp dùng được trong công cụ nội bộ và thương mại mà không vướng ràng buộc bản quyền.

Hạn chế và vấn đề đã biết

  • Tự động điền form và crawl headless đều được README đánh dấu experimental, chưa phải tính năng ổn định, đã qua kiểm chứng kỹ.
  • Parser JS dựa trên jsluice được ghi rõ là tốn nhiều bộ nhớ, điều đáng lưu ý khi crawl ở quy mô lớn.
  • Chế độ headless cần một bản Chrome thật (hoặc bản katana tự cài) cùng công sức thiết lập để chạy browser trong CI hay trên server, khác với chế độ standard không phụ thuộc gì.
  • Giải captcha phụ thuộc vào một provider bên thứ ba và API key như capsolver; bản thân katana không tự giải captcha.
  • Bộ phân loại knowledge base tự tải một model ML ở lần chạy đầu, thêm một phụ thuộc và bước khởi động mà không phải pipeline nào cũng muốn.

Các lựa chọn thay thế Katana

Câu hỏi thường gặp

Katana có miễn phí và mã nguồn mở không?

Katana miễn phí và mã nguồn mở, phát hành theo giấy phép MIT, nên dùng được trong công cụ nội bộ lẫn thương mại mà không vướng phí bản quyền.

Katana có hỗ trợ render JavaScript khi crawl không?

Katana hỗ trợ render JavaScript qua chế độ headless, hook trực tiếp vào Chrome để render trang và bắt endpoint được render bởi browser. Flag riêng -js-crawl cũng parse file JavaScript ở chế độ standard mà không cần mở browser đầy đủ.

Sự khác biệt giữa chế độ standard và headless của Katana là gì?

Chế độ standard dùng HTTP client của Go để lấy và parse response thô, nhanh nhưng không thấy được nội dung do JavaScript phía client thêm vào. Chế độ headless điều khiển một Chrome thật, nên bắt thêm được endpoint render qua DOM và endpoint kích hoạt bởi JS, đổi lại là chi phí chạy browser.

Katana có giải được CAPTCHA khi crawl không?

Katana có thể kích hoạt giải CAPTCHA trong lúc crawl headless bằng cách chuyển thử thách cho một provider bên ngoài như capsolver qua flag -captcha-solver-provider và -captcha-solver-key. Bản thân katana không tự giải CAPTCHA.

Katana xử lý rate limiting như thế nào?

Katana giới hạn tốc độ crawl với kiểm soát toàn cục và theo từng host riêng biệt: -rate-limit và -rate-limit-minute giới hạn tổng request, -host-rate-limit và -host-rate-limit-minute giới hạn request tới một host, còn -delay thêm khoảng nghỉ cố định giữa các request.

Katana hỗ trợ những định dạng output nào?

Katana ghi kết quả ra stdout theo mặc định, ra file với -output, hoặc dạng JSONL có cấu trúc với -jsonl, và cho phép bỏ dữ liệu request/response thô hoặc bỏ field cụ thể trong output JSONL để file gọn hơn.

Vấn đề mà Katana giải quyết

Các pipeline recon và bug bounty thường buộc phải chọn một trong hai: crawler HTTP nhanh nhưng bỏ sót link và API call render bằng JavaScript, hoặc crawler headless-browser đầy đủ nhưng chạy chậm khi quét hàng trăm target. Katana nằm giữa hai lựa chọn đó, mặc định crawl bằng HTTP thuần nhẹ nhàng của Go và chỉ trả giá cho headless Chrome ở những target được đánh dấu bằng flag -headless.

Trường hợp sử dụng tốt nhất

  • Liệt kê attack surface cho một scope bug bounty hoặc pentest trước khi chạy scanner lỗ hổng nhắm vào đó.
  • Đẩy danh sách host đang sống từ một công cụ như httpx vào katana qua stdin để crawl từng host tìm endpoint.
  • Crawl các single-page app nặng JavaScript ở chế độ headless để bắt được endpoint mà crawler HTTP thuần sẽ bỏ sót.
  • Lấy endpoint API và field form ra từ bundle JS để dựng bản đồ bề mặt API.

Nên dùng — và nên bỏ qua khi nào

Team bảo mật và người săn bug bounty chạy pipeline recon cần phát hiện endpoint nhanh trên nhiều target là nhóm phù hợp nhất, nhất là khi đã có httpx hoặc công cụ tương tự đẩy danh sách target vào. Developer chỉ cần scrape vài trang để lấy nội dung, không cần kiểm soát scope hay bộ máy headless, sẽ thấy một thư viện scraping thuần đơn giản hơn. Team cần giải captcha hoặc điền form ổn định ở mức production nên chờ thêm, vì README đánh dấu cả hai là experimental.

Repo liên quan

Nguồn & ghi công

Thông tin và ví dụ lệnh lấy từ repository GitHub projectdiscovery/katana và README của repo.

Dữ liệu GitHub · đồng bộ lần cuối 16 thg 8, 2026Đánh giá bởi Henry
Về TopGit

katana có đáng để bạn bỏ thời gian?

ChatGPT, Claude và Perplexity đều đọc được trang này. Hỏi thử xem họ nghĩ gì về katana.

GitHub