{"id":502642,"date":"2026-11-11T09:20:54","date_gmt":"2026-11-11T06:20:54","guid":{"rendered":"https:\/\/savepearlharbor.com\/?p=502642"},"modified":"2026-11-11T09:20:54","modified_gmt":"2026-11-11T06:20:54","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=502642","title":{"rendered":"\u0410\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u044b\u0439 OSINT \u043f\u0440\u043e\u0442\u0438\u0432 WAF: \u041a\u0430\u043a \u044f \u0434\u043e\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u043b \u0441\u0432\u043e\u0439 \u0441\u043a\u0430\u043d\u0435\u0440 \u043f\u0435\u0440\u0438\u043c\u0435\u0442\u0440\u0430 \u0434\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043e\u0432 Kali Linux"},"content":{"rendered":"<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<p>\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440! \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043d\u0430\u0437\u0430\u0434 \u044f \u0434\u0435\u043b\u0438\u043b\u0441\u044f \u0437\u0434\u0435\u0441\u044c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u043e\u0439 \u0441\u0432\u043e\u0435\u0439 \u0443\u0442\u0438\u043b\u0438\u0442\u044b <strong>Web-Recon<\/strong> \u2014 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0433\u043e \u043a\u043e\u043c\u0431\u0430\u0439\u043d\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430 \u0431\u0435\u0448\u0435\u043d\u043e\u0439 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u043e\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442 \u0441\u043e\u0442\u043d\u0438 \u0434\u043e\u043c\u0435\u043d\u043e\u0432 \u0438, \u0435\u0441\u043b\u0438 \u043d\u0430\u0442\u044b\u043a\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0441\u0435\u0442\u0435\u0432\u0443\u044e \u0430\u043d\u043e\u043c\u0430\u043b\u0438\u044e \u0438\u043b\u0438 \u0443\u043f\u0430\u0432\u0448\u0438\u0439 \u0445\u043e\u0441\u0442, \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u044b\u0442\u044f\u0433\u0438\u0432\u0430\u0435\u0442 \u0433\u043b\u0443\u0431\u043e\u043a\u0438\u0439 WHOIS-\u043f\u0430\u0441\u043f\u043e\u0440\u0442, \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u044f \u0432\u0441\u0451 \u0432 SQLite.<\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0432\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u043e\u0436\u0438\u043b: \u043f\u043e\u0448\u043b\u0438 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u044b, \u0430 \u0433\u043b\u0430\u0432\u043d\u043e\u0435 \u2014 \u043b\u044e\u0434\u0438 \u043d\u0430\u0447\u0430\u043b\u0438 \u0434\u0435\u043b\u0430\u0442\u044c <code>git clone<\/code> \u0438 \u0443\u0442\u0430\u0441\u043a\u0438\u0432\u0430\u0442\u044c \u0441\u043a\u0440\u0438\u043f\u0442 \u0432 \u0441\u0432\u043e\u0438 Kali Linux. \u0422\u043e\u0433\u0434\u0430 \u043c\u043d\u0435 \u0432 \u0433\u043e\u043b\u043e\u0432\u0443 \u043f\u0440\u0438\u0448\u043b\u0430 \u0430\u043c\u0431\u0438\u0446\u0438\u043e\u0437\u043d\u0430\u044f \u043c\u044b\u0441\u043b\u044c: <em>\u00ab\u0410 \u043f\u043e\u0447\u0435\u043c\u0443 \u0431\u044b \u043d\u0435 \u043f\u043e\u0434\u0430\u0442\u044c \u0437\u0430\u044f\u0432\u043a\u0443 \u043d\u0430 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 Web-Recon \u0432 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432 Kali Linux, \u0447\u0442\u043e\u0431\u044b \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0447\u0435\u0440\u0435\u0437 \u043e\u0431\u044b\u0447\u043d\u044b\u0439 <\/em><code><em>sudo apt install<\/em><\/code><em>?\u00bb<\/em>.<\/p>\n<p>\u042f \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043b\u0441\u044f \u0432 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u043c \u0431\u0430\u0433-\u0442\u0440\u0435\u043a\u0435\u0440\u0435 Offensive Security (\u043a\u043e\u043c\u0430\u043d\u0434\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0434\u0435\u043b\u0430\u0435\u0442 Kali) \u0438 \u0441\u043e\u0437\u0434\u0430\u043b \u0442\u0438\u043a\u0435\u0442 \u0432 \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0438 <em>New Tool Request<\/em>. \u041e\u0442\u0432\u0435\u0442 \u043e\u0442 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0435\u0432 (<code>daniruiz<\/code>) \u043f\u0440\u0438\u043b\u0435\u0442\u0435\u043b \u0447\u0435\u0440\u0435\u0437 \u043f\u0430\u0440\u0443 \u043d\u0435\u0434\u0435\u043b\u044c \u0438 \u0437\u0430\u0441\u0442\u0430\u0432\u0438\u043b \u043c\u0435\u043d\u044f \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u0435\u0440\u0435\u043e\u0441\u043c\u044b\u0441\u043b\u0438\u0442\u044c \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443 \u043f\u0440\u043e\u0435\u043a\u0442\u0430:<\/p>\n<blockquote>\n<p><em>\u00ab\u041f\u0440\u0438\u0432\u0435\u0442! \u0421\u043f\u0430\u0441\u0438\u0431\u043e \u0437\u0430 \u0432\u0430\u0448\u0443 \u0437\u0430\u044f\u0432\u043a\u0443. \u041c\u044b \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0435 \u043c\u043e\u0436\u0435\u043c \u0443\u043f\u0430\u043a\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u043a\u0430\u0436\u0434\u044b\u0439 infosec-\u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0432 \u043c\u0438\u0440\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u044b \u043e\u0442\u0434\u0430\u0435\u043c \u0441\u0442\u0440\u043e\u0433\u0438\u0439 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442 \u0442\u0435\u043c \u0443\u0442\u0438\u043b\u0438\u0442\u0430\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u043c\u0435\u044e\u0442 \u0431\u043e\u043b\u0435\u0435 \u0448\u0438\u0440\u043e\u043a\u043e\u0435 \u043f\u0440\u0438\u0437\u043d\u0430\u043d\u0438\u0435 \u0438 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043e\u043c\u044c\u044e\u043d\u0438\u0442\u0438 (wider adoption and community usage). \u0423\u0434\u0430\u0447\u0438 \u0441 \u0432\u0430\u0448\u0438\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u043c!\u00bb<\/em><\/p>\n<\/blockquote>\n<p>\u0412 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0435 \u043d\u0430 \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u043d\u044b\u0439 \u044d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u043b\u043e: <em>\u00ab\u041f\u0430\u0440\u0435\u043d\u044c, \u0442\u0432\u043e\u0439 \u0441\u043e\u0444\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043a\u0430\u043a \u043a\u0440\u0443\u0442\u043e\u0439 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u043a\u0440\u0438\u043f\u0442, \u043d\u043e Kali Linux \u2014 \u044d\u0442\u043e \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432 \u043f\u0440\u043e\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f. \u0421\u0434\u0435\u043b\u0430\u0439 \u0438\u0437 \u0441\u043a\u0440\u0438\u043f\u0442\u0430 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u044b\u0439 \u043f\u0430\u043a\u0435\u0442, \u0440\u0435\u0448\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u0441 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0430\u043c\u0438 \u0441\u0438\u0441\u0442\u0435\u043c \u0437\u0430\u0449\u0438\u0442\u044b, \u0432\u043d\u0435\u0434\u0440\u0438 \u0430\u0432\u0442\u043e\u0442\u0435\u0441\u0442\u044b, \u043f\u043e\u043a\u0430\u0436\u0438, \u0447\u0442\u043e \u043f\u0440\u043e\u0435\u043a\u0442 \u0436\u0438\u0432\u0435\u0442, \u0438 \u043c\u044b \u0432\u0435\u0440\u043d\u0435\u043c\u0441\u044f \u043a \u044d\u0442\u043e\u043c\u0443 \u0440\u0430\u0437\u0433\u043e\u0432\u043e\u0440\u0443\u00bb<\/em>.<\/p>\n<p>\u0412\u044b\u0437\u043e\u0432 \u0431\u044b\u043b \u043f\u0440\u0438\u043d\u044f\u0442. \u0417\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u043d\u0435\u0434\u0435\u043b\u0438 Web-Recon \u044d\u0432\u043e\u043b\u044e\u0446\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043b \u043e\u0442 \u0432\u0435\u0440\u0441\u0438\u0438 <code>v0.5.0<\/code> \u0434\u043e \u0440\u0435\u043b\u0438\u0437\u0430-\u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442\u0430 <code>v0.6.2<\/code>. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443, \u043a\u0430\u043a \u0443\u043a\u0440\u043e\u0449\u0430\u043b \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u0443\u044e \u043c\u043e\u0449\u043d\u043e\u0441\u0442\u044c, \u0441\u0442\u0440\u043e\u0438\u043b \u0442\u0440\u0435\u0445\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u044b\u0439 \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440 \u043e\u0431\u0445\u043e\u0434\u0430 WAF \u0438 \u0440\u0430\u0437\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u043b CI\/CD \u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d\u044b \u0432 \u043e\u0431\u043b\u0430\u043a\u0435. \u041f\u043e\u0433\u043d\u0430\u043b\u0438 \u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442!<\/p>\n<hr\/>\n<h3>\u0413\u043b\u0430\u0432\u0430 1: \u0423\u043a\u0440\u043e\u0449\u0435\u043d\u0438\u0435 \u0430\u0441\u0438\u043d\u043a\u043e\u0440\u043e\u0432\u043e\u0439 \u043c\u043e\u0449\u043d\u043e\u0441\u0442\u0438 (\u0421\u0435\u043c\u0430\u0444\u043e\u0440\u044b \u0438 \u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0438)<\/h3>\n<p>\u0412 \u0441\u0432\u043e\u0435\u0439 \u043f\u0435\u0440\u0432\u043e\u0439 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438 Web-Recon \u0440\u0430\u0431\u043e\u0442\u0430\u043b \u043d\u0430 \u0440\u0435\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u043c \u044f\u0434\u0440\u0435 <code>asyncio<\/code> + <code>aiohttp<\/code>. \u041c\u043e\u0449\u043d\u043e\u0441\u0442\u044c \u0431\u044b\u043b\u0430 \u043a\u043e\u043b\u043e\u0441\u0441\u0430\u043b\u044c\u043d\u043e\u0439: \u0434\u0432\u0438\u0436\u043e\u043a \u0448\u0432\u044b\u0440\u044f\u043b \u0441\u043e\u0442\u043d\u0438 \u0441\u0435\u0442\u0435\u0432\u044b\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e. \u041d\u043e \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u043f\u0435\u043d\u0442\u0435\u0441\u0442\u0435 \u044d\u0442\u043e \u043f\u0440\u0438\u0432\u0435\u043b\u043e \u043a \u043a\u0430\u0442\u0430\u0441\u0442\u0440\u043e\u0444\u0435. \u041f\u0440\u0438 \u043f\u043e\u043f\u044b\u0442\u043a\u0435 \u043c\u0430\u0441\u0441\u043e\u0432\u043e \u043f\u0440\u043e\u043f\u0430\u043b\u044c\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u0440\u0443\u043f\u043d\u044b\u0439 \u043a\u043e\u0440\u043f\u043e\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u043f\u0435\u0440\u0438\u043c\u0435\u0442\u0440, \u0443\u0442\u0438\u043b\u0438\u0442\u0430 \u0432\u044b\u0434\u0430\u0432\u0430\u043b\u0430 \u0442\u0430\u043a\u043e\u0439 \u043f\u043b\u043e\u0442\u043d\u044b\u0439 \u0448\u043a\u0432\u0430\u043b \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u043a\u043e\u043d\u043d\u0435\u043a\u0442\u043e\u0432, \u0447\u0442\u043e \u044d\u0442\u043e \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u043b\u043e\u0441\u044c \u0432 \u043d\u0435\u043f\u0440\u0435\u0434\u043d\u0430\u043c\u0435\u0440\u0435\u043d\u043d\u0443\u044e DoS-\u0430\u0442\u0430\u043a\u0443.<\/p>\n<p>\u041a\u0430\u043a\u043e\u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442? \u0421\u043b\u0430\u0431\u044b\u0435 \u0432\u0435\u0431-\u0440\u0435\u0441\u0443\u0440\u0441\u044b \u043f\u0430\u0434\u0430\u043b\u0438, \u0430 \u043f\u0440\u043e\u0434\u0432\u0438\u043d\u0443\u0442\u044b\u0435 Web Application Firewalls (WAF) \u0432\u0440\u043e\u0434\u0435 Cloudflare \u043c\u0433\u043d\u043e\u0432\u0435\u043d\u043d\u043e \u0442\u0440\u0438\u0433\u0433\u0435\u0440\u0438\u043b\u0438\u0441\u044c \u043d\u0430 \u0430\u043d\u043e\u043c\u0430\u043b\u044c\u043d\u0443\u044e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0438 \u043d\u0430\u043c\u0435\u0440\u0442\u0432\u043e \u0431\u0430\u043d\u0438\u043b\u0438 IP-\u0430\u0434\u0440\u0435\u0441 \u0441\u043a\u0430\u043d\u0435\u0440\u0430, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044f \u043f\u0430\u0447\u043a\u0438 \u043e\u0448\u0438\u0431\u043e\u043a <code>403 Forbidden<\/code>.<\/p>\n<p>\u0427\u0442\u043e\u0431\u044b \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0448\u0442\u0443\u0440\u043c \u0441\u0435\u0442\u0438 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u0443\u0435\u043c\u044b\u043c \u0438 \u0432 \u0441\u0442\u0438\u043b\u0435 The Legendary Solid Snake, \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0432\u043d\u0435\u0434\u0440\u0438\u0442\u044c \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c \u043a\u043e\u043d\u043a\u0443\u0440\u0435\u043d\u0442\u043d\u043e\u0441\u0442\u0438 \u2014 <code><strong>asyncio.Semaphore<\/strong><\/code>. \u0422\u0435\u043f\u0435\u0440\u044c, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0431\u044b \u0442\u044b\u0441\u044f\u0447 \u0434\u043e\u043c\u0435\u043d\u043e\u0432 \u043d\u0438 \u043b\u0435\u0436\u0430\u043b\u043e \u0432 \u0444\u0430\u0439\u043b\u0435 \u0446\u0435\u043b\u0435\u0439, \u0441\u0435\u043c\u0430\u0444\u043e\u0440 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043a\u0430\u043a \u0436\u0435\u0441\u0442\u043a\u0438\u0439 \u0442\u0443\u0440\u043d\u0438\u043a\u0435\u0442: \u0432 \u0441\u0435\u0442\u0438 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0432\u0438\u0441\u0438\u0442 \u0441\u0442\u0440\u043e\u0433\u043e \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0435 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 (\u0444\u043b\u0430\u0433 <code>-c<\/code>, \u043f\u043e \u0434\u0435\u0444\u043e\u043b\u0442\u0443 50).<\/p>\n<p>\u041d\u043e \u043e\u0434\u043d\u043e\u0433\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u043c\u0430\u043b\u043e \u2014 WAF \u0443\u043c\u0435\u044e\u0442 \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0442\u044c \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u0443\u044e \u043f\u0430\u043a\u0435\u0442\u043d\u0443\u044e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c. \u0414\u043b\u044f \u043e\u0431\u0445\u043e\u0434\u0430 \u044d\u0442\u043e\u0433\u043e \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u0430 \u044f \u0434\u043e\u0431\u0430\u0432\u0438\u043b \u043d\u0435\u0431\u043b\u043e\u043a\u0438\u0440\u0443\u044e\u0449\u0438\u0435 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0438 \u043d\u0430 \u0431\u0430\u0437\u0435 <code><strong>asyncio.sleep()<\/strong><\/code> (\u0444\u043b\u0430\u0433 <code>-d<\/code>). \u0412 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0433\u043e <code>time.sleep()<\/code>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430\u0433\u043b\u0443\u0445\u043e \u0437\u0430\u043c\u043e\u0440\u0430\u0436\u0438\u0432\u0430\u0435\u0442 \u0432\u0435\u0441\u044c \u043f\u043e\u0442\u043e\u043a \u041e\u0421 \u0438 \u0432\u0435\u0448\u0430\u0435\u0442 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b, \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u0430\u044f \u043f\u0430\u0443\u0437\u0430 \u043c\u044f\u0433\u043a\u043e \u0443\u0441\u044b\u043f\u043b\u044f\u0435\u0442 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u0443\u044e \u0437\u0430\u0434\u0430\u0447\u0443, \u043e\u0442\u0434\u0430\u0432\u0430\u044f \u043a\u0432\u0430\u043d\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 Event Loop\u2019\u0443. \u0412 \u0438\u0442\u043e\u0433\u0435 \u043f\u0440\u043e\u0433\u0440\u0435\u0441\u0441-\u0431\u0430\u0440 \u043e\u0442 <code>Rich<\/code> \u043f\u043b\u0430\u0432\u043d\u043e \u043a\u0440\u0443\u0442\u0438\u0442\u0441\u044f, \u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0443\u043b\u0435\u0442\u0430\u044e\u0442 \u0441 \u0430\u043a\u043a\u0443\u0440\u0430\u0442\u043d\u044b\u043c\u0438, \u0440\u0432\u0430\u043d\u044b\u043c\u0438 \u043f\u0430\u0443\u0437\u0430\u043c\u0438, \u0438\u043c\u0438\u0442\u0438\u0440\u0443\u044f \u0435\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0442\u0440\u0430\u0444\u0438\u043a:<\/p>\n<pre><code class=\"python\">parser.add_argument(\"-d\", \"--delay\", type=float, help=\"Delay in seconds between checks (default: 0.5)\", default=0.5)<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper\"><\/span><\/a><\/div><\/pre>\n<hr\/>\n<h3>\u0413\u043b\u0430\u0432\u0430 2: \u0412\u0435\u043b\u0438\u043a\u0430\u044f \u043c\u0430\u0441\u043a\u0438\u0440\u043e\u0432\u043a\u0430 (\u041a\u0430\u0441\u043a\u0430\u0434\u043d\u0430\u044f \u0440\u043e\u0442\u0430\u0446\u0438\u044f User-Agent)<\/h3>\n<p>\u0412\u0442\u043e\u0440\u0430\u044f \u043c\u0438\u043d\u0430, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043d\u0430\u0442\u044b\u043a\u0430\u043b\u0441\u044f \u0441\u043a\u0430\u043d\u0435\u0440 \u2014 \u044d\u0442\u043e \u0441\u0442\u0430\u0442\u0438\u0447\u043d\u044b\u0435 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438 HTTP-\u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432. \u0418\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0432 \u043a\u043e\u0434\u0435 \u0431\u044b\u043b \u0437\u0430\u0448\u0438\u0442 \u043e\u0434\u0438\u043d \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0441\u043b\u043e\u0432\u0430\u0440\u044c <code>headers<\/code>, \u043a\u043e\u0441\u044f\u0449\u0438\u0439 \u043f\u043e\u0434 Chrome 120 \u043d\u0430 Windows. \u041d\u043e \u043a\u043e\u0433\u0434\u0430 \u0437\u0430\u0449\u0438\u0442\u043d\u044b\u0439 \u044d\u043a\u0440\u0430\u043d \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0432\u0438\u0434\u0438\u0442, \u0447\u0442\u043e \u0437\u0430 \u043e\u0434\u043d\u0443 \u0441\u0435\u043a\u0443\u043d\u0434\u0443 \u043a \u043d\u0435\u043c\u0443 \u043f\u0440\u0438\u043b\u0435\u0442\u0430\u0435\u0442 100 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u043f\u043e \u0440\u0430\u0437\u043d\u044b\u043c \u043f\u0443\u0442\u044f\u043c, \u0438 \u0443 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0432\u043d\u0443\u0442\u0440\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u0430\u0441\u043f\u043e\u0440\u0442\u0430 (User-Agent) \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0430 \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e \u0438\u0434\u0435\u043d\u0442\u0438\u0447\u043d\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430 \u0434\u043e \u0435\u0434\u0438\u043d\u043e\u0433\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u0430, \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0437\u0430\u0449\u0438\u0442\u044b \u043c\u0433\u043d\u043e\u0432\u0435\u043d\u043d\u043e \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0443.<\/p>\n<p>\u0412 \u0440\u0435\u043b\u0438\u0437\u0435 <code>v0.6.2<\/code> \u044f \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0432\u044b\u043f\u0438\u043b\u0438\u043b \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u0442\u0430\u0442\u0438\u0447\u043d\u044b\u0435 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438 \u0438 \u0441\u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043b \u0442\u0440\u0435\u0445\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u044b\u0439 \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440 \u043c\u0430\u0441\u043a\u0438\u0440\u043e\u0432\u043a\u0438 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u043d\u044b\u0445 \u043e\u0442\u043f\u0435\u0447\u0430\u0442\u043a\u043e\u0432, \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0439 \u043f\u043e \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0443 \u043a\u0430\u0441\u043a\u0430\u0434\u043d\u043e\u0433\u043e \u0444\u043e\u043b\u0431\u044d\u043a\u0430:<\/p>\n<ol>\n<li>\n<p><strong>Tier 1 (\u041a\u0430\u0441\u0442\u043e\u043c\u043d\u044b\u0439 \u0444\u0430\u0439\u043b):<\/strong> \u041f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u0435\u043d\u0442\u0435\u0441\u0442\u0435\u0440 \u043c\u043e\u0436\u0435\u0442 \u0441\u043a\u043e\u0440\u043c\u0438\u0442\u044c \u0443\u0442\u0438\u043b\u0438\u0442\u0435 \u0441\u0432\u043e\u0439 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439, \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u00ab\u043f\u0440\u043e\u0433\u0440\u0435\u0442\u044b\u0439\u00bb \u0441\u043f\u0438\u0441\u043e\u043a \u043e\u0442\u043f\u0435\u0447\u0430\u0442\u043a\u043e\u0432 \u0447\u0435\u0440\u0435\u0437 \u0444\u043b\u0430\u0433 <code>-A<\/code> \/ <code>--UserAgents<\/code>. \u0421\u043a\u0440\u0438\u043f\u0442 \u0438\u0437\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0435\u0442 \u0435\u0433\u043e \u0438 \u0437\u0430\u0431\u044c\u0435\u0442 \u0432 \u043f\u0430\u043c\u044f\u0442\u044c:<\/p>\n<\/li>\n<\/ol>\n<pre><code class=\"python\">    if args.UserAgents:        if os.path.exists(args.UserAgents):            if not args.quiet:                console.print(f\"[bold green]\u25ba Loading custom User-Agents from file: {args.UserAgents}[\/bold green]\")            with open(args.UserAgents, 'r', encoding='utf-8') as file:                for line in file:                    if line.strip():                        loaded_agents.append(line.strip())        else:            console.print(f\"[bold red]\u2716 Error: User-Agents file '{args.UserAgents}' does not exist.[\/bold red]\")            sys.exit(1)<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<ol start=\"2\">\n<li>\n<p><strong>Tier 2 (\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 Live-\u0430\u043f\u0434\u0435\u0439\u0442):<\/strong> \u0415\u0441\u043b\u0438 \u0444\u043b\u0430\u0433 \u043f\u0443\u0441\u0442\u043e\u0439, Web-Recon \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0438\u0435 \u0441\u043f\u0438\u0441\u043a\u0438. \u041e\u043d \u0434\u0435\u043b\u0430\u0435\u0442 \u0431\u044b\u0441\u0442\u0440\u044b\u0439 \u0444\u043e\u043d\u043e\u0432\u044b\u0439 \u0437\u0430\u043f\u0440\u043e\u0441 \u043a \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u043c\u043e\u043c\u0443 RAW-\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044e \u043d\u0430 GitHub (\u0432\u043c\u0435\u0441\u0442\u043e \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0441\u0442\u043e\u0438\u0442 \u0437\u0430\u0433\u043b\u0443\u0448\u043a\u0430), \u0432\u044b\u0442\u044f\u0433\u0438\u0432\u0430\u044f \u043e\u0442\u0442\u0443\u0434\u0430 \u0441\u0430\u043c\u044b\u0435 \u0441\u0432\u0435\u0436\u0438\u0435, \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u043d\u0430 \u0441\u0435\u0433\u043e\u0434\u043d\u044f\u0448\u043d\u0435\u0435 \u0443\u0442\u0440\u043e \u0441\u0442\u0440\u043e\u043a\u0438 Desktop-\u0431\u0440\u0430\u0443\u0437\u0435\u0440\u043e\u0432. \u041d\u0438\u043a\u0430\u043a\u0438\u0445 \u0442\u044f\u0436\u0435\u043b\u044b\u0445 \u0438 \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u044b\u0445 HTML-\u043f\u0430\u0440\u0441\u0435\u0440\u043e\u0432 (\u0432\u0440\u043e\u0434\u0435 BeautifulSoup) \u2014 \u0447\u0438\u0441\u0442\u044b\u0439 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439 \u0441\u0442\u0440\u0438\u043c-\u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441:<\/p>\n<\/li>\n<\/ol>\n<pre><code class=\"python\">    else:        if not args.quiet:            console.print(\"[bold cyan]\u25ba Fetching fresh User-Agents from online database...[\/bold cyan]\")        raw_site_url = \"https:\/\/githubusercontent.com\"        try:            r_response = requests.get(raw_site_url, timeout=4, headers=headers)            if r_response.status_code == 200:                for line in r_response.text.splitlines():                    if line.strip().startswith(\"Mozilla\/5.0\"):                        loaded_agents.append(line.strip())        except:            pass<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<ol start=\"3\">\n<li>\n<p><strong>Tier 3 (\u0412\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u0449\u0438\u0442):<\/strong> \u0415\u0441\u043b\u0438 \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u0432 \u0438\u0437\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u043e\u0444\u0444\u043b\u0430\u0439\u043d-\u043b\u0430\u0431\u043e\u0440\u0430\u0442\u043e\u0440\u0438\u0438 (\u0432\u043e\u0437\u0434\u0443\u0448\u043d\u044b\u0439 \u0437\u0430\u0437\u043e\u0440) \u0438 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430 \u043d\u0430 \u043c\u0430\u0448\u0438\u043d\u0435 \u043d\u0435\u0442, \u0431\u043b\u043e\u043a <code>try\/except<\/code> \u043c\u044f\u0433\u043a\u043e \u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u0441\u0431\u043e\u0439 \u0441\u0435\u0442\u0438 \u0438 \u0440\u0430\u0437\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u0442 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u0443\u044e \u0432 \u043a\u043e\u0434 \u0437\u0430\u043f\u0430\u0441\u043a\u0443 \u0438\u0437 \u044d\u0442\u0430\u043b\u043e\u043d\u043d\u044b\u0445 \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u044b\u0445 \u0441\u0442\u0440\u043e\u043a Chrome, Firefox, Edge \u0438 Safari:<\/p>\n<\/li>\n<\/ol>\n<pre><code>        if not loaded_agents:            if not args.quiet:                console.print(\"[bold yellow]\u26a0\ufe0f Internet offline. Activating built-in hardcoded User-Agent fallback shield.[\/bold yellow]\")            loaded_agents = [                \"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/120.0.0.0 Safari\/537.36\",                \"Mozilla\/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit\/605.1.15 (KHTML, like Gecko) Version\/17.0 Safari\/605.1.15\",                \"Mozilla\/5.0 (X11; Linux x86_64; rv:109.0) Gecko\/20100101 Firefox\/119.0\",                \"Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/120.0.0.0 Safari\/537.36 Edg\/120.0.0.0\"            ]<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p><strong>\u041a\u0430\u043a \u044d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432 \u0441\u0435\u0442\u0435\u0432\u043e\u043c \u0446\u0438\u043a\u043b\u0435:<\/strong> \u041a\u043e\u0433\u0434\u0430 \u0430\u0441\u0438\u043d\u043a\u043e\u0440\u043e\u0432\u044b\u0439 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u0437\u0430\u0434\u0430\u0447 <code>futures<\/code> \u043f\u0430\u043a\u0443\u0435\u0442 \u0432\u0435\u0435\u0440 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432, \u0443\u0442\u0438\u043b\u0438\u0442\u0430 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043c\u043e\u0434\u0443\u043b\u044f <code>random.choice()<\/code> \u0432\u044b\u0434\u0435\u0440\u0433\u0438\u0432\u0430\u0435\u0442 \u0434\u043b\u044f <em>\u043a\u0430\u0436\u0434\u043e\u0439 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0441\u044b\u043b\u043a\u0438<\/em> \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 User-Agent. \u0412\u043d\u0443\u0442\u0440\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>check_single_link_async<\/code> \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e \u043f\u0440\u044f\u043c\u043e \u043f\u0435\u0440\u0435\u0434 \u0432\u044b\u0437\u043e\u0432\u043e\u043c <code>session.get()<\/code>.<\/p>\n<p>\u0414\u043b\u044f \u0446\u0435\u043b\u0435\u0432\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u044d\u0442\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a, \u0431\u0443\u0434\u0442\u043e \u043d\u0430 \u0441\u0430\u0439\u0442 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0437\u0430\u0448\u043b\u0430 \u0442\u043e\u043b\u043f\u0430 \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e \u0440\u0430\u0437\u043d\u044b\u0445 \u043b\u044e\u0434\u0435\u0439 \u0441 \u0440\u0430\u0437\u043d\u044b\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 \u0438 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c.<\/p>\n<hr\/>\n<h3>\u0413\u043b\u0430\u0432\u0430 3: \u0418\u043d\u0436\u0435\u043d\u0435\u0440\u0438\u044f \u043f\u043e \u0433\u0430\u0439\u0434\u0430\u043c Debian Policy<\/h3>\n<p>\u0427\u0442\u043e\u0431\u044b \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u0442\u044c \u043b\u044e\u0431\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u0441\u043a\u0440\u0438\u043f\u0442 \u0432\u043e \u0432\u0437\u0440\u043e\u0441\u043b\u044b\u0439 open-source \u043f\u0440\u043e\u0434\u0443\u043a\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0435 \u0441\u0442\u044b\u0434\u043d\u043e \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043c\u0430\u0439\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u043c \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u043e\u0432, \u043a\u043e\u0434\u043e\u0432\u0443\u044e \u0431\u0430\u0437\u0443 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043f\u0435\u0440\u0435\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0441 \u043d\u0443\u043b\u044f:<\/p>\n<ul>\n<li>\n<p><strong>\u041f\u0435\u0440\u0435\u0445\u043e\u0434 \u043d\u0430 <\/strong><code><strong>src-layout<\/strong><\/code><strong>:<\/strong> \u0424\u0430\u0439\u043b <code>recon.py<\/code> \u043f\u0435\u0440\u0435\u0435\u0445\u0430\u043b \u0432\u0433\u043b\u0443\u0431\u044c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b <code>src\/web_recon\/<\/code>. \u041a\u043e\u0440\u0435\u043d\u044c \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f \u043e\u0447\u0438\u0449\u0435\u043d \u043e\u0442 \u043c\u0443\u0441\u043e\u0440\u0430.<\/p>\n<\/li>\n<li>\n<p><strong>\u041c\u0430\u043d\u0438\u0444\u0435\u0441\u0442 <\/strong><code><strong>pyproject.toml<\/strong><\/code><strong>:<\/strong> \u041f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e deprecated \u0441\u0442\u0430\u0440\u044b\u0435 \u043a\u043e\u0441\u0442\u044b\u043b\u0438 <code>setup.py<\/code>. \u0412\u0435\u0441\u044c \u043f\u0440\u043e\u0435\u043a\u0442 \u0442\u0435\u043f\u0435\u0440\u044c \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442 PEP 517\/621. \u0412\u043d\u0443\u0442\u0440\u0438 \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442\u0430 \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u043d \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043c\u0435\u043d\u0435\u0434\u0436\u043c\u0435\u043d\u0442 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439 (<code>rich<\/code>, <code>aiohttp<\/code>, <code>aiosqlite<\/code>, <code>python-whois<\/code>) \u0438 \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u0430\u044f \u0442\u043e\u0447\u043a\u0430 \u0432\u044b\u0437\u043e\u0432\u0430 (<code>[project.scripts]<\/code>).<\/p>\n<\/li>\n<li>\n<p><strong>\u0420\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u044b:<\/strong> \u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u044d\u0442\u043e\u0439 \u0443\u043f\u0430\u043a\u043e\u0432\u043a\u0435, \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0441\u0438\u0434\u0435\u0442\u044c \u0432 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u043f\u0430\u043f\u043a\u0435 \u0438 \u043f\u0438\u0441\u0430\u0442\u044c <code>python recon.py<\/code>. \u041f\u043e\u0441\u043b\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0441\u043e\u0444\u0442 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u0442 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0439 \u0430\u043b\u0438\u0430\u0441. \u041f\u0438\u0448\u0435\u043c \u0432 \u043b\u044e\u0431\u043e\u0439 \u0442\u043e\u0447\u043a\u0435 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430 Kali \u0432\u0441\u0435\u0433\u043e \u043e\u0434\u043d\u043e \u0441\u043b\u043e\u0432\u043e \u2014 <code><strong>web-recon<\/strong><\/code>, \u0438 \u0443\u0442\u0438\u043b\u0438\u0442\u0430 \u0432\u0437\u043b\u0435\u0442\u0430\u0435\u0442!<\/p>\n<\/li>\n<li>\n<p><strong>\u041e\u0431\u043b\u0430\u0447\u043d\u044b\u0439 CI\/CD \u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d:<\/strong> \u0412 \u043f\u0430\u043f\u043a\u0443 <code>tests\/<\/code> \u044f \u0437\u0430\u043b\u043e\u0436\u0438\u043b \u0430\u0432\u0442\u043e\u0442\u0435\u0441\u0442\u044b \u043d\u0430 \u0431\u0430\u0437\u0435 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0430 <code>pytest-asyncio<\/code> (\u041f\u0440\u043e\u0448\u0443 \u043f\u0440\u043e\u0449\u0435\u043d\u0438\u044f, \u043d\u043e \u0444\u0430\u0439\u043b <code>recon_test<\/code> \u044f \u043e\u0442\u0447\u0430\u0441\u0442\u0438 \u043d\u0430\u0432\u0430\u0439\u0431\u043a\u043e\u0434\u0438\u043b). \u041e\u043d\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044e\u0442 \u0430\u0442\u043e\u043c\u0430\u0440\u043d\u043e\u0441\u0442\u044c \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0439 \u0421\u0423\u0411\u0414 SQLite, \u044d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0442\u0430\u0431\u043b\u0438\u0446 <code>[]<\/code> \u043e\u0442 SQL-\u0438\u043d\u044a\u0435\u043a\u0446\u0438\u0439 \u0438 \u043a\u043e\u043b\u043b\u0438\u0437\u0438\u0438 \u0444\u043b\u0430\u0433\u043e\u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u0432 <code>argparse<\/code>. \u0412 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u043d <strong>GitHub Actions<\/strong> (<code>.github\/workflows\/tests.yml<\/code>). \u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u0438 \u043a\u0430\u0436\u0434\u043e\u043c <code>git push<\/code> \u0441\u0435\u0440\u0432\u0435\u0440\u044b GitHub \u0441\u0430\u043c\u0438 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e \u0440\u0430\u0437\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u044e\u0442 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u043a\u0443 \u0441 Linux, \u043d\u0430\u043a\u0430\u0442\u044b\u0432\u0430\u044e\u0442 Python 3.12 \u0438 3.13, \u0441\u0442\u0430\u0432\u044f\u0442 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435 \u0438 \u0433\u043e\u043d\u044f\u044e\u0442 \u0442\u0435\u0441\u0442\u044b, \u0432\u044b\u0432\u0435\u0448\u0438\u0432\u0430\u044f \u0437\u0435\u043b\u0451\u043d\u044b\u0439 \u043c\u0430\u0440\u043a\u0435\u0440 \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u0438 <code>PASSED<\/code>.<\/p>\n<\/li>\n<\/ul>\n<hr\/>\n<h3>\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435. \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0432 \u043e\u0434\u0438\u043d \u043a\u043b\u0438\u043a \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0438\u0437 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u043e\u0432<\/h3>\n<p>\u0414\u0430, \u043a\u0443\u0440\u0430\u0442\u043e\u0440\u044b Kali Linux \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u043e\u0442\u043b\u043e\u0436\u0438\u043b\u0438 \u0443\u043f\u0430\u043a\u043e\u0432\u043a\u0443 \u0438\u0437-\u0437\u0430 \u043d\u0435\u0445\u0432\u0430\u0442\u043a\u0438 \u00ab\u043c\u0435\u0434\u0438\u0439\u043d\u043e\u0433\u043e \u0432\u0435\u0441\u0430\u00bb. \u041d\u043e \u044d\u0442\u043e \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0431\u043e\u0447\u0438\u0439 \u044d\u0442\u0430\u043f. \u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0442\u043e\u043f\u043e\u0432\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0418\u0411 \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0442 \u0441\u0432\u043e\u0439 \u043f\u0443\u0442\u044c \u043a\u0430\u043a \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0435 open-source \u043f\u0440\u043e\u0435\u043a\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u044f\u044e\u0442\u0441\u044f \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0447\u0435\u0440\u0435\u0437 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438.<\/p>\n<p>\u041f\u0440\u043e\u0435\u043a\u0442 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0441\u0442\u0430\u0431\u0438\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d, \u043f\u0435\u0440\u0435\u0432\u0435\u0434\u0451\u043d \u043d\u0430 <code>src-layout<\/code> \u0438 \u0433\u043e\u0442\u043e\u0432 \u043a \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0431\u043e\u0440\u043a\u0435. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c Web-Recon \u0432 \u0441\u0432\u043e\u0435\u0439 Kali Linux \u043a\u0430\u043a \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u0443\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u043f\u0440\u044f\u043c\u043e \u0441\u0435\u0439\u0447\u0430\u0441.<\/p>\n<p>\u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0441\u043a\u043b\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0435\u0433\u043e \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0431\u0438\u043b\u0434:<\/p>\n<pre><code class=\"bash\"># \u041a\u043b\u043e\u043d\u0438\u0440\u0443\u0435\u043c \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439git clone https:\/\/github.com\/joavat-2009\/Web-Reconcd Web-Recon# \u0421\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u0438 \u043f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0430\u043a\u0430\u0442\u044b\u0432\u0430\u0435\u043c \u043f\u0430\u043a\u0435\u0442 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0443sudo apt install python3-build -ypython3 -m buildsudo pip install dist\/*.whl --break-system-packages<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><span class=\"sc-logo-wrapper icon-only\"><\/span><\/a><\/div><\/pre>\n<p><strong>\u041d\u043e, \u043c\u043e\u0436\u043d\u043e \u0438 \u0437\u0430\u0431\u044b\u0442\u044c \u043e \u0441\u0431\u043e\u0440\u043a\u0435 \u0444\u0430\u0439\u043b\u043e\u0432 \u0438\u0437 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f, \u0432\u0435\u0434\u044c \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 \u0432\u0435\u0440\u0441\u0438\u0438 v0.6.0 \u0432 \u0432\u0435\u0442\u043a\u0435 Releases \u043b\u0435\u0436\u0430\u0442 \u0443\u0436\u0435 \u0441\u043e\u0431\u0440\u0430\u043d\u043d\u044b\u0435 <\/strong><code><strong>.whl<\/strong><\/code><strong> \u0444\u0430\u0439\u043b\u044b \u0438 \u0442\u0430\u043a \u0431\u0443\u0434\u0435\u0442 \u0432 \u043a\u0430\u0436\u0434\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438.<\/strong><\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0441\u0430\u043c \u0440\u0430\u0441\u043a\u0438\u0434\u0430\u0435\u0442 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438, \u043f\u0440\u043e\u043f\u0438\u0448\u0435\u0442 \u0442\u043e\u0447\u043a\u0443 \u0432\u044b\u0437\u043e\u0432\u0430, \u0438 \u0432\u044b \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0443\u0442\u0438\u043b\u0438\u0442\u0443 \u0438\u0437 \u043b\u044e\u0431\u043e\u0439 \u043f\u0430\u043f\u043a\u0438 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430 \u043f\u043e \u043a\u043e\u0440\u043e\u0442\u043a\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u0435: <code>web-recon --help<\/code>.<\/p>\n<p><strong>\u041d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043f\u0440\u0438\u0437\u044b\u0432 \u043f\u043e\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0432\u043c\u0435\u0441\u0442\u0435 (\u043d\u0438 \u0432 \u043a\u043e\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043d\u0438\u043a\u043e\u0433\u043e \u043d\u0435 \u043f\u0440\u0438\u043d\u0443\u0436\u0434\u0430\u044e, \u044f \u0446\u0435\u043d\u044e \u0432\u044b\u0431\u043e\u0440 \u043a\u043e\u043c\u044c\u044e\u043d\u0438\u0442\u0438, \u043a\u0430\u043a\u043e\u0432 \u0431\u044b \u043e\u043d \u043d\u0438 \u0431\u044b\u043b):<\/strong> \u0414\u0440\u0443\u0437\u044c\u044f, \u043c\u0430\u0439\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u044b Kali \u043f\u0440\u044f\u043c\u043e \u0441\u043a\u0430\u0437\u0430\u043b\u0438, \u0447\u0442\u043e \u0436\u0434\u0443\u0442 \u043e\u0442 \u043f\u0440\u043e\u0435\u043a\u0442\u0430 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u0430 \u0441\u043e \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u043a\u043e\u043c\u044c\u044e\u043d\u0438\u0442\u0438. \u0415\u0441\u043b\u0438 \u0432\u0430\u043c \u0431\u043b\u0438\u0437\u043a\u0430 \u0442\u0435\u043c\u0430 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0433\u043e OSINT-\u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0435\u0440\u0438\u043c\u0435\u0442\u0440\u0430, \u0441\u043a\u0440\u044b\u0442\u043d\u043e\u0441\u0442\u0438 \u0438 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u2014 \u0437\u0430\u043b\u0435\u0442\u0430\u0439\u0442\u0435 \u0432 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439, \u0442\u0435\u0441\u0442\u0438\u0440\u0443\u0439\u0442\u0435 \u0441\u0442\u0435\u043b\u0441-\u0440\u0435\u0436\u0438\u043c \u0432\u0435\u0435\u0440\u043d\u043e\u0439 \u0440\u043e\u0442\u0430\u0446\u0438\u0438, \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0442\u0438\u043a\u0435\u0442\u044b \u0432 Issues \u0438, \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u0436\u0435, \u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u0437\u0430\u0432\u0435\u0442\u043d\u044b\u0435 <strong>Stars \u2b50<\/strong>! \u0421\u0434\u0435\u043b\u0430\u0435\u043c \u043a\u0440\u0443\u0442\u043e\u0439, \u0431\u044b\u0441\u0442\u0440\u044b\u0439 \u0438 \u0443\u0434\u043e\u0431\u043d\u044b\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0440\u0430\u0437\u0432\u0435\u0434\u043a\u0438 \u0432\u043c\u0435\u0441\u0442\u0435.<\/p>\n<p>\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043f\u0440\u043e\u0435\u043a\u0442: <a href=\"https:\/\/github.com\/joavat-2009\/Web-Recon\" rel=\"noopener nofollow\">https:\/\/github.com\/joavat-2009\/Web-Recon<\/a><\/p>\n<p>\u0412\u0441\u0435\u043c \u0447\u0438\u0441\u0442\u043e\u0433\u043e \u043a\u043e\u0434\u0430 \u0438 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0433\u043e \u043f\u0435\u0440\u0438\u043c\u0435\u0442\u0440\u0430! \u0411\u0443\u0434\u0443 \u0440\u0430\u0434 \u0432\u0430\u0448\u0435\u043c\u0443 \u0444\u0438\u0434\u0431\u0435\u043a\u0443 \u0438 \u043a\u0440\u0438\u0442\u0438\u043a\u0435 \u0432 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f\u0445.<\/p>\n<\/div>\n<p>\u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/articles\/1106352\/\">https:\/\/habr.com\/ru\/articles\/1106352\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440! \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u043d\u0430\u0437\u0430\u0434 \u044f \u0434\u0435\u043b\u0438\u043b\u0441\u044f \u0437\u0434\u0435\u0441\u044c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u043e\u0439 \u0441\u0432\u043e\u0435\u0439 \u0443\u0442\u0438\u043b\u0438\u0442\u044b Web-Recon \u2014 \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u043e\u0433\u043e \u043a\u043e\u043c\u0431\u0430\u0439\u043d\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430 \u0431\u0435\u0448\u0435\u043d\u043e\u0439 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438 \u043e\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442 \u0441\u043e\u0442\u043d\u0438 \u0434\u043e\u043c\u0435\u043d\u043e\u0432 \u0438, \u0435\u0441\u043b\u0438 \u043d\u0430\u0442\u044b\u043a\u0430\u0435\u0442\u0441\u044f \u043d\u0430 \u0441\u0435\u0442\u0435\u0432\u0443\u044e \u0430\u043d\u043e\u043c\u0430\u043b\u0438\u044e \u0438\u043b\u0438 \u0443\u043f\u0430\u0432\u0448\u0438\u0439 \u0445\u043e\u0441\u0442, \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0432\u044b\u0442\u044f\u0433\u0438\u0432\u0430\u0435\u0442 \u0433\u043b\u0443\u0431\u043e\u043a\u0438\u0439 WHOIS-\u043f\u0430\u0441\u043f\u043e\u0440\u0442, \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u044f \u0432\u0441\u0451 \u0432 SQLite.\u041f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0432\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u043e\u0436\u0438\u043b: \u043f\u043e\u0448\u043b\u0438 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440\u044b, \u0430 \u0433\u043b\u0430\u0432\u043d\u043e\u0435 \u2014 \u043b\u044e\u0434\u0438 \u043d\u0430\u0447\u0430\u043b\u0438 \u0434\u0435\u043b\u0430\u0442\u044c git clone \u0438 \u0443\u0442\u0430\u0441\u043a\u0438\u0432\u0430\u0442\u044c \u0441\u043a\u0440\u0438\u043f\u0442 \u0432 \u0441\u0432\u043e\u0438 Kali Linux. \u0422\u043e\u0433\u0434\u0430 \u043c\u043d\u0435 \u0432 \u0433\u043e\u043b\u043e\u0432\u0443 \u043f\u0440\u0438\u0448\u043b\u0430 \u0430\u043c\u0431\u0438\u0446\u0438\u043e\u0437\u043d\u0430\u044f \u043c\u044b\u0441\u043b\u044c: \u00ab\u0410 \u043f\u043e\u0447\u0435\u043c\u0443 \u0431\u044b \u043d\u0435 \u043f\u043e\u0434\u0430\u0442\u044c \u0437\u0430\u044f\u0432\u043a\u0443 \u043d\u0430 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 Web-Recon \u0432 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432 Kali Linux, \u0447\u0442\u043e\u0431\u044b \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0431\u044b\u043b\u043e \u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0447\u0435\u0440\u0435\u0437 \u043e\u0431\u044b\u0447\u043d\u044b\u0439 sudo apt install?\u00bb.\u042f \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043b\u0441\u044f \u0432 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u043c \u0431\u0430\u0433-\u0442\u0440\u0435\u043a\u0435\u0440\u0435 Offensive Security (\u043a\u043e\u043c\u0430\u043d\u0434\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0434\u0435\u043b\u0430\u0435\u0442 Kali) \u0438 \u0441\u043e\u0437\u0434\u0430\u043b \u0442\u0438\u043a\u0435\u0442 \u0432 \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0438 New Tool Request. \u041e\u0442\u0432\u0435\u0442 \u043e\u0442 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440\u0430 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0435\u0432 (daniruiz) \u043f\u0440\u0438\u043b\u0435\u0442\u0435\u043b \u0447\u0435\u0440\u0435\u0437 \u043f\u0430\u0440\u0443 \u043d\u0435\u0434\u0435\u043b\u044c \u0438 \u0437\u0430\u0441\u0442\u0430\u0432\u0438\u043b \u043c\u0435\u043d\u044f \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u043f\u0435\u0440\u0435\u043e\u0441\u043c\u044b\u0441\u043b\u0438\u0442\u044c \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443 \u043f\u0440\u043e\u0435\u043a\u0442\u0430:\u00ab\u041f\u0440\u0438\u0432\u0435\u0442! \u0421\u043f\u0430\u0441\u0438\u0431\u043e \u0437\u0430 \u0432\u0430\u0448\u0443 \u0437\u0430\u044f\u0432\u043a\u0443. \u041c\u044b \u0444\u0438\u0437\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0435 \u043c\u043e\u0436\u0435\u043c \u0443\u043f\u0430\u043a\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u043a\u0430\u0436\u0434\u044b\u0439 infosec-\u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0432 \u043c\u0438\u0440\u0435, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043c\u044b \u043e\u0442\u0434\u0430\u0435\u043c \u0441\u0442\u0440\u043e\u0433\u0438\u0439 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442 \u0442\u0435\u043c \u0443\u0442\u0438\u043b\u0438\u0442\u0430\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0438\u043c\u0435\u044e\u0442 \u0431\u043e\u043b\u0435\u0435 \u0448\u0438\u0440\u043e\u043a\u043e\u0435 \u043f\u0440\u0438\u0437\u043d\u0430\u043d\u0438\u0435 \u0438 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043e\u043c\u044c\u044e\u043d\u0438\u0442\u0438 (wider adoption and community usage). \u0423\u0434\u0430\u0447\u0438 \u0441 \u0432\u0430\u0448\u0438\u043c \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u043c!\u00bb\u0412 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0435 \u043d\u0430 \u0438\u043d\u0436\u0435\u043d\u0435\u0440\u043d\u044b\u0439 \u044d\u0442\u043e \u043e\u0437\u043d\u0430\u0447\u0430\u043b\u043e: \u00ab\u041f\u0430\u0440\u0435\u043d\u044c, \u0442\u0432\u043e\u0439 \u0441\u043e\u0444\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u043a\u0430\u043a \u043a\u0440\u0443\u0442\u043e\u0439 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u043a\u0440\u0438\u043f\u0442, \u043d\u043e Kali Linux \u2014 \u044d\u0442\u043e \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432 \u043f\u0440\u043e\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f. \u0421\u0434\u0435\u043b\u0430\u0439 \u0438\u0437 \u0441\u043a\u0440\u0438\u043f\u0442\u0430 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u044b\u0439 \u043f\u0430\u043a\u0435\u0442, \u0440\u0435\u0448\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u0441 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0430\u043c\u0438 \u0441\u0438\u0441\u0442\u0435\u043c \u0437\u0430\u0449\u0438\u0442\u044b, \u0432\u043d\u0435\u0434\u0440\u0438 \u0430\u0432\u0442\u043e\u0442\u0435\u0441\u0442\u044b, \u043f\u043e\u043a\u0430\u0436\u0438, \u0447\u0442\u043e \u043f\u0440\u043e\u0435\u043a\u0442 \u0436\u0438\u0432\u0435\u0442, \u0438 \u043c\u044b \u0432\u0435\u0440\u043d\u0435\u043c\u0441\u044f \u043a \u044d\u0442\u043e\u043c\u0443 \u0440\u0430\u0437\u0433\u043e\u0432\u043e\u0440\u0443\u00bb.\u0412\u044b\u0437\u043e\u0432 \u0431\u044b\u043b \u043f\u0440\u0438\u043d\u044f\u0442. \u0417\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0435 \u043d\u0435\u0434\u0435\u043b\u0438 Web-Recon \u044d\u0432\u043e\u043b\u044e\u0446\u0438\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u043b \u043e\u0442 \u0432\u0435\u0440\u0441\u0438\u0438 v0.5.0 \u0434\u043e \u0440\u0435\u043b\u0438\u0437\u0430-\u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442\u0430 v0.6.2. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443, \u043a\u0430\u043a \u0443\u043a\u0440\u043e\u0449\u0430\u043b \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u0443\u044e \u043c\u043e\u0449\u043d\u043e\u0441\u0442\u044c, \u0441\u0442\u0440\u043e\u0438\u043b \u0442\u0440\u0435\u0445\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u044b\u0439 \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440 \u043e\u0431\u0445\u043e\u0434\u0430 WAF \u0438 \u0440\u0430\u0437\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u043b CI\/CD \u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d\u044b \u0432 \u043e\u0431\u043b\u0430\u043a\u0435. \u041f\u043e\u0433\u043d\u0430\u043b\u0438 \u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442!\u0413\u043b\u0430\u0432\u0430 1: \u0423\u043a\u0440\u043e\u0449\u0435\u043d\u0438\u0435 \u0430\u0441\u0438\u043d\u043a\u043e\u0440\u043e\u0432\u043e\u0439 \u043c\u043e\u0449\u043d\u043e\u0441\u0442\u0438 (\u0421\u0435\u043c\u0430\u0444\u043e\u0440\u044b \u0438 \u0417\u0430\u0434\u0435\u0440\u0436\u043a\u0438)\u0412 \u0441\u0432\u043e\u0435\u0439 \u043f\u0435\u0440\u0432\u043e\u0439 \u0438\u0442\u0435\u0440\u0430\u0446\u0438\u0438 Web-Recon \u0440\u0430\u0431\u043e\u0442\u0430\u043b \u043d\u0430 \u0440\u0435\u0430\u043a\u0442\u0438\u0432\u043d\u043e\u043c \u044f\u0434\u0440\u0435 asyncio + aiohttp. \u041c\u043e\u0449\u043d\u043e\u0441\u0442\u044c \u0431\u044b\u043b\u0430 \u043a\u043e\u043b\u043e\u0441\u0441\u0430\u043b\u044c\u043d\u043e\u0439: \u0434\u0432\u0438\u0436\u043e\u043a \u0448\u0432\u044b\u0440\u044f\u043b \u0441\u043e\u0442\u043d\u0438 \u0441\u0435\u0442\u0435\u0432\u044b\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e. \u041d\u043e \u0432 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u043f\u0435\u043d\u0442\u0435\u0441\u0442\u0435 \u044d\u0442\u043e \u043f\u0440\u0438\u0432\u0435\u043b\u043e \u043a \u043a\u0430\u0442\u0430\u0441\u0442\u0440\u043e\u0444\u0435. \u041f\u0440\u0438 \u043f\u043e\u043f\u044b\u0442\u043a\u0435 \u043c\u0430\u0441\u0441\u043e\u0432\u043e \u043f\u0440\u043e\u043f\u0430\u043b\u044c\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043a\u0440\u0443\u043f\u043d\u044b\u0439 \u043a\u043e\u0440\u043f\u043e\u0440\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u043f\u0435\u0440\u0438\u043c\u0435\u0442\u0440, \u0443\u0442\u0438\u043b\u0438\u0442\u0430 \u0432\u044b\u0434\u0430\u0432\u0430\u043b\u0430 \u0442\u0430\u043a\u043e\u0439 \u043f\u043b\u043e\u0442\u043d\u044b\u0439 \u0448\u043a\u0432\u0430\u043b \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u043a\u043e\u043d\u043d\u0435\u043a\u0442\u043e\u0432, \u0447\u0442\u043e \u044d\u0442\u043e \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u043b\u043e\u0441\u044c \u0432 \u043d\u0435\u043f\u0440\u0435\u0434\u043d\u0430\u043c\u0435\u0440\u0435\u043d\u043d\u0443\u044e DoS-\u0430\u0442\u0430\u043a\u0443.\u041a\u0430\u043a\u043e\u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442? \u0421\u043b\u0430\u0431\u044b\u0435 \u0432\u0435\u0431-\u0440\u0435\u0441\u0443\u0440\u0441\u044b \u043f\u0430\u0434\u0430\u043b\u0438, \u0430 \u043f\u0440\u043e\u0434\u0432\u0438\u043d\u0443\u0442\u044b\u0435 Web Application Firewalls (WAF) \u0432\u0440\u043e\u0434\u0435 Cloudflare \u043c\u0433\u043d\u043e\u0432\u0435\u043d\u043d\u043e \u0442\u0440\u0438\u0433\u0433\u0435\u0440\u0438\u043b\u0438\u0441\u044c \u043d\u0430 \u0430\u043d\u043e\u043c\u0430\u043b\u044c\u043d\u0443\u044e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0438 \u043d\u0430\u043c\u0435\u0440\u0442\u0432\u043e \u0431\u0430\u043d\u0438\u043b\u0438 IP-\u0430\u0434\u0440\u0435\u0441 \u0441\u043a\u0430\u043d\u0435\u0440\u0430, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044f \u043f\u0430\u0447\u043a\u0438 \u043e\u0448\u0438\u0431\u043e\u043a 403 Forbidden.\u0427\u0442\u043e\u0431\u044b \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0448\u0442\u0443\u0440\u043c \u0441\u0435\u0442\u0438 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u0443\u0435\u043c\u044b\u043c \u0438 \u0432 \u0441\u0442\u0438\u043b\u0435 The Legendary Solid Snake, \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u0432\u043d\u0435\u0434\u0440\u0438\u0442\u044c \u0430\u043f\u043f\u0430\u0440\u0430\u0442\u043d\u044b\u0439 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c \u043a\u043e\u043d\u043a\u0443\u0440\u0435\u043d\u0442\u043d\u043e\u0441\u0442\u0438 \u2014 asyncio.Semaphore. \u0422\u0435\u043f\u0435\u0440\u044c, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0431\u044b \u0442\u044b\u0441\u044f\u0447 \u0434\u043e\u043c\u0435\u043d\u043e\u0432 \u043d\u0438 \u043b\u0435\u0436\u0430\u043b\u043e \u0432 \u0444\u0430\u0439\u043b\u0435 \u0446\u0435\u043b\u0435\u0439, \u0441\u0435\u043c\u0430\u0444\u043e\u0440 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043a\u0430\u043a \u0436\u0435\u0441\u0442\u043a\u0438\u0439 \u0442\u0443\u0440\u043d\u0438\u043a\u0435\u0442: \u0432 \u0441\u0435\u0442\u0438 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0432\u0438\u0441\u0438\u0442 \u0441\u0442\u0440\u043e\u0433\u043e \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0435 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u043e\u043c \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 (\u0444\u043b\u0430\u0433 -c, \u043f\u043e \u0434\u0435\u0444\u043e\u043b\u0442\u0443 50).\u041d\u043e \u043e\u0434\u043d\u043e\u0433\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u044f \u043f\u043e\u0442\u043e\u043a\u043e\u0432 \u043c\u0430\u043b\u043e \u2014 WAF \u0443\u043c\u0435\u044e\u0442 \u0432\u044b\u0447\u0438\u0441\u043b\u044f\u0442\u044c \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u0443\u044e \u043f\u0430\u043a\u0435\u0442\u043d\u0443\u044e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c. \u0414\u043b\u044f \u043e\u0431\u0445\u043e\u0434\u0430 \u044d\u0442\u043e\u0433\u043e \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u0430 \u044f \u0434\u043e\u0431\u0430\u0432\u0438\u043b \u043d\u0435\u0431\u043b\u043e\u043a\u0438\u0440\u0443\u044e\u0449\u0438\u0435 \u0437\u0430\u0434\u0435\u0440\u0436\u043a\u0438 \u043d\u0430 \u0431\u0430\u0437\u0435 asyncio.sleep() (\u0444\u043b\u0430\u0433 -d). \u0412 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0433\u043e time.sleep(), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430\u0433\u043b\u0443\u0445\u043e \u0437\u0430\u043c\u043e\u0440\u0430\u0436\u0438\u0432\u0430\u0435\u0442 \u0432\u0435\u0441\u044c \u043f\u043e\u0442\u043e\u043a \u041e\u0421 \u0438 \u0432\u0435\u0448\u0430\u0435\u0442 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b, \u0430\u0441\u0438\u043d\u0445\u0440\u043e\u043d\u043d\u0430\u044f \u043f\u0430\u0443\u0437\u0430 \u043c\u044f\u0433\u043a\u043e \u0443\u0441\u044b\u043f\u043b\u044f\u0435\u0442 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u0443\u044e \u0437\u0430\u0434\u0430\u0447\u0443, \u043e\u0442\u0434\u0430\u0432\u0430\u044f \u043a\u0432\u0430\u043d\u0442 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 Event Loop\u2019\u0443. \u0412 \u0438\u0442\u043e\u0433\u0435 \u043f\u0440\u043e\u0433\u0440\u0435\u0441\u0441-\u0431\u0430\u0440 \u043e\u0442 Rich \u043f\u043b\u0430\u0432\u043d\u043e \u043a\u0440\u0443\u0442\u0438\u0442\u0441\u044f, \u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u0443\u043b\u0435\u0442\u0430\u044e\u0442 \u0441 \u0430\u043a\u043a\u0443\u0440\u0430\u0442\u043d\u044b\u043c\u0438, \u0440\u0432\u0430\u043d\u044b\u043c\u0438 \u043f\u0430\u0443\u0437\u0430\u043c\u0438, \u0438\u043c\u0438\u0442\u0438\u0440\u0443\u044f \u0435\u0441\u0442\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0442\u0440\u0430\u0444\u0438\u043a:parser.add_argument(&#171;-d&#187;, &#171;&#8212;delay&#187;, type=float, help=&#187;Delay in seconds between checks (default: 0.5)&#187;, default=0.5)\u0413\u043b\u0430\u0432\u0430 2: \u0412\u0435\u043b\u0438\u043a\u0430\u044f \u043c\u0430\u0441\u043a\u0438\u0440\u043e\u0432\u043a\u0430 (\u041a\u0430\u0441\u043a\u0430\u0434\u043d\u0430\u044f \u0440\u043e\u0442\u0430\u0446\u0438\u044f User-Agent)\u0412\u0442\u043e\u0440\u0430\u044f \u043c\u0438\u043d\u0430, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043d\u0430\u0442\u044b\u043a\u0430\u043b\u0441\u044f \u0441\u043a\u0430\u043d\u0435\u0440 \u2014 \u044d\u0442\u043e \u0441\u0442\u0430\u0442\u0438\u0447\u043d\u044b\u0435 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438 HTTP-\u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432. \u0418\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0432 \u043a\u043e\u0434\u0435 \u0431\u044b\u043b \u0437\u0430\u0448\u0438\u0442 \u043e\u0434\u0438\u043d \u0444\u0438\u043a\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0441\u043b\u043e\u0432\u0430\u0440\u044c headers, \u043a\u043e\u0441\u044f\u0449\u0438\u0439 \u043f\u043e\u0434 Chrome 120 \u043d\u0430 Windows. \u041d\u043e \u043a\u043e\u0433\u0434\u0430 \u0437\u0430\u0449\u0438\u0442\u043d\u044b\u0439 \u044d\u043a\u0440\u0430\u043d \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0432\u0438\u0434\u0438\u0442, \u0447\u0442\u043e \u0437\u0430 \u043e\u0434\u043d\u0443 \u0441\u0435\u043a\u0443\u043d\u0434\u0443 \u043a \u043d\u0435\u043c\u0443 \u043f\u0440\u0438\u043b\u0435\u0442\u0430\u0435\u0442 100 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u043f\u043e \u0440\u0430\u0437\u043d\u044b\u043c \u043f\u0443\u0442\u044f\u043c, \u0438 \u0443 \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0432\u043d\u0443\u0442\u0440\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u0430\u0441\u043f\u043e\u0440\u0442\u0430 (User-Agent) \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0430 \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e \u0438\u0434\u0435\u043d\u0442\u0438\u0447\u043d\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430 \u0434\u043e \u0435\u0434\u0438\u043d\u043e\u0433\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u0430, \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0437\u0430\u0449\u0438\u0442\u044b \u043c\u0433\u043d\u043e\u0432\u0435\u043d\u043d\u043e \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0443.\u0412 \u0440\u0435\u043b\u0438\u0437\u0435 v0.6.2 \u044f \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0432\u044b\u043f\u0438\u043b\u0438\u043b \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u0442\u0430\u0442\u0438\u0447\u043d\u044b\u0435 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438 \u0438 \u0441\u043f\u0440\u043e\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043b \u0442\u0440\u0435\u0445\u0443\u0440\u043e\u0432\u043d\u0435\u0432\u044b\u0439 \u043a\u043e\u043d\u0432\u0435\u0439\u0435\u0440 \u043c\u0430\u0441\u043a\u0438\u0440\u043e\u0432\u043a\u0438 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u043d\u044b\u0445 \u043e\u0442\u043f\u0435\u0447\u0430\u0442\u043a\u043e\u0432, \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0449\u0438\u0439 \u043f\u043e \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0443 \u043a\u0430\u0441\u043a\u0430\u0434\u043d\u043e\u0433\u043e \u0444\u043e\u043b\u0431\u044d\u043a\u0430:Tier 1 (\u041a\u0430\u0441\u0442\u043e\u043c\u043d\u044b\u0439 \u0444\u0430\u0439\u043b): \u041f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u0435\u043d\u0442\u0435\u0441\u0442\u0435\u0440 \u043c\u043e\u0436\u0435\u0442 \u0441\u043a\u043e\u0440\u043c\u0438\u0442\u044c \u0443\u0442\u0438\u043b\u0438\u0442\u0435 \u0441\u0432\u043e\u0439 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439, \u0437\u0430\u0440\u0430\u043d\u0435\u0435 \u00ab\u043f\u0440\u043e\u0433\u0440\u0435\u0442\u044b\u0439\u00bb \u0441\u043f\u0438\u0441\u043e\u043a \u043e\u0442\u043f\u0435\u0447\u0430\u0442\u043a\u043e\u0432 \u0447\u0435\u0440\u0435\u0437 \u0444\u043b\u0430\u0433 -A \/ &#8212;UserAgents. \u0421\u043a\u0440\u0438\u043f\u0442 \u0438\u0437\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0435\u0442 \u0435\u0433\u043e \u0438 \u0437\u0430\u0431\u044c\u0435\u0442 \u0432 \u043f\u0430\u043c\u044f\u0442\u044c:    if args.UserAgents:        if os.path.exists(args.UserAgents):            if not args.quiet:                console.print(f&#187;[bold green]\u25ba Loading custom User-Agents from file: {args.UserAgents}[\/bold green]&#187;)            with open(args.UserAgents, &#8216;r&#8217;, encoding=&#8217;utf-8&#8242;) as file:                for line in file:                    if line.strip():                        loaded_agents.append(line.strip())        else:            console.print(f&#187;[bold red]\u2716 Error: User-Agents file &#8216;{args.UserAgents}&#8217; does not exist.[\/bold red]&#187;)            sys.exit(1)Tier 2 (\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 Live-\u0430\u043f\u0434\u0435\u0439\u0442): \u0415\u0441\u043b\u0438 \u0444\u043b\u0430\u0433 \u043f\u0443\u0441\u0442\u043e\u0439, Web-Recon \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0448\u0438\u0435 \u0441\u043f\u0438\u0441\u043a\u0438. \u041e\u043d \u0434\u0435\u043b\u0430\u0435\u0442 \u0431\u044b\u0441\u0442\u0440\u044b\u0439 \u0444\u043e\u043d\u043e\u0432\u044b\u0439 \u0437\u0430\u043f\u0440\u043e\u0441 \u043a \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u043c\u043e\u043c\u0443 RAW-\u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044e \u043d\u0430 GitHub (\u0432\u043c\u0435\u0441\u0442\u043e \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0441\u0442\u043e\u0438\u0442 \u0437\u0430\u0433\u043b\u0443\u0448\u043a\u0430), \u0432\u044b\u0442\u044f\u0433\u0438\u0432\u0430\u044f \u043e\u0442\u0442\u0443\u0434\u0430 \u0441\u0430\u043c\u044b\u0435 \u0441\u0432\u0435\u0436\u0438\u0435, \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u043d\u0430 \u0441\u0435\u0433\u043e\u0434\u043d\u044f\u0448\u043d\u0435\u0435 \u0443\u0442\u0440\u043e \u0441\u0442\u0440\u043e\u043a\u0438 Desktop-\u0431\u0440\u0430\u0443\u0437\u0435\u0440\u043e\u0432. \u041d\u0438\u043a\u0430\u043a\u0438\u0445 \u0442\u044f\u0436\u0435\u043b\u044b\u0445 \u0438 \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u044b\u0445 HTML-\u043f\u0430\u0440\u0441\u0435\u0440\u043e\u0432 (\u0432\u0440\u043e\u0434\u0435 BeautifulSoup) \u2014 \u0447\u0438\u0441\u0442\u044b\u0439 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439 \u0441\u0442\u0440\u0438\u043c-\u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441:    else:        if not args.quiet:            console.print(&#171;[bold cyan]\u25ba Fetching fresh User-Agents from online database&#8230;[\/bold cyan]&#187;)        raw_site_url = &#171;https:\/\/githubusercontent.com&#187;        try:            r_response = requests.get(raw_site_url, timeout=4, headers=headers)            if r_response.status_code == 200:                for line in r_response.text.splitlines():                    if line.strip().startswith(&#171;Mozilla\/5.0&#187;):                        loaded_agents.append(line.strip())        except:            passTier 3 (\u0412\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u0449\u0438\u0442): \u0415\u0441\u043b\u0438 \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442 \u0432 \u0438\u0437\u043e\u043b\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u0439 \u043e\u0444\u0444\u043b\u0430\u0439\u043d-\u043b\u0430\u0431\u043e\u0440\u0430\u0442\u043e\u0440\u0438\u0438 (\u0432\u043e\u0437\u0434\u0443\u0448\u043d\u044b\u0439 \u0437\u0430\u0437\u043e\u0440) \u0438 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442\u0430 \u043d\u0430 \u043c\u0430\u0448\u0438\u043d\u0435 \u043d\u0435\u0442, \u0431\u043b\u043e\u043a try\/except \u043c\u044f\u0433\u043a\u043e \u043f\u0435\u0440\u0435\u0445\u0432\u0430\u0442\u044b\u0432\u0430\u0435\u0442 \u0441\u0431\u043e\u0439 \u0441\u0435\u0442\u0438 \u0438 \u0440\u0430\u0437\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0435\u0442 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u0443\u044e \u0432 \u043a\u043e\u0434 \u0437\u0430\u043f\u0430\u0441\u043a\u0443 \u0438\u0437 \u044d\u0442\u0430\u043b\u043e\u043d\u043d\u044b\u0445 \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u044b\u0445 \u0441\u0442\u0440\u043e\u043a Chrome, Firefox, Edge \u0438 Safari:        if not loaded_agents:            if not args.quiet:                console.print(&#171;[bold yellow]\u26a0\ufe0f Internet offline. Activating built-in hardcoded User-Agent fallback shield.[\/bold yellow]&#187;)            loaded_agents = [                &#171;Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/120.0.0.0 Safari\/537.36&#187;,                &#171;Mozilla\/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit\/605.1.15 (KHTML, like Gecko) Version\/17.0 Safari\/605.1.15&#187;,                &#171;Mozilla\/5.0 (X11; Linux x86_64; rv:109.0) Gecko\/20100101 Firefox\/119.0&#187;,                &#171;Mozilla\/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/120.0.0.0 Safari\/537.36 Edg\/120.0.0.0&#187;            ]\u041a\u0430\u043a \u044d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432 \u0441\u0435\u0442\u0435\u0432\u043e\u043c \u0446\u0438\u043a\u043b\u0435: \u041a\u043e\u0433\u0434\u0430 \u0430\u0441\u0438\u043d\u043a\u043e\u0440\u043e\u0432\u044b\u0439 \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u0437\u0430\u0434\u0430\u0447 futures \u043f\u0430\u043a\u0443\u0435\u0442 \u0432\u0435\u0435\u0440 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432, \u0443\u0442\u0438\u043b\u0438\u0442\u0430 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043c\u043e\u0434\u0443\u043b\u044f random.choice() \u0432\u044b\u0434\u0435\u0440\u0433\u0438\u0432\u0430\u0435\u0442 \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u0441\u0441\u044b\u043b\u043a\u0438 \u0441\u043b\u0443\u0447\u0430\u0439\u043d\u044b\u0439 User-Agent. \u0412\u043d\u0443\u0442\u0440\u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 check_single_link_async \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438 \u043a\u043e\u043c\u043f\u0438\u043b\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e \u043f\u0440\u044f\u043c\u043e \u043f\u0435\u0440\u0435\u0434 \u0432\u044b\u0437\u043e\u0432\u043e\u043c session.get().\u0414\u043b\u044f \u0446\u0435\u043b\u0435\u0432\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u044d\u0442\u043e \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a, \u0431\u0443\u0434\u0442\u043e \u043d\u0430 \u0441\u0430\u0439\u0442 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0437\u0430\u0448\u043b\u0430 \u0442\u043e\u043b\u043f\u0430 \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e \u0440\u0430\u0437\u043d\u044b\u0445 \u043b\u044e\u0434\u0435\u0439 \u0441 \u0440\u0430\u0437\u043d\u044b\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 \u0438 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c.\u0413\u043b\u0430\u0432\u0430 3: \u0418\u043d\u0436\u0435\u043d\u0435\u0440\u0438\u044f \u043f\u043e \u0433\u0430\u0439\u0434\u0430\u043c Debian Policy\u0427\u0442\u043e\u0431\u044b \u043f\u0440\u0435\u0432\u0440\u0430\u0442\u0438\u0442\u044c \u043b\u044e\u0431\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u0441\u043a\u0440\u0438\u043f\u0442 \u0432\u043e \u0432\u0437\u0440\u043e\u0441\u043b\u044b\u0439 open-source \u043f\u0440\u043e\u0434\u0443\u043a\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0435 \u0441\u0442\u044b\u0434\u043d\u043e \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043c\u0430\u0439\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430\u043c \u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432\u043e\u0432, \u043a\u043e\u0434\u043e\u0432\u0443\u044e \u0431\u0430\u0437\u0443 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043f\u0435\u0440\u0435\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0441 \u043d\u0443\u043b\u044f:\u041f\u0435\u0440\u0435\u0445\u043e\u0434 \u043d\u0430 src-layout: \u0424\u0430\u0439\u043b recon.py \u043f\u0435\u0440\u0435\u0435\u0445\u0430\u043b \u0432\u0433\u043b\u0443\u0431\u044c \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b src\/web_recon\/. \u041a\u043e\u0440\u0435\u043d\u044c \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f \u043e\u0447\u0438\u0449\u0435\u043d \u043e\u0442 \u043c\u0443\u0441\u043e\u0440\u0430.\u041c\u0430\u043d\u0438\u0444\u0435\u0441\u0442 pyproject.toml: \u041f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e deprecated \u0441\u0442\u0430\u0440\u044b\u0435 \u043a\u043e\u0441\u0442\u044b\u043b\u0438 setup.py. \u0412\u0435\u0441\u044c \u043f\u0440\u043e\u0435\u043a\u0442 \u0442\u0435\u043f\u0435\u0440\u044c \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 \u0441\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0439 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442 PEP 517\/621. \u0412\u043d\u0443\u0442\u0440\u0438 \u043c\u0430\u043d\u0438\u0444\u0435\u0441\u0442\u0430 \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u043d \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u043c\u0435\u043d\u0435\u0434\u0436\u043c\u0435\u043d\u0442 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439 (rich, aiohttp, aiosqlite, python-whois) \u0438 \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u0430\u044f \u0442\u043e\u0447\u043a\u0430 \u0432\u044b\u0437\u043e\u0432\u0430 ([project.scripts]).\u0420\u043e\u0436\u0434\u0435\u043d\u0438\u0435 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u044b: \u0411\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u044d\u0442\u043e\u0439 \u0443\u043f\u0430\u043a\u043e\u0432\u043a\u0435, \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u0431\u043e\u043b\u044c\u0448\u0435 \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0441\u0438\u0434\u0435\u0442\u044c \u0432 \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e\u0439 \u043f\u0430\u043f\u043a\u0435 \u0438 \u043f\u0438\u0441\u0430\u0442\u044c python recon.py. \u041f\u043e\u0441\u043b\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0441\u043e\u0444\u0442 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u0443\u0435\u0442 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u044b\u0439 \u0430\u043b\u0438\u0430\u0441. \u041f\u0438\u0448\u0435\u043c \u0432 \u043b\u044e\u0431\u043e\u0439 \u0442\u043e\u0447\u043a\u0435 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430 Kali \u0432\u0441\u0435\u0433\u043e \u043e\u0434\u043d\u043e \u0441\u043b\u043e\u0432\u043e \u2014 web-recon, \u0438 \u0443\u0442\u0438\u043b\u0438\u0442\u0430 \u0432\u0437\u043b\u0435\u0442\u0430\u0435\u0442!\u041e\u0431\u043b\u0430\u0447\u043d\u044b\u0439 CI\/CD \u043f\u0430\u0439\u043f\u043b\u0430\u0439\u043d: \u0412 \u043f\u0430\u043f\u043a\u0443 tests\/ \u044f \u0437\u0430\u043b\u043e\u0436\u0438\u043b \u0430\u0432\u0442\u043e\u0442\u0435\u0441\u0442\u044b \u043d\u0430 \u0431\u0430\u0437\u0435 \u0444\u0440\u0435\u0439\u043c\u0432\u043e\u0440\u043a\u0430 pytest-asyncio (\u041f\u0440\u043e\u0448\u0443 \u043f\u0440\u043e\u0449\u0435\u043d\u0438\u044f, \u043d\u043e \u0444\u0430\u0439\u043b recon_test \u044f \u043e\u0442\u0447\u0430\u0441\u0442\u0438 \u043d\u0430\u0432\u0430\u0439\u0431\u043a\u043e\u0434\u0438\u043b). \u041e\u043d\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044e\u0442 \u0430\u0442\u043e\u043c\u0430\u0440\u043d\u043e\u0441\u0442\u044c \u0442\u0440\u0430\u043d\u0437\u0430\u043a\u0446\u0438\u0439 \u0421\u0423\u0411\u0414 SQLite, \u044d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0442\u0430\u0431\u043b\u0438\u0446 [] \u043e\u0442 SQL-\u0438\u043d\u044a\u0435\u043a\u0446\u0438\u0439 \u0438 \u043a\u043e\u043b\u043b\u0438\u0437\u0438\u0438 \u0444\u043b\u0430\u0433\u043e\u0432 \u043a\u043e\u043c\u0430\u043d\u0434\u043d\u043e\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u0432 argparse. \u0412 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u0438\u043d\u0442\u0435\u0433\u0440\u0438\u0440\u043e\u0432\u0430\u043d GitHub Actions (.github\/workflows\/tests.yml). \u0422\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u0438 \u043a\u0430\u0436\u0434\u043e\u043c git push \u0441\u0435\u0440\u0432\u0435\u0440\u044b GitHub \u0441\u0430\u043c\u0438 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u043e \u0440\u0430\u0437\u0432\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u044e\u0442 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u043a\u0443 \u0441 Linux, \u043d\u0430\u043a\u0430\u0442\u044b\u0432\u0430\u044e\u0442 Python 3.12 \u0438 3.13, \u0441\u0442\u0430\u0432\u044f\u0442 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u0435 \u0438 \u0433\u043e\u043d\u044f\u044e\u0442 \u0442\u0435\u0441\u0442\u044b, \u0432\u044b\u0432\u0435\u0448\u0438\u0432\u0430\u044f \u0437\u0435\u043b\u0451\u043d\u044b\u0439 \u043c\u0430\u0440\u043a\u0435\u0440 \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u0438 PASSED.\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435. \u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u0432 \u043e\u0434\u0438\u043d \u043a\u043b\u0438\u043a \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0438\u0437 \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u043e\u0432\u0414\u0430, \u043a\u0443\u0440\u0430\u0442\u043e\u0440\u044b Kali Linux \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u043e\u0442\u043b\u043e\u0436\u0438\u043b\u0438 \u0443\u043f\u0430\u043a\u043e\u0432\u043a\u0443 \u0438\u0437-\u0437\u0430 \u043d\u0435\u0445\u0432\u0430\u0442\u043a\u0438 \u00ab\u043c\u0435\u0434\u0438\u0439\u043d\u043e\u0433\u043e \u0432\u0435\u0441\u0430\u00bb. \u041d\u043e \u044d\u0442\u043e \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0431\u043e\u0447\u0438\u0439 \u044d\u0442\u0430\u043f. \u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u0442\u043e\u043f\u043e\u0432\u044b\u0445 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u0418\u0411 \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0442 \u0441\u0432\u043e\u0439 \u043f\u0443\u0442\u044c \u043a\u0430\u043a \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0435 open-source \u043f\u0440\u043e\u0435\u043a\u0442\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u044f\u044e\u0442\u0441\u044f \u043d\u0430\u043f\u0440\u044f\u043c\u0443\u044e \u0447\u0435\u0440\u0435\u0437 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0438.\u041f\u0440\u043e\u0435\u043a\u0442 \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u0441\u0442\u0430\u0431\u0438\u043b\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d, \u043f\u0435\u0440\u0435\u0432\u0435\u0434\u0451\u043d \u043d\u0430 src-layout \u0438 \u0433\u043e\u0442\u043e\u0432 \u043a \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0431\u043e\u0440\u043a\u0435. \u0412\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c Web-Recon \u0432 \u0441\u0432\u043e\u0435\u0439 Kali Linux \u043a\u0430\u043a \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u0443\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u043f\u0440\u044f\u043c\u043e \u0441\u0435\u0439\u0447\u0430\u0441.\u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0441\u043a\u043b\u043e\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439 \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0435\u0433\u043e \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0431\u0438\u043b\u0434:# \u041a\u043b\u043e\u043d\u0438\u0440\u0443\u0435\u043c \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u0439git clone https:\/\/github.com\/joavat-2009\/Web-Reconcd Web-Recon# \u0421\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u0438 \u043f\u0440\u0438\u043d\u0443\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043d\u0430\u043a\u0430\u0442\u044b\u0432\u0430\u0435\u043c \u043f\u0430\u043a\u0435\u0442 \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0443sudo apt install python3-build -ypython3 -m buildsudo pip install dist\/*.whl &#8212;break-system-packages\u041d\u043e, \u043c\u043e\u0436\u043d\u043e \u0438 \u0437\u0430\u0431\u044b\u0442\u044c \u043e \u0441\u0431\u043e\u0440\u043a\u0435 \u0444\u0430\u0439\u043b\u043e\u0432 \u0438\u0437 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f, \u0432\u0435\u0434\u044c \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 \u0432\u0435\u0440\u0441\u0438\u0438 v0.6.0 \u0432 \u0432\u0435\u0442\u043a\u0435 Releases \u043b\u0435\u0436\u0430\u0442 \u0443\u0436\u0435 \u0441\u043e\u0431\u0440\u0430\u043d\u043d\u044b\u0435 .whl \u0444\u0430\u0439\u043b\u044b \u0438 \u0442\u0430\u043a \u0431\u0443\u0434\u0435\u0442 \u0432 \u043a\u0430\u0436\u0434\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438.\u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u043c\u0435\u043d\u0435\u0434\u0436\u0435\u0440 \u043f\u0430\u043a\u0435\u0442\u043e\u0432 \u0441\u0430\u043c \u0440\u0430\u0441\u043a\u0438\u0434\u0430\u0435\u0442 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438, \u043f\u0440\u043e\u043f\u0438\u0448\u0435\u0442 \u0442\u043e\u0447\u043a\u0443 \u0432\u044b\u0437\u043e\u0432\u0430, \u0438 \u0432\u044b \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0442\u044c \u0443\u0442\u0438\u043b\u0438\u0442\u0443 \u0438\u0437 \u043b\u044e\u0431\u043e\u0439 \u043f\u0430\u043f\u043a\u0438 \u0442\u0435\u0440\u043c\u0438\u043d\u0430\u043b\u0430 \u043f\u043e \u043a\u043e\u0440\u043e\u0442\u043a\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u0435: web-recon &#8212;help.\u041d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u043f\u0440\u0438\u0437\u044b\u0432 \u043f\u043e\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0432\u043c\u0435\u0441\u0442\u0435 &#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-502642","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/502642","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=502642"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/502642\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=502642"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=502642"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=502642"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}