{"id":484599,"date":"2026-06-22T15:10:25","date_gmt":"2026-06-22T15:10:25","guid":{"rendered":"https:\/\/savepearlharbor.com\/?p=484599"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=484599","title":{"rendered":"\u041a\u0430\u043a \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u0447\u0443\u0436\u043e\u0439 \u0441\u0430\u0439\u0442 \u043d\u0430 152-\u0424\u0417 \u0437\u0430 30 \u0441\u0435\u043a\u0443\u043d\u0434: \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430 \u0441\u043a\u0430\u043d\u0435\u0440\u0430"},"content":{"rendered":"<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<figure class=\"full-width \"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/5a9\/b8c\/e3b\/5a9b8ce3be8ae3847a5835bfeda18d56.png\" width=\"1024\" height=\"576\" sizes=\"auto, (max-width: 780px) 100vw, 50vw\" srcset=\"https:\/\/habrastorage.org\/r\/w780\/getpro\/habr\/upload_files\/5a9\/b8c\/e3b\/5a9b8ce3be8ae3847a5835bfeda18d56.png 780w,&#10;       https:\/\/habrastorage.org\/r\/w1560\/getpro\/habr\/upload_files\/5a9\/b8c\/e3b\/5a9b8ce3be8ae3847a5835bfeda18d56.png 781w\" loading=\"lazy\" decode=\"async\"\/><\/figure>\n<p>\u0412 2025 \u0433\u043e\u0434\u0443 \u0448\u0442\u0440\u0430\u0444\u044b \u043f\u043e 152-\u0424\u0417 \u0432\u044b\u0440\u043e\u0441\u043b\u0438 \u0441 60 \u0442\u044b\u0441. \u0434\u043e <strong>18 \u043c\u043b\u043d \u20bd<\/strong> (\u0447. 8 \u0441\u0442. 13.11 \u041a\u043e\u0410\u041f \u2014 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u0430\u044f \u0443\u0442\u0435\u0447\u043a\u0430 \u041f\u0414\u043d \u043e\u0431\u044a\u0451\u043c\u043e\u043c 10+ \u043c\u043b\u043d \u0437\u0430\u043f\u0438\u0441\u0435\u0439). \u041f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e \u0420\u041a\u041d \u043f\u0435\u0440\u0435\u0448\u0451\u043b \u043d\u0430 \u043c\u0430\u0441\u0441\u043e\u0432\u044b\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0441\u0430\u0439\u0442\u043e\u0432: \u0437\u0430 2024 \u0433\u043e\u0434 \u2014 1 870 \u043f\u0440\u043e\u0432\u0435\u0440\u043e\u043a \u0438 1,2 \u043c\u043b\u0440\u0434 \u20bd \u0448\u0442\u0440\u0430\u0444\u043e\u0432. \u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u043d\u0430\u0440\u0443\u0448\u0435\u043d\u0438\u0439 \u2014 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0435: \u043d\u0435\u0442 HTTPS, \u043d\u0435\u0442 cookie-\u0431\u0430\u043d\u043d\u0435\u0440\u0430, \u0444\u043e\u0440\u043c\u0430 \u0431\u0435\u0437 \u0447\u0435\u043a\u0431\u043e\u043a\u0441\u0430 \u0441\u043e\u0433\u043b\u0430\u0441\u0438\u044f, \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0430 \u0432 Google Docs.<\/p>\n<p>\u042e\u0440\u0438\u0441\u0442\u044b \u0443\u043c\u0435\u044e\u0442 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c \u0442\u0430\u043a\u0438\u0435 \u043d\u0430\u0440\u0443\u0448\u0435\u043d\u0438\u044f \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0437\u0430 \u0447\u0430\u0441. \u041c\u044b \u043d\u0430\u043f\u0438\u0441\u0430\u043b\u0438 \u0441\u043a\u0430\u043d\u0435\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u0435\u043b\u0430\u0435\u0442 \u0442\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435 \u0437\u0430 30 \u0441\u0435\u043a\u0443\u043d\u0434. \u0412 \u0441\u0442\u0430\u0442\u044c\u0435 \u2014 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430, scoring-\u043f\u043e\u0434\u0445\u043e\u0434 \u043a \u0447\u0435\u043a\u0431\u043e\u043a\u0441\u0430\u043c \u0441\u043e\u0433\u043b\u0430\u0441\u0438\u044f, \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0435 \u0433\u0440\u0430\u0431\u043b\u0438 (\u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0430 \u0432 Google Docs, \u0441\u043a\u0440\u044b\u0442\u044b\u0435 checkbox \u0432 Tilda, \u043c\u043d\u043e\u0433\u043e\u0448\u0430\u0433\u043e\u0432\u044b\u0435 \u0444\u043e\u0440\u043c\u044b \u0437\u0430\u043f\u0438\u0441\u0438 \u0432 \u043a\u043b\u0438\u043d\u0438\u043a\u0430\u0445). \u041a\u043e\u0434 \u043d\u0430 PHP 8, \u0431\u0435\u0437 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439, ~1 800 \u0441\u0442\u0440\u043e\u043a.<\/p>\n<h3>\u0427\u0442\u043e \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0443\u0436\u043d\u043e \u043e\u0442 \u0441\u043a\u0430\u043d\u0435\u0440\u0430 152-\u0424\u0417<\/h3>\n<p>\u0417\u0430\u043a\u043e\u043d 152-\u0424\u0417 \u0437\u0430\u0434\u0430\u0451\u0442 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0443 \u041f\u0414\u043d (\u043b\u044e\u0431\u043e\u043c\u0443, \u043a\u0442\u043e \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442 \u0438\u043c\u044f\/email\/\u0442\u0435\u043b\u0435\u0444\u043e\u043d \u0447\u0435\u0440\u0435\u0437 \u0444\u043e\u0440\u043c\u0443 \u043d\u0430 \u0441\u0430\u0439\u0442\u0435) 9 \u043e\u0431\u044f\u0437\u0430\u043d\u043d\u043e\u0441\u0442\u0435\u0439. \u0422\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438 \u0441 \u0443\u043b\u0438\u0446\u044b \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c 8 \u0438\u0437 \u043d\u0438\u0445:<\/p>\n<ol>\n<li>\n<p><strong>HTTPS<\/strong> (\u0441\u0442. 19) \u2014 \u0431\u0435\u0437 TLS \u043d\u0435\u043b\u044c\u0437\u044f.<\/p>\n<\/li>\n<li>\n<p><strong>\u041f\u043e\u043b\u0438\u0442\u0438\u043a\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u041f\u0414\u043d<\/strong> \u043d\u0430 \u0441\u0430\u0439\u0442\u0435 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 (\u0441\u0442. 18.1) \u2014 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u0430\u044f, \u0441 7 \u0440\u0430\u0437\u0434\u0435\u043b\u0430\u043c\u0438.<\/p>\n<\/li>\n<li>\n<p><strong>\u0421\u043e\u0433\u043b\u0430\u0441\u0438\u0435<\/strong> \u043d\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u041f\u0414\u043d \u0432 \u043a\u0430\u0436\u0434\u043e\u0439 \u0444\u043e\u0440\u043c\u0435 (\u0441\u0442. 6 + 9) \u2014 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439, \u043e\u0441\u043e\u0437\u043d\u0430\u043d\u043d\u044b\u0439, \u043d\u0435 \u043f\u0440\u0435\u0434\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0439 checkbox.<\/p>\n<\/li>\n<li>\n<p><strong>\u0418\u043d\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043e\u0431 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 cookie<\/strong> (\u0441\u0442. 16 \u0417\u0430\u043a\u043e\u043d\u0430 \u043e \u0441\u0432\u044f\u0437\u0438 + 152-\u0424\u0417 + \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0430 \u0420\u041a\u041d) \u2014 \u0431\u0430\u043d\u043d\u0435\u0440 \u0441 \u0434\u0432\u0443\u043c\u044f \u043a\u043d\u043e\u043f\u043a\u0430\u043c\u0438.<\/p>\n<\/li>\n<li>\n<p><strong>\u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u0432 \u0440\u0435\u0435\u0441\u0442\u0440\u0435 \u0420\u041a\u041d<\/strong> (\u0441\u0442. 22) \u2014 \u0435\u0441\u043b\u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043d\u0435 \u043f\u043e\u0434\u043f\u0430\u0434\u0430\u0435\u0442 \u043f\u043e\u0434 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0447. 2.<\/p>\n<\/li>\n<li>\n<p><strong>\u041b\u043e\u043a\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0411\u0414<\/strong> (\u0447. 5 \u0441\u0442. 18) \u2014 \u0411\u0414 \u041f\u0414\u043d \u0440\u043e\u0441\u0441\u0438\u044f\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0420\u0424.<\/p>\n<\/li>\n<li>\n<p><strong>\u041f\u043e\u0440\u0443\u0447\u0435\u043d\u0438\u0435 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438<\/strong> (\u0441\u0442. 6 \u0447. 3) \u2014 \u0435\u0441\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432\u043d\u0435\u0448\u043d\u0438\u0439 \u0441\u0435\u0440\u0432\u0438\u0441 (Tilda Forms, JivoSite, Bitrix24) \u2014 \u043d\u0443\u0436\u0435\u043d \u0434\u043e\u0433\u043e\u0432\u043e\u0440.<\/p>\n<\/li>\n<li>\n<p><strong>\u0423\u0447\u0451\u0442 \u041f\u0414\u043d \u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a\u043e\u0432<\/strong> (\u0441\u0442. 10.1) \u2014 \u0435\u0441\u043b\u0438 \u043d\u0430 \u0441\u0430\u0439\u0442\u0435 \u0435\u0441\u0442\u044c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u00ab\u041a\u043e\u043c\u0430\u043d\u0434\u0430\u00bb \u0441 \u0424\u0418\u041e\/\u0444\u043e\u0442\u043e\/\u0434\u043e\u043b\u0436\u043d\u043e\u0441\u0442\u044f\u043c\u0438.<\/p>\n<\/li>\n<\/ol>\n<p>\u0414\u0435\u0432\u044f\u0442\u0430\u044f \u2014 \u0440\u0435\u0436\u0438\u043c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 (\u043f\u0440\u0438\u043a\u0430\u0437 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430, \u0440\u0435\u0435\u0441\u0442\u0440 \u0441\u0443\u0431\u044a\u0435\u043a\u0442\u043e\u0432, \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439) \u2014 \u0441\u043d\u0430\u0440\u0443\u0436\u0438 \u043d\u0435 \u0432\u0438\u0434\u0435\u043d.<\/p>\n<p>\u0421\u043a\u0430\u043d\u0435\u0440 \u0434\u0435\u043b\u0430\u0435\u0442 \u0432\u0441\u0435 8 \u043f\u0440\u043e\u0432\u0435\u0440\u043e\u043a \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e, \u0430\u0433\u0440\u0435\u0433\u0438\u0440\u0443\u0435\u0442 \u0432 \u043e\u0434\u0438\u043d \u043e\u0442\u0447\u0451\u0442 \u0441\u043e \u0441\u0441\u044b\u043b\u043a\u0430\u043c\u0438 \u043d\u0430 \u043d\u0430\u0440\u0443\u0448\u0435\u043d\u043d\u044b\u0435 \u043d\u043e\u0440\u043c\u044b \u0438 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u0448\u0442\u0440\u0430\u0444.<\/p>\n<h3>\u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430: \u0440\u0430\u0437\u0431\u043e\u0440 \u043f\u043e \u0441\u043b\u043e\u044f\u043c<\/h3>\n<pre><code>\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\u2502  POST \/v1\/p152\/scan {url}                       \u2502\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518                       \u2502       \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510       \u25bc               \u25bc               \u25bc  \u0413\u043b\u0430\u0432\u043d\u0430\u044f        Form-pages       \u041f\u043e\u043b\u0438\u0442\u0438\u043a\u0430  \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430       (parallel)       (parallel)       \u2502               \u2502               \u2502       \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518               \u25bc               \u25bc       \u0414\u0435\u0442\u0435\u043a\u0442\u043e\u0440\u044b         \u0412\u043d\u0435\u0448\u043d\u0438\u0435 API       (10 \u0448\u0442)           (\u0420\u041a\u041d \u0440\u0435\u0435\u0441\u0442\u0440,                         \u0413\u0435\u043eIP \u0445\u043e\u0441\u0442\u0438\u043d\u0433\u0430)               \u2502               \u25bc       Findings \u2192 Score \u2192 JSON<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:87px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0411\u044d\u043a\u0435\u043d\u0434 \u2014 PHP 8.3 \/ nginx \/ PostgreSQL 16 \u043d\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435 \u043f\u043e\u0434 <a href=\"http:\/\/api.imgchanger.org\" rel=\"noopener noreferrer nofollow\"><code>api.imgchanger.org<\/code><\/a>. \u0412\u043e\u0440\u043a\u0435\u0440 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u0438\u0437 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 <code>handlers\/p152_scan.php<\/code>, \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u0447\u043d\u0430\u044f \u043b\u043e\u0433\u0438\u043a\u0430 \u2014 \u0432 <code>api\/lib\/p152_quick_scan.php<\/code>.<\/p>\n<p><strong>\u0411\u044e\u0434\u0436\u0435\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438<\/strong> \u043d\u0430 \u043e\u0434\u0438\u043d \u0441\u0430\u0439\u0442 \u2014 5 \u0441\u0435\u043a\u0443\u043d\u0434 \u0445\u0430\u0440\u0434-\u043a\u044d\u043f. \u0420\u0435\u0430\u043b\u044c\u043d\u0430\u044f \u043c\u0435\u0434\u0438\u0430\u043d\u0430 \u0438\u0437 \u043f\u0440\u043e\u0434\u0430 \u2014 <strong>2.1\u0441<\/strong> (\u0431\u0435\u0437 \u043a\u044d\u0448\u0430). \u041f\u0440\u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u044b\u0445 \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f\u0445 (TTL \u043a\u044d\u0448\u0430 \u2014 7 \u0434\u043d\u0435\u0439) \u2014 \u043c\u0433\u043d\u043e\u0432\u0435\u043d\u043d\u043e.<\/p>\n<h3>\u0413\u043b\u0430\u0432\u043d\u044b\u0439 \u0442\u0440\u044e\u043a \u2014 curl_multi \u0434\u043b\u044f \u0432\u0441\u0435\u0433\u043e<\/h3>\n<p>\u041d\u0430\u0438\u0432\u043d\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043a\u0430\u0447\u0430\u043b\u0430 \u0431\u044b \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442\u044b \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e: \u0433\u043b\u0430\u0432\u043d\u0430\u044f (3\u0441) \u2192 \/privacy (3\u0441) \u2192 \/policy (3\u0441) \u2192 \/personal-data (3\u0441) \u2192 \u2026 = 30+ \u0441\u0435\u043a\u0443\u043d\u0434. \u042d\u0442\u043e \u0442\u0443\u043f\u0438\u043a: \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0443\u0445\u043e\u0434\u0438\u0442 \u0441\u043e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b.<\/p>\n<p>\u0420\u0435\u0448\u0435\u043d\u0438\u0435 \u2014 <code>curl_multi_init<\/code> + \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u0430\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043f\u0430\u0447\u043a\u0438 URL:<\/p>\n<pre><code class=\"php\">function p152_fetch_urls_parallel(array $urls, int $timeout = 4): array {    $mh = curl_multi_init();    $handles = [];    foreach ($urls as $u) {        $ch = curl_init(p152_idn_url($u));        curl_setopt_array($ch, [            CURLOPT_RETURNTRANSFER =&gt; true,            CURLOPT_FOLLOWLOCATION =&gt; true,            CURLOPT_MAXREDIRS      =&gt; 3,            CURLOPT_TIMEOUT        =&gt; $timeout,            CURLOPT_CONNECTTIMEOUT =&gt; 3,            CURLOPT_USERAGENT      =&gt; P152_USER_AGENT,            CURLOPT_SSL_VERIFYPEER =&gt; false,        ]);        curl_multi_add_handle($mh, $ch);        $handles[$u] = $ch;    }    $active = null;    do {        $status = curl_multi_exec($mh, $active);        if ($active) curl_multi_select($mh, 0.2);    } while ($active &amp;&amp; $status === CURLM_OK);    \/\/ \u2026 \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u0422\u043e\u043d\u043a\u043e\u0441\u0442\u0438:<\/p>\n<ul>\n<li>\n<p><strong>TIMEOUT 4\u0441<\/strong> \u043d\u0430 URL \u2014 \u0438\u043d\u0430\u0447\u0435 \u043e\u0434\u0438\u043d \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u044b\u0439 \u0441\u0430\u0439\u0442 \u043b\u043e\u043c\u0430\u0435\u0442 \u0432\u0435\u0441\u044c \u0431\u0430\u0442\u0447.<\/p>\n<\/li>\n<li>\n<p><strong>MAXREDIRS 3<\/strong> \u2014 Tilda\/\u0411\u0438\u0442\u0440\u0438\u043a\u0441 \u043b\u044e\u0431\u044f\u0442 301\u2192301\u2192301.<\/p>\n<\/li>\n<li>\n<p><strong>SSL_VERIFYPEER false<\/strong> \u2014 \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0430 \u043c\u0435\u043b\u043a\u0438\u0445 \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0441\u0430\u043c\u043e\u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u043c\u0438 \u0438\u043b\u0438 \u043f\u0440\u043e\u0441\u0440\u043e\u0447\u0435\u043d\u043d\u044b\u043c\u0438 \u0441\u0435\u0440\u0442\u0430\u043c\u0438; \u043c\u044b \u043d\u0435 \u0445\u043e\u0442\u0438\u043c \u043f\u0430\u0434\u0430\u0442\u044c \u043d\u0430 \u043d\u0438\u0445.<\/p>\n<\/li>\n<li>\n<p><strong>IDN-\u043d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f<\/strong> <code>p152_idn_url()<\/code> \u2014 \u0434\u043b\u044f \u0434\u043e\u043c\u0435\u043d\u043e\u0432 <code>.\u0440\u0444<\/code> \u0447\u0435\u0440\u0435\u0437 <code>idn_to_ascii()<\/code> \u0432 <code>xn--<\/code>, \u0438\u043d\u0430\u0447\u0435 libcurl \u043d\u0435 \u043f\u0440\u043e\u0439\u0434\u0451\u0442.<\/p>\n<\/li>\n<\/ul>\n<p>\u042d\u0442\u043e \u0434\u0430\u0451\u0442 \u0447\u0435\u0441\u0442\u043d\u043e\u0435 ~4\u00d7 \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u0435: 15 URL \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u044e\u0442\u0441\u044f \u0437\u0430 3-4 \u0441\u0435\u043a\u0443\u043d\u0434\u044b, \u0430 \u043d\u0435 \u0437\u0430 15\u00d73=45\u0441.<\/p>\n<h3>\u0414\u0435\u0442\u0435\u043a\u0442\u043e\u0440 \u0444\u043e\u0440\u043c \u2014 scoring \u0432\u043c\u0435\u0441\u0442\u043e binary<\/h3>\n<p>\u041d\u0430\u0438\u0432\u043d\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434: \u00ab\u0435\u0441\u0442\u044c <code>&lt;input type=\"checkbox\"&gt;<\/code> \u0440\u044f\u0434\u043e\u043c \u0441 \u0444\u043e\u0440\u043c\u043e\u0439 \u2192 \u0441\u043e\u0433\u043b\u0430\u0441\u0438\u0435 \u0435\u0441\u0442\u044c\u00bb. \u042d\u0442\u043e \u0434\u0430\u0451\u0442 ~30% false positive \u043d\u0430 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u0432\u0435\u0431\u0435. \u041f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e:<\/p>\n<ul>\n<li>\n<p>\u0411\u0438\u0442\u0440\u0438\u043a\u0441 \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u0442 \u0447\u0435\u043a\u0431\u043e\u043a\u0441 \u0441\u043e\u0433\u043b\u0430\u0441\u0438\u044f \u0432 <strong>\u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u043c <\/strong><code><strong>&lt;div&gt;<\/strong><\/code> \u0432\u043d\u0435 <code>&lt;form&gt;<\/code>, \u0432 400+ \u0441\u0438\u043c\u0432\u043e\u043b\u0430\u0445 \u043e\u0442 \u0444\u043e\u0440\u043c\u044b (\u0448\u0430\u0431\u043b\u043e\u043d\u044b \u043b\u0438\u0447\u043d\u043e\u0433\u043e \u043a\u0430\u0431\u0438\u043d\u0435\u0442\u0430).<\/p>\n<\/li>\n<li>\n<p>Tilda \u0434\u0430\u0451\u0442 checkbox \u0441 <code>display:none<\/code> \u0438 \u043a\u043b\u0430\u0434\u0451\u0442 \u0441\u0432\u0435\u0440\u0445\u0443 \u043a\u0440\u0430\u0441\u0438\u0432\u044b\u0439 \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u044b\u0439 <code>&lt;label&gt;<\/code> \u2014 \u044e\u0440\u0438\u0434\u0438\u0447\u0435\u0441\u043a\u0438 \u044d\u0442\u043e <strong>\u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435<\/strong> \u0447\u0435\u043a\u0431\u043e\u043a\u0441\u0430, \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043d\u0435 \u0432\u0438\u0434\u0438\u0442.<\/p>\n<\/li>\n<li>\n<p>Caldera Forms (WordPress) \u0434\u0430\u0451\u0442 \u043f\u043e\u043b\u044f\u043c \u0445\u044d\u0448-\u0438\u043c\u0435\u043d\u0430 <code>fld_154589<\/code>, \u0430 GDPR-\u0447\u0435\u043a\u0431\u043e\u043a\u0441 \u0440\u0430\u0437\u043c\u0435\u0447\u0430\u0435\u0442 \u0447\u0435\u0440\u0435\u0437 <code>data-label=\"agreement\"<\/code>.<\/p>\n<\/li>\n<li>\n<p>\u041c\u043d\u043e\u0433\u043e\u0448\u0430\u0433\u043e\u0432\u044b\u0435 \u0444\u043e\u0440\u043c\u044b \u0437\u0430\u043f\u0438\u0441\u0438 \u043d\u0430 \u043f\u0440\u0438\u0451\u043c \u0432 \u043a\u043b\u0438\u043d\u0438\u043a\u0430\u0445: \u043f\u0435\u0440\u0432\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u2014 \u0442\u0435\u043b\u0435\u0444\u043e\u043d, \u0441\u043e\u0433\u043b\u0430\u0441\u0438\u0435 \u2014 \u043d\u0430 \u0442\u0440\u0435\u0442\u044c\u0435\u043c \u0448\u0430\u0433\u0435 \u0432 \u0441\u043a\u0440\u044b\u0442\u043e\u043c <code>&lt;div&gt;<\/code> \u0437\u0430 6000 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432.<\/p>\n<\/li>\n<\/ul>\n<p>\u0420\u0435\u0448\u0435\u043d\u0438\u0435 \u2014 \u0441\u0443\u043c\u043c\u0430\u0440\u043d\u044b\u0439 scoring \u043f\u043e \u0441\u0438\u0433\u043d\u0430\u043b\u0430\u043c \u0432 \u043e\u043a\u043d\u0435 \u00b1400 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0432\u043e\u043a\u0440\u0443\u0433 <code>&lt;form&gt;<\/code>:<\/p>\n<div>\n<div class=\"table\">\n<table>\n<tbody>\n<tr>\n<th>\n<p align=\"left\">\u0421\u0438\u0433\u043d\u0430\u043b<\/p>\n<\/th>\n<th>\n<p align=\"left\">Score<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0412\u0438\u0434\u0438\u043c\u044b\u0439 <code>&lt;input type=checkbox&gt;<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\">+5<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\"><code>&lt;input name=*acceptance\/agreement\/consent*&gt;<\/code> \u0438\u043b\u0438 <code>data-label=agreement<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\">+5<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u041a\u043b\u0430\u0441\u0441 \u043f\u043b\u0430\u0433\u0438\u043d\u0430:<code>wpcf7-acceptance<\/code>, <code>t-checkbox<\/code>, <code>caldera-forms-consent-field<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\">+3<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u041a\u0430\u0441\u0442\u043e\u043c\u043d\u044b\u0439 \u043b\u0435\u0439\u0431\u043b <code>&lt;label class=\"checkbox\/agree\/consent\"&gt;<\/code><\/p>\n<\/td>\n<td>\n<p align=\"left\">+3<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0443 \u0432 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 \u0444\u043e\u0440\u043c\u044b (<code>href=*policy*<\/code>)<\/p>\n<\/td>\n<td>\n<p align=\"left\">+2<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u0422\u0435\u043a\u0441\u0442 \u00ab\u0441\u043e\u0433\u043b\u0430\u0441\u0438\u0435 \/ 152-\u0424\u0417 \/ \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445\u00bb<\/p>\n<\/td>\n<td>\n<p align=\"left\">+2<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u00ab\u041d\u0430\u0436\u0438\u043c\u0430\u044f \u043a\u043d\u043e\u043f\u043a\u0443, \u044f \u0434\u0430\u044e \u0441\u043e\u0433\u043b\u0430\u0441\u0438\u0435\u2026\u00bb + \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0443<\/p>\n<\/td>\n<td>\n<p align=\"left\">+3<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<p align=\"left\">\u041c\u043d\u043e\u0433\u043e\u0448\u0430\u0433\u043e\u0432\u044b\u0439 \u043c\u0430\u0441\u0442\u0435\u0440: checkbox + consent-text \u0432 \u043e\u043a\u043d\u0435 \u00b13000\/6000<\/p>\n<\/td>\n<td>\n<p align=\"left\">+6<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>\u0420\u0435\u0448\u0435\u043d\u0438\u0435: \u22656 \u2192 \u0441\u043e\u0433\u043b\u0430\u0441\u0438\u0435 \u0435\u0441\u0442\u044c; 3\u20135 \u2192 \u043f\u043e\u0434\u043e\u0437\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e (info, \u0431\u0435\u0437 \u0448\u0442\u0440\u0430\u0444\u0430); 0\u20132 \u2192 \u043d\u0430\u0440\u0443\u0448\u0435\u043d\u0438\u0435 (high). \u0421\u043a\u0440\u044b\u0442\u044b\u0439 CSS-\u0447\u0435\u043a\u0431\u043e\u043a\u0441 \u043e\u0442\u043d\u0438\u043c\u0430\u0435\u0442 5 \u043e\u0447\u043a\u043e\u0432 \u2014 \u0444\u043e\u0440\u043c\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u043e \u0441\u043a\u0440\u044b\u0442\u044b\u043c \u0447\u0435\u043a\u0431\u043e\u043a\u0441\u043e\u043c \u043f\u043e\u043c\u0435\u0447\u0430\u044e\u0442\u0441\u044f <code>checkbox_hidden_only<\/code>.<\/p>\n<p>\u0412 \u043f\u0440\u043e\u0434\u0435 \u044d\u0442\u043e \u0434\u0430\u0451\u0442 ~96% \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438 \u043f\u043e \u043d\u0430\u0448\u0435\u043c\u0443 \u043d\u0430\u0431\u043e\u0440\u0443 (340 \u0440\u0430\u0437\u043c\u0435\u0447\u0435\u043d\u043d\u044b\u0445 \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0441\u0430\u0439\u0442\u043e\u0432).<\/p>\n<h3>\u0414\u0435\u0442\u0435\u043a\u0442\u043e\u0440 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438 \u2014 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u044b + \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u043d\u044b\u0439 \u0444\u0438\u043b\u044c\u0442\u0440<\/h3>\n<p>\u041f\u043e\u043b\u0438\u0442\u0438\u043a\u0443 \u0438\u0449\u0435\u043c \u0432 \u0442\u0440\u0438 \u0437\u0430\u0445\u043e\u0434\u0430:<\/p>\n<p><strong>\u041f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442 1<\/strong> \u2014 \u044f\u0432\u043d\u043e \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0430. URL \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 <code>privacy\/privacy-policy\/politika-konfidencialn\/personal-data<\/code>, \u0438\u043b\u0438 \u0442\u0435\u043a\u0441\u0442 \u0441\u0441\u044b\u043b\u043a\u0438 \u043c\u0430\u0442\u0447\u0438\u0442 regex <code>\u043f\u043e\u043b\u0438\u0442[\u0430-\u044f]*\\s+(?:\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a|\u043a\u043e\u043d\u0444\u0438\u0434|\u0432\\s+\u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0438\\s+\u043e\u0431\u0440\u0430\u0431)<\/code>. \u0423\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u043c PDF-\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u044b \u0438\u0437 \u043c\u0435\u0434\u0438\u0430\u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0441 \u0442\u0435\u043c \u0436\u0435 \u044f\u043a\u043e\u0440\u0435\u043c \u2014 \u0442\u0438\u043f\u043e\u0432\u043e\u0439 \u043f\u0430\u0442\u0442\u0435\u0440\u043d \u0411\u0438\u0442\u0440\u0438\u043a\u0441.<\/p>\n<p><strong>\u041f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442 2<\/strong> \u2014 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0430. \u041c\u0435\u043d\u0435\u0435 \u0443\u0432\u0435\u0440\u0435\u043d\u043d\u044b\u0435 URL\/\u0442\u0435\u043a\u0441\u0442\u044b.<\/p>\n<p><strong>\u041f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442 3<\/strong> \u2014 \u044d\u0442\u043e \u0441\u043e\u0433\u043b\u0430\u0441\u0438\u0435\/\u043e\u0444\u0435\u0440\u0442\u0430, \u043d\u0435 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0430. URL \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 <code>soglashenie\/agreement\/oferta\/dogovor<\/code>. \u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u0430\u043a fallback \u0441 \u043f\u043e\u043c\u0435\u0442\u043a\u043e\u0439 <code>type='consent'<\/code>.<\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0441\u0431\u043e\u0440\u0430 \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442\u043e\u0432 <strong>content-check<\/strong>: \u0433\u0440\u0443\u0437\u0438\u043c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0438 \u0432 \u043f\u0435\u0440\u0432\u044b\u0445 30 000 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0442\u0435\u043a\u0441\u0442\u0430 \u0438\u0449\u0435\u043c \u0444\u0440\u0430\u0437\u0443 \u00ab\u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438\u00bb \/ \u00ab\u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0430 \u043a\u043e\u043d\u0444\u0438\u0434\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438\u00bb \/ \u00abprivacy policy\u00bb. \u0415\u0441\u043b\u0438 \u043d\u0435\u0442 \u2014 \u044d\u0442\u043e \u043d\u0435 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0430, \u0430 \u0447\u0442\u043e-\u0442\u043e \u0441\u043e\u0441\u0435\u0434\u043d\u0435\u0435.<\/p>\n<p>\u042d\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e URL \u0432\u0440\u043e\u0434\u0435 <code>\/dokumenty\/<\/code> \u0438\u043b\u0438 <code>\/info\/<\/code> \u0431\u0435\u0437 \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430 \u0434\u0430\u044e\u0442 \u0448\u0443\u043c.<\/p>\n<h3>\u0421\u0432\u0435\u0436\u0430\u044f \u043b\u043e\u0432\u0443\u0448\u043a\u0430: \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0430 \u0432 Google Docs<\/h3>\n<p>\u0420\u0435\u0430\u043b\u044c\u043d\u044b\u0439 \u043a\u0435\u0439\u0441 \u0438\u0437 \u043f\u0440\u043e\u0434\u0430 (<a href=\"http:\/\/legalup.online\" rel=\"noopener noreferrer nofollow\"><code>legalup.online<\/code><\/a>, \u044e\u0440\u0438\u0434\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043a\u043e\u043d\u0442\u043e\u0440\u0430): \u043d\u0430 \u0433\u043b\u0430\u0432\u043d\u043e\u0439 \u2014 \u0442\u0440\u0438 \u0441\u0441\u044b\u043b\u043a\u0438 \u0441 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u043c\u0438 \u0430\u043d\u043a\u043e\u0440\u0430\u043c\u0438:<\/p>\n<ul>\n<li>\n<p>\u00ab\u041f\u043e\u043b\u0438\u0442\u0438\u043a\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 LegalUp\u00bb \u2192 <code>docs.google.com\/document\/d\/...\/edit<\/code><\/p>\n<\/li>\n<li>\n<p>\u00ab\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0435 \u0441\u043e\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0435 LegalUp\u00bb \u2192 <code>docs.google.com\/document\/d\/...\/edit<\/code><\/p>\n<\/li>\n<li>\n<p>\u00ab\u0421\u043e\u0433\u043b\u0430\u0441\u0438\u0435 \u043d\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445\u00bb \u2192 <code>docs.google.com\/document\/d\/...\/edit<\/code><\/p>\n<\/li>\n<\/ul>\n<p>\u0420\u0435\u0433\u0435\u043a\u0441\u043f P1 \u043b\u043e\u0432\u0438\u0442 \u2014 \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442 \u043e\u0442\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f. \u0414\u0430\u043b\u044c\u0448\u0435 content-check \u0433\u0440\u0443\u0437\u0438\u0442 Google Docs <code>\/edit<\/code>. \u0418 \u0442\u0443\u0442 \u2014 <strong>\u0442\u0438\u0448\u0438\u043d\u0430<\/strong>. Google Docs \u043e\u0442\u0434\u0430\u0451\u0442 \u043a\u0430\u0440\u043a\u0430\u0441 JS-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f; \u0442\u0435\u043a\u0441\u0442 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u043f\u043e\u0434\u0433\u0440\u0443\u0436\u0430\u0435\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 \u0437\u0430\u043a\u0440\u044b\u0442\u044b\u0439 API \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435. \u0412 \u043f\u0435\u0440\u0432\u044b\u0445 30K \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 HTML \u2014 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u00ab\u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438\u00bb.<\/p>\n<p>\u0412 \u043f\u0435\u0440\u0432\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0441\u043a\u0430\u043d\u0435\u0440 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u043b <code>policy.found=false<\/code>, \u043a\u0430\u043a \u0431\u0443\u0434\u0442\u043e \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438 \u043d\u0435\u0442. \u042d\u0442\u043e \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0435\u0432\u0435\u0440\u043d\u043e (\u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0430 \u0435\u0441\u0442\u044c, \u0441\u0441\u044b\u043b\u043a\u0430 \u0435\u0441\u0442\u044c, \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442 \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u043c\u043e\u0436\u043d\u043e) \u0438 \u044e\u0440\u0438\u0434\u0438\u0447\u0435\u0441\u043a\u0438 \u0442\u043e\u0436\u0435 \u043d\u0435\u043f\u043e\u043b\u043d\u043e \u2014 \u0443 \u044d\u0442\u043e\u0433\u043e \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u0430 \u0441\u0432\u043e\u0439 \u0440\u0438\u0441\u043a.<\/p>\n<p>\u041f\u043e\u043f\u0440\u0430\u0432\u043a\u0430: early-return \u0434\u043e content-check, \u0435\u0441\u043b\u0438 \u0445\u043e\u0441\u0442 \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442\u0430 \u2014 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0439 SaaS-\u0445\u043e\u0441\u0442\u0438\u043d\u0433:<\/p>\n<pre><code class=\"php\">$externalHosts = [    'docs.google.com'   =&gt; ['Google Docs',          '\u0421\u0428\u0410', 'high'],    'drive.google.com'  =&gt; ['Google Drive',         '\u0421\u0428\u0410', 'high'],    'notion.so'         =&gt; ['Notion',               '\u0421\u0428\u0410', 'high'],    'dropbox.com'       =&gt; ['Dropbox',              '\u0421\u0428\u0410', 'high'],    '1drv.ms'           =&gt; ['Microsoft OneDrive',   '\u0421\u0428\u0410', 'high'],    'icloud.com'        =&gt; ['Apple iCloud',         '\u0421\u0428\u0410', 'high'],    'yadi.sk'           =&gt; ['\u042f\u043d\u0434\u0435\u043a\u0441.\u0414\u0438\u0441\u043a',          '\u0420\u0424',  'medium'],    'cloud.mail.ru'     =&gt; ['Mail.ru \u041e\u0431\u043b\u0430\u043a\u043e',       '\u0420\u0424',  'medium'],];foreach (['p1', 'p2'] as $lv) {    foreach ($prio[$lv] as $candUrl) {        $host = strtolower((string)parse_url($candUrl, PHP_URL_HOST));        if (isset($externalHosts[$host])) {            return [                'found'            =&gt; true,                'type'             =&gt; 'external_hosting',                'url'              =&gt; $candUrl,                'external_service' =&gt; $externalHosts[$host][0],                'external_country' =&gt; $externalHosts[$host][1],                'external_risk'    =&gt; $externalHosts[$host][2],            ];        }    }}<\/code><div class=\"code-explainer\"><a href=\"https:\/\/sourcecraft.dev\/\" class=\"tm-button code-explainer__link\" style=\"visibility: hidden;\"><img style=\"width:14px;height:14px;object-fit:cover;object-position:left;\"\/><\/a><\/div><\/pre>\n<p>\u042e\u0440\u0438\u0434\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0441\u043c\u044b\u0441\u043b: \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0430 \u0432 Google Docs (\u0421\u0428\u0410) \u2014 \u044d\u0442\u043e \u0441\u0440\u0430\u0437\u0443 <strong>\u0447. 5 \u0441\u0442. 18<\/strong> (\u0411\u0414 \u041f\u0414\u043d \u0432\u043d\u0435 \u0420\u0424 \u2014 \u043f\u0440\u0438 \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u0438 \u043f\u043e\u0441\u0435\u0442\u0438\u0442\u0435\u043b\u0435\u043c IP\/cookies \u0443\u0445\u043e\u0434\u044f\u0442 \u0432 Google) + <strong>\u0441\u0442. 18.1<\/strong> (\u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u043d\u0430 \u0441\u0430\u0439\u0442\u0435 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430). \u0428\u0442\u0440\u0430\u0444 \u043f\u043e \u0447. 8 \u0441\u0442. 13.11 \u041a\u043e\u0410\u041f \u2014 \u0434\u043e 6 \u043c\u043b\u043d \u20bd \u043f\u0440\u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e\u043c \u043d\u0430\u0440\u0443\u0448\u0435\u043d\u0438\u0438 \u043b\u043e\u043a\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438.<\/p>\n<h3>\u0412\u043d\u0435\u0448\u043d\u0438\u0435 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438: \u0440\u0435\u0435\u0441\u0442\u0440 \u0420\u041a\u041d + \u0413\u0435\u043eIP<\/h3>\n<p><strong>\u0420\u0435\u0435\u0441\u0442\u0440 \u0420\u041a\u041d<\/strong> \u2014 <code>pd.rkn.gov.ru\/operators-registry<\/code>. \u041f\u043e\u0438\u0441\u043a \u043f\u043e \u0418\u041d\u041d \u2192 JSON \u0441\u043e \u0441\u0442\u0430\u0442\u0443\u0441\u043e\u043c \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438. \u0418\u041d\u041d \u0431\u0435\u0440\u0451\u043c \u0441 \u0441\u0430\u0439\u0442\u0430 \u2014 \u0438\u0437 \u0444\u0443\u0442\u0435\u0440\u0430 \/ \u0440\u0435\u043a\u0432\u0438\u0437\u0438\u0442\u043e\u0432 \/ \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438 \u0447\u0435\u0440\u0435\u0437 regex <code>\\b\\d{10,12}\\b<\/code> + \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u043e\u0439 \u0441\u0443\u043c\u043c\u044b.<\/p>\n<p><strong>\u0413\u0435\u043eIP \u0445\u043e\u0441\u0442\u0438\u043d\u0433\u0430<\/strong> \u2014 <a href=\"http:\/\/ip-api.com\" rel=\"noopener noreferrer nofollow\"><code>ip-api.com<\/code><\/a> (\u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0439 \u043b\u0438\u043c\u0438\u0442 45 req\/min, \u0434\u043b\u044f \u043d\u0430\u0441 \u0445\u0432\u0430\u0442\u0430\u0435\u0442). \u041e\u0442\u0434\u0430\u0451\u0442 \u0441\u0442\u0440\u0430\u043d\u0443 \u0441\u0435\u0440\u0432\u0435\u0440\u0430, ASN, \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u044e. \u0415\u0441\u043b\u0438 \u043d\u0435 \u0420\u0424 \u2014 \u043f\u043e\u043c\u0435\u0442\u043a\u0430 \u0432 \u043e\u0442\u0447\u0451\u0442\u0435: \u00ab\u0411\u0414 \u043d\u0430 \u0441\u0430\u0439\u0442\u0435 \u043c\u043e\u0436\u0435\u0442 \u0445\u0440\u0430\u043d\u0438\u0442\u044c\u0441\u044f \u0432\u043d\u0435 \u0420\u0424, \u043f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u0447. 5 \u0441\u0442. 18\u00bb.<\/p>\n<p>\u042d\u0442\u0438 \u0434\u0432\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0434\u0435\u043b\u0430\u0435\u043c \u0442\u043e\u0436\u0435 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e \u0441 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u043c fetch \u0433\u043b\u0430\u0432\u043d\u043e\u0439 \u2014 \u0438\u0442\u043e\u0433\u043e\u0432\u044b\u0439 \u0431\u044e\u0434\u0436\u0435\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043d\u0435 \u0440\u0430\u0441\u0442\u0451\u0442.<\/p>\n<h3>\u0410\u043d\u0442\u0438\u043f\u0430\u0442\u0442\u0435\u0440\u043d\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u044b \u043d\u0430\u0443\u0447\u0438\u043b\u0438\u0441\u044c \u043d\u0435 \u043f\u0443\u0442\u0430\u0442\u044c<\/h3>\n<p><strong>\u041f\u043e\u0438\u0441\u043a \u2260 \u0444\u043e\u0440\u043c\u0430 \u041f\u0414\u043d.<\/strong> \u0415\u0441\u043b\u0438 \u0432 <code>&lt;form&gt;<\/code> \u22641 PII-\u043f\u043e\u043b\u0435 + <code>role=\"search\"<\/code> \/ <code>action=\"\/search\"<\/code> \u2014 \u044d\u0442\u043e \u043f\u043e\u0438\u0441\u043a, \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u043c.<\/p>\n<p><strong>Honeypot \u2260 \u041f\u0414\u043d.<\/strong> Caldera\/CF7 \u043a\u043b\u0430\u0434\u0443\u0442 \u043d\u0435\u0432\u0438\u0434\u0438\u043c\u043e\u0435 \u043f\u043e\u043b\u0435 <code>name=\"web_site\"<\/code> \u0434\u043b\u044f \u0430\u043d\u0442\u0438\u0441\u043f\u0430\u043c\u0430. \u0421\u043f\u0438\u0441\u043a\u043e\u043c \u0438\u0441\u043a\u043b\u044e\u0447\u0430\u0435\u043c.<\/p>\n<p><strong>\u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u2260 \u041a\u043e\u043d\u0442\u0430\u043a\u0442\u043d\u0430\u044f \u0444\u043e\u0440\u043c\u0430.<\/strong> \u0423 \u0444\u043e\u0440\u043c\u044b \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u0447\u0430\u0441\u0442\u043e \u0431\u044b\u0432\u0430\u044e\u0442 \u043a\u043b\u0430\u0441\u0441\u044b <code>modal__search__input<\/code> \u2014 <code>search<\/code> \u0432 substring \u043d\u0430\u0438\u0432\u043d\u043e \u043c\u0430\u0442\u0447\u0438\u043b \u0431\u044b \u0438\u0445 \u043a\u0430\u043a \u043f\u043e\u0438\u0441\u043a. \u041a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0441\u0442\u0440\u043e\u0433\u043e: <code>role=\"search\"<\/code>, <code>name=\"q\"<\/code>, <code>name=\"s\"<\/code>, <code>action=\"\/search\"<\/code>.<\/p>\n<p><code><strong>checked<\/strong><\/code><strong> \u0432 HTML \u2260 pre-checked.<\/strong> \u0421\u043b\u043e\u0432\u043e <code>checked<\/code> \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u0435\u0442\u0441\u044f \u0432 <code>data-was-checked<\/code> \u0438 \u0432 \u043a\u043b\u0430\u0441\u0441\u0430\u0445 <code>is-checked<\/code>. \u0420\u0435\u0433\u0435\u043a\u0441\u043f \u2014 <code>(?&lt;![-\\w])checked(?![-\\w])<\/code> \u2014 \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u0430\u043a boolean-\u0430\u0442\u0440\u0438\u0431\u0443\u0442.<\/p>\n<p><strong>\u0421\u043e\u0433\u043b\u0430\u0441\u0438\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435\u043c.<\/strong> \u0411\u0438\u0442\u0440\u0438\u043a\u0441\/\u0441\u0430\u043c\u043e\u043f\u0438\u0441\u043d\u044b\u0435 \u0441\u0430\u0439\u0442\u044b \u0447\u0430\u0441\u0442\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u044e\u0442 \u00ab\u041d\u0430\u0436\u0438\u043c\u0430\u044f \u043a\u043d\u043e\u043f\u043a\u0443, \u044f \u0434\u0430\u044e \u0441\u043e\u0433\u043b\u0430\u0441\u0438\u0435 \u043d\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443\u2026\u00bb + \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0443. \u042e\u0440\u0438\u0434\u0438\u0447\u0435\u0441\u043a\u0438 \u2014 \u0441\u0435\u0440\u0430\u044f \u0437\u043e\u043d\u0430: \u0420\u041a\u041d \u0432 \u043f\u0438\u0441\u044c\u043c\u0430\u0445 \u0440\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u0435\u0442 \u0438\u043c\u0435\u043d\u043d\u043e \u0447\u0435\u043a\u0431\u043e\u043a\u0441, \u043d\u043e \u043f\u0440\u044f\u043c\u043e\u0433\u043e \u0437\u0430\u043f\u0440\u0435\u0442\u0430 \u043d\u0435\u0442. \u0414\u043b\u044f \u0431\u0430\u0437\u043e\u0432\u044b\u0445 \u0444\u043e\u0440\u043c \u0431\u0435\u0437 \u0441\u043f\u0435\u0446\u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0439 \u041f\u0414\u043d \u2014 \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c\u043e, \u0441\u0442\u0430\u0432\u0438\u043c +3 \u0432 score.<\/p>\n<h3>\u0413\u0434\u0435 \u0441\u043a\u0430\u043d\u0435\u0440 \u0434\u043e \u0441\u0438\u0445 \u043f\u043e\u0440 \u0441\u043b\u0430\u0431\u043e\u0432\u0430\u0442<\/h3>\n<ul>\n<li>\n<p><strong>JS-rendered \u043a\u043e\u043d\u0442\u0435\u043d\u0442.<\/strong> \u0421\u043a\u0430\u043d\u0435\u0440 \u043d\u0430 curl \u2014 \u0432\u0438\u0434\u0438\u0442 \u0442\u043e\u043b\u044c\u043a\u043e server-rendered HTML. \u0421\u0430\u0439\u0442\u044b \u043d\u0430 React\/Vue\/Next.js \u0431\u0435\u0437 SSR \u0442\u0435\u0440\u044f\u044e\u0442 50-90% \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430. \u041f\u043b\u0430\u043d: \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u0432\u0442\u043e\u0440\u043e\u0439 \u043f\u0440\u043e\u0445\u043e\u0434 \u0447\u0435\u0440\u0435\u0437 headless-browser (chromium \/ playwright) \u0434\u043b\u044f \u043f\u043e\u0434\u043e\u0437\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0441\u0430\u0439\u0442\u043e\u0432.<\/p>\n<\/li>\n<li>\n<p><strong>PDF-\u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0430.<\/strong> \u0412\u0438\u0434\u0438\u043c \u0447\u0442\u043e \u044d\u0442\u043e PDF, \u043d\u043e \u043d\u0435 \u043f\u0430\u0440\u0441\u0438\u043c. \u041f\u043b\u0430\u043d: <code>pdftotext<\/code> \u0434\u043b\u044f \u0438\u0437\u0432\u043b\u0435\u0447\u0435\u043d\u0438\u044f \u043f\u0435\u0440\u0432\u044b\u0445 5\u041a \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0438 \u043f\u0440\u043e\u043f\u0443\u0441\u043a \u0447\u0435\u0440\u0435\u0437 <code>p152_analyze_policy_sections<\/code>.<\/p>\n<\/li>\n<li>\n<p><strong>\u041f\u043e\u0434\u0441\u0447\u0451\u0442 \u0448\u0442\u0440\u0430\u0444\u0430<\/strong> \u0441\u0435\u0439\u0447\u0430\u0441 \u043e\u0446\u0435\u043d\u043e\u0447\u043d\u044b\u0439 (mode \u043f\u043e \u0447. 3 \u0441\u0442. 13.11 = 45 \u0442\u044b\u0441. \u0434\u043b\u044f \u044e\u0440\u043b\u0438\u0446). \u0414\u043b\u044f \u0440\u0435\u0430\u043b\u0438\u0441\u0442\u0438\u0447\u043d\u043e\u0439 \u043e\u0446\u0435\u043d\u043a\u0438 \u2014 \u043d\u0443\u0436\u043d\u043e \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u043e\u0431\u043e\u0440\u043e\u0442 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 (\u0434\u043b\u044f \u043a\u0440\u0443\u043f\u043d\u043e\u0433\u043e \u0431\u0438\u0437\u043d\u0435\u0441\u0430 \u0447. 5 \u0441\u0442. 13.11 \u0434\u0430\u0451\u0442 \u0434\u043e 18 \u043c\u043b\u043d), \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e\u0441\u0442\u044c, \u043e\u0431\u044a\u0451\u043c \u0443\u0442\u0435\u0447\u043a\u0438. \u042d\u0442\u043e \u0443\u0436\u0435 \u043d\u0435 \u00ab\u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0441\u043a\u0430\u043d\u0435\u0440\u00bb, \u0430 \u044e\u0440.\u044d\u043a\u0441\u043f\u0435\u0440\u0442\u0438\u0437\u0430.<\/p>\n<\/li>\n<\/ul>\n<h3>\u0427\u0442\u043e \u0432 \u0438\u0442\u043e\u0433\u0435<\/h3>\n<p>\u0415\u0441\u043b\u0438 \u043e\u0446\u0435\u043d\u0438\u0432\u0430\u0442\u044c \u00ab\u043f\u043e \u0434\u0435\u043b\u0443\u00bb: \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u043d\u0430\u0440\u0443\u0448\u0435\u043d\u0438\u0439 152-\u0424\u0417 \u043d\u0430 \u0441\u0430\u0439\u0442\u0430\u0445 \u043c\u0430\u043b\u043e\u0433\u043e \u0438 \u0441\u0440\u0435\u0434\u043d\u0435\u0433\u043e \u0431\u0438\u0437\u043d\u0435\u0441\u0430 \u0432 2026 \u0433\u043e\u0434\u0443 \u2014 \u043c\u043d\u043e\u0433\u043e. \u041f\u043e \u043d\u0430\u0448\u0438\u043c \u043f\u0440\u043e\u0433\u043e\u043d\u0430\u043c, <strong>78% \u0441\u0430\u0439\u0442\u043e\u0432<\/strong> \u0438\u043c\u0435\u044e\u0442 \u0445\u043e\u0442\u044f \u0431\u044b \u043e\u0434\u043d\u043e \u043d\u0430\u0440\u0443\u0448\u0435\u043d\u0438\u0435 \u0438\u0437 \u043a\u0430\u0442\u0435\u0433\u043e\u0440\u0438\u0439 high; <strong>31%<\/strong> \u2014 \u0442\u0440\u0438 \u0438 \u0431\u043e\u043b\u0435\u0435.<\/p>\n<p>\u0428\u0435\u0441\u0442\u044c \u043c\u0435\u0441\u044f\u0446\u0435\u0432 \u0440\u0430\u0431\u043e\u0442\u044b \u0441\u043a\u0430\u043d\u0435\u0440\u0430 \u0434\u0430\u043b\u0438 \u0434\u0432\u0430 \u043d\u0435\u043e\u0436\u0438\u0434\u0430\u043d\u043d\u044b\u0445 \u0432\u044b\u0432\u043e\u0434\u0430:<\/p>\n<ol>\n<li>\n<p>\u0421\u0430\u043c\u043e\u0435 \u0447\u0430\u0441\u0442\u043e\u0435 \u043d\u0430\u0440\u0443\u0448\u0435\u043d\u0438\u0435 \u2014 <strong>\u043d\u0435 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438<\/strong>, \u0430 \u0441\u043a\u0440\u044b\u0442\u044b\u0439 CSS-\u0447\u0435\u043a\u0431\u043e\u043a\u0441 \u0441\u043e\u0433\u043b\u0430\u0441\u0438\u044f \u0432 \u0444\u043e\u0440\u043c\u0430\u0445 Tilda. \u0412\u0438\u0434\u0438\u043c\u0430\u044f \u00ab\u0433\u0430\u043b\u043a\u0430\u00bb \u2014 \u044d\u0442\u043e \u043f\u0441\u0435\u0432\u0434\u043e-\u044d\u043b\u0435\u043c\u0435\u043d\u0442 <code>:before<\/code>, \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0439 <code>&lt;input&gt;<\/code> \u043f\u043e\u0434 <code>display:none<\/code> \u0443\u0436\u0435 \u043e\u0442\u043c\u0435\u0447\u0435\u043d. \u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0435\u0433\u043e \u0441\u043d\u044f\u0442\u044c.<\/p>\n<\/li>\n<li>\n<p>\u0412\u0442\u043e\u0440\u043e\u0435 \u043f\u043e \u0447\u0430\u0441\u0442\u043e\u0442\u0435 \u2014 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0430 <strong>\u043d\u0435 \u043d\u0430 \u0441\u0432\u043e\u0451\u043c \u0434\u043e\u043c\u0435\u043d\u0435<\/strong>: Google Docs, Notion, \u0440\u0435\u0436\u0435 Dropbox. \u0410\u0432\u0442\u043e\u0440\u044b \u0432\u0438\u0434\u044f\u0442 \u044d\u0442\u043e \u043a\u0430\u043a \u00ab\u0433\u0430\u043b\u043e\u0447\u043a\u0430 \u0440\u0430\u0434\u0438 \u0433\u0430\u043b\u043e\u0447\u043a\u0438\u00bb, \u043d\u0435 \u043f\u043e\u043d\u0438\u043c\u0430\u044f, \u0447\u0442\u043e \u0441\u0430\u043c\u043e \u043f\u043e \u0441\u0435\u0431\u0435 \u044d\u0442\u043e \u0434\u0432\u0430 \u043d\u0430\u0440\u0443\u0448\u0435\u043d\u0438\u044f (\u043b\u043e\u043a\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f + \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u044f \u043d\u0430 \u0441\u0430\u0439\u0442\u0435 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430).<\/p>\n<\/li>\n<\/ol>\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\/1050624\/\">https:\/\/habr.com\/ru\/articles\/1050624\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u0412 2025 \u0433\u043e\u0434\u0443 \u0448\u0442\u0440\u0430\u0444\u044b \u043f\u043e 152-\u0424\u0417 \u0432\u044b\u0440\u043e\u0441\u043b\u0438 \u0441 60 \u0442\u044b\u0441. \u0434\u043e 18 \u043c\u043b\u043d \u20bd (\u0447. 8 \u0441\u0442. 13.11 \u041a\u043e\u0410\u041f \u2014 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u0430\u044f \u0443\u0442\u0435\u0447\u043a\u0430 \u041f\u0414\u043d \u043e\u0431\u044a\u0451\u043c\u043e\u043c 10+ \u043c\u043b\u043d \u0437\u0430\u043f\u0438\u0441\u0435\u0439). \u041f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e \u0420\u041a\u041d \u043f\u0435\u0440\u0435\u0448\u0451\u043b \u043d\u0430 \u043c\u0430\u0441\u0441\u043e\u0432\u044b\u0435 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \u0441\u0430\u0439\u0442\u043e\u0432: \u0437\u0430 2024 \u0433\u043e\u0434 \u2014 1 870 \u043f\u0440\u043e\u0432\u0435\u0440\u043e\u043a \u0438 1,2 \u043c\u043b\u0440\u0434 \u20bd \u0448\u0442\u0440\u0430\u0444\u043e\u0432. \u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u043d\u0430\u0440\u0443\u0448\u0435\u043d\u0438\u0439 \u2014 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0435: \u043d\u0435\u0442 HTTPS, \u043d\u0435\u0442 cookie-\u0431\u0430\u043d\u043d\u0435\u0440\u0430, \u0444\u043e\u0440\u043c\u0430 \u0431\u0435\u0437 \u0447\u0435\u043a\u0431\u043e\u043a\u0441\u0430 \u0441\u043e\u0433\u043b\u0430\u0441\u0438\u044f, \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0430 \u0432 Google Docs.\u042e\u0440\u0438\u0441\u0442\u044b \u0443\u043c\u0435\u044e\u0442 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c \u0442\u0430\u043a\u0438\u0435 \u043d\u0430\u0440\u0443\u0448\u0435\u043d\u0438\u044f \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0437\u0430 \u0447\u0430\u0441. \u041c\u044b \u043d\u0430\u043f\u0438\u0441\u0430\u043b\u0438 \u0441\u043a\u0430\u043d\u0435\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0434\u0435\u043b\u0430\u0435\u0442 \u0442\u043e \u0436\u0435 \u0441\u0430\u043c\u043e\u0435 \u0437\u0430 30 \u0441\u0435\u043a\u0443\u043d\u0434. \u0412 \u0441\u0442\u0430\u0442\u044c\u0435 \u2014 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430, scoring-\u043f\u043e\u0434\u0445\u043e\u0434 \u043a \u0447\u0435\u043a\u0431\u043e\u043a\u0441\u0430\u043c \u0441\u043e\u0433\u043b\u0430\u0441\u0438\u044f, \u0440\u0435\u0430\u043b\u044c\u043d\u044b\u0435 \u0433\u0440\u0430\u0431\u043b\u0438 (\u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0430 \u0432 Google Docs, \u0441\u043a\u0440\u044b\u0442\u044b\u0435 checkbox \u0432 Tilda, \u043c\u043d\u043e\u0433\u043e\u0448\u0430\u0433\u043e\u0432\u044b\u0435 \u0444\u043e\u0440\u043c\u044b \u0437\u0430\u043f\u0438\u0441\u0438 \u0432 \u043a\u043b\u0438\u043d\u0438\u043a\u0430\u0445). \u041a\u043e\u0434 \u043d\u0430 PHP 8, \u0431\u0435\u0437 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439, ~1 800 \u0441\u0442\u0440\u043e\u043a.\u0427\u0442\u043e \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0443\u0436\u043d\u043e \u043e\u0442 \u0441\u043a\u0430\u043d\u0435\u0440\u0430 152-\u0424\u0417\u0417\u0430\u043a\u043e\u043d 152-\u0424\u0417 \u0437\u0430\u0434\u0430\u0451\u0442 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0443 \u041f\u0414\u043d (\u043b\u044e\u0431\u043e\u043c\u0443, \u043a\u0442\u043e \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442 \u0438\u043c\u044f\/email\/\u0442\u0435\u043b\u0435\u0444\u043e\u043d \u0447\u0435\u0440\u0435\u0437 \u0444\u043e\u0440\u043c\u0443 \u043d\u0430 \u0441\u0430\u0439\u0442\u0435) 9 \u043e\u0431\u044f\u0437\u0430\u043d\u043d\u043e\u0441\u0442\u0435\u0439. \u0422\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438 \u0441 \u0443\u043b\u0438\u0446\u044b \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c 8 \u0438\u0437 \u043d\u0438\u0445:HTTPS (\u0441\u0442. 19) \u2014 \u0431\u0435\u0437 TLS \u043d\u0435\u043b\u044c\u0437\u044f.\u041f\u043e\u043b\u0438\u0442\u0438\u043a\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u041f\u0414\u043d \u043d\u0430 \u0441\u0430\u0439\u0442\u0435 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 (\u0441\u0442. 18.1) \u2014 \u043f\u0443\u0431\u043b\u0438\u0447\u043d\u0430\u044f, \u0441 7 \u0440\u0430\u0437\u0434\u0435\u043b\u0430\u043c\u0438.\u0421\u043e\u0433\u043b\u0430\u0441\u0438\u0435 \u043d\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u041f\u0414\u043d \u0432 \u043a\u0430\u0436\u0434\u043e\u0439 \u0444\u043e\u0440\u043c\u0435 (\u0441\u0442. 6 + 9) \u2014 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439, \u043e\u0441\u043e\u0437\u043d\u0430\u043d\u043d\u044b\u0439, \u043d\u0435 \u043f\u0440\u0435\u0434\u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0439 checkbox.\u0418\u043d\u0444\u043e\u0440\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043e\u0431 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 cookie (\u0441\u0442. 16 \u0417\u0430\u043a\u043e\u043d\u0430 \u043e \u0441\u0432\u044f\u0437\u0438 + 152-\u0424\u0417 + \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0430 \u0420\u041a\u041d) \u2014 \u0431\u0430\u043d\u043d\u0435\u0440 \u0441 \u0434\u0432\u0443\u043c\u044f \u043a\u043d\u043e\u043f\u043a\u0430\u043c\u0438.\u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u0432 \u0440\u0435\u0435\u0441\u0442\u0440\u0435 \u0420\u041a\u041d (\u0441\u0442. 22) \u2014 \u0435\u0441\u043b\u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043d\u0435 \u043f\u043e\u0434\u043f\u0430\u0434\u0430\u0435\u0442 \u043f\u043e\u0434 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0447. 2.\u041b\u043e\u043a\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0411\u0414 (\u0447. 5 \u0441\u0442. 18) \u2014 \u0411\u0414 \u041f\u0414\u043d \u0440\u043e\u0441\u0441\u0438\u044f\u043d \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0420\u0424.\u041f\u043e\u0440\u0443\u0447\u0435\u043d\u0438\u0435 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 (\u0441\u0442. 6 \u0447. 3) \u2014 \u0435\u0441\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432\u043d\u0435\u0448\u043d\u0438\u0439 \u0441\u0435\u0440\u0432\u0438\u0441 (Tilda Forms, JivoSite, Bitrix24) \u2014 \u043d\u0443\u0436\u0435\u043d \u0434\u043e\u0433\u043e\u0432\u043e\u0440.\u0423\u0447\u0451\u0442 \u041f\u0414\u043d \u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a\u043e\u0432 (\u0441\u0442. 10.1) \u2014 \u0435\u0441\u043b\u0438 \u043d\u0430 \u0441\u0430\u0439\u0442\u0435 \u0435\u0441\u0442\u044c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u00ab\u041a\u043e\u043c\u0430\u043d\u0434\u0430\u00bb \u0441 \u0424\u0418\u041e\/\u0444\u043e\u0442\u043e\/\u0434\u043e\u043b\u0436\u043d\u043e\u0441\u0442\u044f\u043c\u0438.\u0414\u0435\u0432\u044f\u0442\u0430\u044f \u2014 \u0440\u0435\u0436\u0438\u043c \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u0432\u043d\u0443\u0442\u0440\u0438 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438 (\u043f\u0440\u0438\u043a\u0430\u0437 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430, \u0440\u0435\u0435\u0441\u0442\u0440 \u0441\u0443\u0431\u044a\u0435\u043a\u0442\u043e\u0432, \u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439) \u2014 \u0441\u043d\u0430\u0440\u0443\u0436\u0438 \u043d\u0435 \u0432\u0438\u0434\u0435\u043d.\u0421\u043a\u0430\u043d\u0435\u0440 \u0434\u0435\u043b\u0430\u0435\u0442 \u0432\u0441\u0435 8 \u043f\u0440\u043e\u0432\u0435\u0440\u043e\u043a \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e, \u0430\u0433\u0440\u0435\u0433\u0438\u0440\u0443\u0435\u0442 \u0432 \u043e\u0434\u0438\u043d \u043e\u0442\u0447\u0451\u0442 \u0441\u043e \u0441\u0441\u044b\u043b\u043a\u0430\u043c\u0438 \u043d\u0430 \u043d\u0430\u0440\u0443\u0448\u0435\u043d\u043d\u044b\u0435 \u043d\u043e\u0440\u043c\u044b \u0438 \u043f\u043e\u0442\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u0448\u0442\u0440\u0430\u0444.\u0410\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0430: \u0440\u0430\u0437\u0431\u043e\u0440 \u043f\u043e \u0441\u043b\u043e\u044f\u043c\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\u2502  POST \/v1\/p152\/scan {url}                       \u2502\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518                       \u2502       \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510       \u25bc               \u25bc               \u25bc  \u0413\u043b\u0430\u0432\u043d\u0430\u044f        Form-pages       \u041f\u043e\u043b\u0438\u0442\u0438\u043a\u0430  \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430       (parallel)       (parallel)       \u2502               \u2502               \u2502       \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518               \u25bc               \u25bc       \u0414\u0435\u0442\u0435\u043a\u0442\u043e\u0440\u044b         \u0412\u043d\u0435\u0448\u043d\u0438\u0435 API       (10 \u0448\u0442)           (\u0420\u041a\u041d \u0440\u0435\u0435\u0441\u0442\u0440,                         \u0413\u0435\u043eIP \u0445\u043e\u0441\u0442\u0438\u043d\u0433\u0430)               \u2502               \u25bc       Findings \u2192 Score \u2192 JSON\u0411\u044d\u043a\u0435\u043d\u0434 \u2014 PHP 8.3 \/ nginx \/ PostgreSQL 16 \u043d\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435 \u043f\u043e\u0434 api.imgchanger.org. \u0412\u043e\u0440\u043a\u0435\u0440 \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u0442\u0441\u044f \u0438\u0437 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430 handlers\/p152_scan.php, \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u0447\u043d\u0430\u044f \u043b\u043e\u0433\u0438\u043a\u0430 \u2014 \u0432 api\/lib\/p152_quick_scan.php.\u0411\u044e\u0434\u0436\u0435\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043d\u0430 \u043e\u0434\u0438\u043d \u0441\u0430\u0439\u0442 \u2014 5 \u0441\u0435\u043a\u0443\u043d\u0434 \u0445\u0430\u0440\u0434-\u043a\u044d\u043f. \u0420\u0435\u0430\u043b\u044c\u043d\u0430\u044f \u043c\u0435\u0434\u0438\u0430\u043d\u0430 \u0438\u0437 \u043f\u0440\u043e\u0434\u0430 \u2014 2.1\u0441 (\u0431\u0435\u0437 \u043a\u044d\u0448\u0430). \u041f\u0440\u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u044b\u0445 \u0441\u043a\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f\u0445 (TTL \u043a\u044d\u0448\u0430 \u2014 7 \u0434\u043d\u0435\u0439) \u2014 \u043c\u0433\u043d\u043e\u0432\u0435\u043d\u043d\u043e.\u0413\u043b\u0430\u0432\u043d\u044b\u0439 \u0442\u0440\u044e\u043a \u2014 curl_multi \u0434\u043b\u044f \u0432\u0441\u0435\u0433\u043e\u041d\u0430\u0438\u0432\u043d\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u043a\u0430\u0447\u0430\u043b\u0430 \u0431\u044b \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442\u044b \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e: \u0433\u043b\u0430\u0432\u043d\u0430\u044f (3\u0441) \u2192 \/privacy (3\u0441) \u2192 \/policy (3\u0441) \u2192 \/personal-data (3\u0441) \u2192 \u2026 = 30+ \u0441\u0435\u043a\u0443\u043d\u0434. \u042d\u0442\u043e \u0442\u0443\u043f\u0438\u043a: \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u0443\u0445\u043e\u0434\u0438\u0442 \u0441\u043e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b.\u0420\u0435\u0448\u0435\u043d\u0438\u0435 \u2014 curl_multi_init + \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u0430\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043f\u0430\u0447\u043a\u0438 URL:function p152_fetch_urls_parallel(array $urls, int $timeout = 4): array {    $mh = curl_multi_init();    $handles = [];    foreach ($urls as $u) {        $ch = curl_init(p152_idn_url($u));        curl_setopt_array($ch, [            CURLOPT_RETURNTRANSFER =&gt; true,            CURLOPT_FOLLOWLOCATION =&gt; true,            CURLOPT_MAXREDIRS      =&gt; 3,            CURLOPT_TIMEOUT        =&gt; $timeout,            CURLOPT_CONNECTTIMEOUT =&gt; 3,            CURLOPT_USERAGENT      =&gt; P152_USER_AGENT,            CURLOPT_SSL_VERIFYPEER =&gt; false,        ]);        curl_multi_add_handle($mh, $ch);        $handles[$u] = $ch;    }    $active = null;    do {        $status = curl_multi_exec($mh, $active);        if ($active) curl_multi_select($mh, 0.2);    } while ($active &amp;&amp; $status === CURLM_OK);    \/\/ \u2026 \u0441\u043e\u0431\u0440\u0430\u0442\u044c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u044b}\u0422\u043e\u043d\u043a\u043e\u0441\u0442\u0438:TIMEOUT 4\u0441 \u043d\u0430 URL \u2014 \u0438\u043d\u0430\u0447\u0435 \u043e\u0434\u0438\u043d \u043c\u0435\u0434\u043b\u0435\u043d\u043d\u044b\u0439 \u0441\u0430\u0439\u0442 \u043b\u043e\u043c\u0430\u0435\u0442 \u0432\u0435\u0441\u044c \u0431\u0430\u0442\u0447.MAXREDIRS 3 \u2014 Tilda\/\u0411\u0438\u0442\u0440\u0438\u043a\u0441 \u043b\u044e\u0431\u044f\u0442 301\u2192301\u2192301.SSL_VERIFYPEER false \u2014 \u043f\u043e\u043b\u043e\u0432\u0438\u043d\u0430 \u043c\u0435\u043b\u043a\u0438\u0445 \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0441\u0430\u043c\u043e\u043f\u043e\u0434\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u043c\u0438 \u0438\u043b\u0438 \u043f\u0440\u043e\u0441\u0440\u043e\u0447\u0435\u043d\u043d\u044b\u043c\u0438 \u0441\u0435\u0440\u0442\u0430\u043c\u0438; \u043c\u044b \u043d\u0435 \u0445\u043e\u0442\u0438\u043c \u043f\u0430\u0434\u0430\u0442\u044c \u043d\u0430 \u043d\u0438\u0445.IDN-\u043d\u043e\u0440\u043c\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f p152_idn_url() \u2014 \u0434\u043b\u044f \u0434\u043e\u043c\u0435\u043d\u043e\u0432 .\u0440\u0444 \u0447\u0435\u0440\u0435\u0437 idn_to_ascii() \u0432 xn--, \u0438\u043d\u0430\u0447\u0435 libcurl \u043d\u0435 \u043f\u0440\u043e\u0439\u0434\u0451\u0442.\u042d\u0442\u043e \u0434\u0430\u0451\u0442 \u0447\u0435\u0441\u0442\u043d\u043e\u0435 ~4\u00d7 \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u0435: 15 URL \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u044e\u0442\u0441\u044f \u0437\u0430 3-4 \u0441\u0435\u043a\u0443\u043d\u0434\u044b, \u0430 \u043d\u0435 \u0437\u0430 15\u00d73=45\u0441.\u0414\u0435\u0442\u0435\u043a\u0442\u043e\u0440 \u0444\u043e\u0440\u043c \u2014 scoring \u0432\u043c\u0435\u0441\u0442\u043e binary\u041d\u0430\u0438\u0432\u043d\u044b\u0439 \u043f\u043e\u0434\u0445\u043e\u0434: \u00ab\u0435\u0441\u0442\u044c &lt;input type=&#187;checkbox&#187;&gt; \u0440\u044f\u0434\u043e\u043c \u0441 \u0444\u043e\u0440\u043c\u043e\u0439 \u2192 \u0441\u043e\u0433\u043b\u0430\u0441\u0438\u0435 \u0435\u0441\u0442\u044c\u00bb. \u042d\u0442\u043e \u0434\u0430\u0451\u0442 ~30% false positive \u043d\u0430 \u0440\u0435\u0430\u043b\u044c\u043d\u043e\u043c \u0432\u0435\u0431\u0435. \u041f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e:\u0411\u0438\u0442\u0440\u0438\u043a\u0441 \u0440\u0435\u043d\u0434\u0435\u0440\u0438\u0442 \u0447\u0435\u043a\u0431\u043e\u043a\u0441 \u0441\u043e\u0433\u043b\u0430\u0441\u0438\u044f \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u043c &lt;div&gt; \u0432\u043d\u0435 &lt;form&gt;, \u0432 400+ \u0441\u0438\u043c\u0432\u043e\u043b\u0430\u0445 \u043e\u0442 \u0444\u043e\u0440\u043c\u044b (\u0448\u0430\u0431\u043b\u043e\u043d\u044b \u043b\u0438\u0447\u043d\u043e\u0433\u043e \u043a\u0430\u0431\u0438\u043d\u0435\u0442\u0430).Tilda \u0434\u0430\u0451\u0442 checkbox \u0441 display:none \u0438 \u043a\u043b\u0430\u0434\u0451\u0442 \u0441\u0432\u0435\u0440\u0445\u0443 \u043a\u0440\u0430\u0441\u0438\u0432\u044b\u0439 \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u044b\u0439 &lt;label&gt; \u2014 \u044e\u0440\u0438\u0434\u0438\u0447\u0435\u0441\u043a\u0438 \u044d\u0442\u043e \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0435 \u0447\u0435\u043a\u0431\u043e\u043a\u0441\u0430, \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c \u043d\u0435 \u0432\u0438\u0434\u0438\u0442.Caldera Forms (WordPress) \u0434\u0430\u0451\u0442 \u043f\u043e\u043b\u044f\u043c \u0445\u044d\u0448-\u0438\u043c\u0435\u043d\u0430 fld_154589, \u0430 GDPR-\u0447\u0435\u043a\u0431\u043e\u043a\u0441 \u0440\u0430\u0437\u043c\u0435\u0447\u0430\u0435\u0442 \u0447\u0435\u0440\u0435\u0437 data-label=&#187;agreement&#187;.\u041c\u043d\u043e\u0433\u043e\u0448\u0430\u0433\u043e\u0432\u044b\u0435 \u0444\u043e\u0440\u043c\u044b \u0437\u0430\u043f\u0438\u0441\u0438 \u043d\u0430 \u043f\u0440\u0438\u0451\u043c \u0432 \u043a\u043b\u0438\u043d\u0438\u043a\u0430\u0445: \u043f\u0435\u0440\u0432\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 \u2014 \u0442\u0435\u043b\u0435\u0444\u043e\u043d, \u0441\u043e\u0433\u043b\u0430\u0441\u0438\u0435 \u2014 \u043d\u0430 \u0442\u0440\u0435\u0442\u044c\u0435\u043c \u0448\u0430\u0433\u0435 \u0432 \u0441\u043a\u0440\u044b\u0442\u043e\u043c &lt;div&gt; \u0437\u0430 6000 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432.\u0420\u0435\u0448\u0435\u043d\u0438\u0435 \u2014 \u0441\u0443\u043c\u043c\u0430\u0440\u043d\u044b\u0439 scoring \u043f\u043e \u0441\u0438\u0433\u043d\u0430\u043b\u0430\u043c \u0432 \u043e\u043a\u043d\u0435 \u00b1400 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0432\u043e\u043a\u0440\u0443\u0433 &lt;form&gt;:\u0421\u0438\u0433\u043d\u0430\u043bScore\u0412\u0438\u0434\u0438\u043c\u044b\u0439 &lt;input type=checkbox&gt;+5&lt;input name=*acceptance\/agreement\/consent*&gt; \u0438\u043b\u0438 data-label=agreement+5\u041a\u043b\u0430\u0441\u0441 \u043f\u043b\u0430\u0433\u0438\u043d\u0430:wpcf7-acceptance, t-checkbox, caldera-forms-consent-field+3\u041a\u0430\u0441\u0442\u043e\u043c\u043d\u044b\u0439 \u043b\u0435\u0439\u0431\u043b &lt;label class=&#187;checkbox\/agree\/consent&#187;&gt;+3\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0443 \u0432 \u043a\u043e\u043d\u0442\u0435\u043a\u0441\u0442\u0435 \u0444\u043e\u0440\u043c\u044b (href=*policy*)+2\u0422\u0435\u043a\u0441\u0442 \u00ab\u0441\u043e\u0433\u043b\u0430\u0441\u0438\u0435 \/ 152-\u0424\u0417 \/ \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0430 \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445\u00bb+2\u00ab\u041d\u0430\u0436\u0438\u043c\u0430\u044f \u043a\u043d\u043e\u043f\u043a\u0443, \u044f \u0434\u0430\u044e \u0441\u043e\u0433\u043b\u0430\u0441\u0438\u0435\u2026\u00bb + \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0443+3\u041c\u043d\u043e\u0433\u043e\u0448\u0430\u0433\u043e\u0432\u044b\u0439 \u043c\u0430\u0441\u0442\u0435\u0440: checkbox + consent-text \u0432 \u043e\u043a\u043d\u0435 \u00b13000\/6000+6\u0420\u0435\u0448\u0435\u043d\u0438\u0435: \u22656 \u2192 \u0441\u043e\u0433\u043b\u0430\u0441\u0438\u0435 \u0435\u0441\u0442\u044c; 3\u20135 \u2192 \u043f\u043e\u0434\u043e\u0437\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e (info, \u0431\u0435\u0437 \u0448\u0442\u0440\u0430\u0444\u0430); 0\u20132 \u2192 \u043d\u0430\u0440\u0443\u0448\u0435\u043d\u0438\u0435 (high). \u0421\u043a\u0440\u044b\u0442\u044b\u0439 CSS-\u0447\u0435\u043a\u0431\u043e\u043a\u0441 \u043e\u0442\u043d\u0438\u043c\u0430\u0435\u0442 5 \u043e\u0447\u043a\u043e\u0432 \u2014 \u0444\u043e\u0440\u043c\u044b \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u043e \u0441\u043a\u0440\u044b\u0442\u044b\u043c \u0447\u0435\u043a\u0431\u043e\u043a\u0441\u043e\u043c \u043f\u043e\u043c\u0435\u0447\u0430\u044e\u0442\u0441\u044f checkbox_hidden_only.\u0412 \u043f\u0440\u043e\u0434\u0435 \u044d\u0442\u043e \u0434\u0430\u0451\u0442 ~96% \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438 \u043f\u043e \u043d\u0430\u0448\u0435\u043c\u0443 \u043d\u0430\u0431\u043e\u0440\u0443 (340 \u0440\u0430\u0437\u043c\u0435\u0447\u0435\u043d\u043d\u044b\u0445 \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0441\u0430\u0439\u0442\u043e\u0432).\u0414\u0435\u0442\u0435\u043a\u0442\u043e\u0440 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438 \u2014 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442\u044b + \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u043d\u044b\u0439 \u0444\u0438\u043b\u044c\u0442\u0440\u041f\u043e\u043b\u0438\u0442\u0438\u043a\u0443 \u0438\u0449\u0435\u043c \u0432 \u0442\u0440\u0438 \u0437\u0430\u0445\u043e\u0434\u0430:\u041f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442 1 \u2014 \u044f\u0432\u043d\u043e \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0430. URL \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 privacy\/privacy-policy\/politika-konfidencialn\/personal-data, \u0438\u043b\u0438 \u0442\u0435\u043a\u0441\u0442 \u0441\u0441\u044b\u043b\u043a\u0438 \u043c\u0430\u0442\u0447\u0438\u0442 regex \u043f\u043e\u043b\u0438\u0442[\u0430-\u044f]*\\s+(?:\u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a|\u043a\u043e\u043d\u0444\u0438\u0434|\u0432\\s+\u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0438\\s+\u043e\u0431\u0440\u0430\u0431). \u0423\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u043c PDF-\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u044b \u0438\u0437 \u043c\u0435\u0434\u0438\u0430\u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0441 \u0442\u0435\u043c \u0436\u0435 \u044f\u043a\u043e\u0440\u0435\u043c \u2014 \u0442\u0438\u043f\u043e\u0432\u043e\u0439 \u043f\u0430\u0442\u0442\u0435\u0440\u043d \u0411\u0438\u0442\u0440\u0438\u043a\u0441.\u041f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442 2 \u2014 \u0432\u0435\u0440\u043e\u044f\u0442\u043d\u043e \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0430. \u041c\u0435\u043d\u0435\u0435 \u0443\u0432\u0435\u0440\u0435\u043d\u043d\u044b\u0435 URL\/\u0442\u0435\u043a\u0441\u0442\u044b.\u041f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442 3 \u2014 \u044d\u0442\u043e \u0441\u043e\u0433\u043b\u0430\u0441\u0438\u0435\/\u043e\u0444\u0435\u0440\u0442\u0430, \u043d\u0435 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0430. URL \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 soglashenie\/agreement\/oferta\/dogovor. \u0412\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043a\u0430\u043a fallback \u0441 \u043f\u043e\u043c\u0435\u0442\u043a\u043e\u0439 type=&#8217;consent&#8217;.\u041f\u043e\u0441\u043b\u0435 \u0441\u0431\u043e\u0440\u0430 \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442\u043e\u0432 content-check: \u0433\u0440\u0443\u0437\u0438\u043c \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443 \u0438 \u0432 \u043f\u0435\u0440\u0432\u044b\u0445 30 000 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u0442\u0435\u043a\u0441\u0442\u0430 \u0438\u0449\u0435\u043c \u0444\u0440\u0430\u0437\u0443 \u00ab\u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438\u00bb \/ \u00ab\u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0430 \u043a\u043e\u043d\u0444\u0438\u0434\u0435\u043d\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0441\u0442\u0438\u00bb \/ \u00abprivacy policy\u00bb. \u0415\u0441\u043b\u0438 \u043d\u0435\u0442 \u2014 \u044d\u0442\u043e \u043d\u0435 \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0430, \u0430 \u0447\u0442\u043e-\u0442\u043e \u0441\u043e\u0441\u0435\u0434\u043d\u0435\u0435.\u042d\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e URL \u0432\u0440\u043e\u0434\u0435 \/dokumenty\/ \u0438\u043b\u0438 \/info\/ \u0431\u0435\u0437 \u0430\u043d\u0430\u043b\u0438\u0437\u0430 \u043a\u043e\u043d\u0442\u0435\u043d\u0442\u0430 \u0434\u0430\u044e\u0442 \u0448\u0443\u043c.\u0421\u0432\u0435\u0436\u0430\u044f \u043b\u043e\u0432\u0443\u0448\u043a\u0430: \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0430 \u0432 Google Docs\u0420\u0435\u0430\u043b\u044c\u043d\u044b\u0439 \u043a\u0435\u0439\u0441 \u0438\u0437 \u043f\u0440\u043e\u0434\u0430 (legalup.online, \u044e\u0440\u0438\u0434\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u043a\u043e\u043d\u0442\u043e\u0440\u0430): \u043d\u0430 \u0433\u043b\u0430\u0432\u043d\u043e\u0439 \u2014 \u0442\u0440\u0438 \u0441\u0441\u044b\u043b\u043a\u0438 \u0441 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u044b\u043c\u0438 \u0430\u043d\u043a\u043e\u0440\u0430\u043c\u0438:\u00ab\u041f\u043e\u043b\u0438\u0442\u0438\u043a\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445 LegalUp\u00bb \u2192 docs.google.com\/document\/d\/&#8230;\/edit\u00ab\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u0435 \u0441\u043e\u0433\u043b\u0430\u0448\u0435\u043d\u0438\u0435 LegalUp\u00bb \u2192 docs.google.com\/document\/d\/&#8230;\/edit\u00ab\u0421\u043e\u0433\u043b\u0430\u0441\u0438\u0435 \u043d\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445\u00bb \u2192 docs.google.com\/document\/d\/&#8230;\/edit\u0420\u0435\u0433\u0435\u043a\u0441\u043f P1 \u043b\u043e\u0432\u0438\u0442 \u2014 \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442 \u043e\u0442\u0431\u0438\u0440\u0430\u0435\u0442\u0441\u044f. \u0414\u0430\u043b\u044c\u0448\u0435 content-check \u0433\u0440\u0443\u0437\u0438\u0442 Google Docs \/edit. \u0418 \u0442\u0443\u0442 \u2014 \u0442\u0438\u0448\u0438\u043d\u0430. Google Docs \u043e\u0442\u0434\u0430\u0451\u0442 \u043a\u0430\u0440\u043a\u0430\u0441 JS-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f; \u0442\u0435\u043a\u0441\u0442 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u043f\u043e\u0434\u0433\u0440\u0443\u0436\u0430\u0435\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 \u0437\u0430\u043a\u0440\u044b\u0442\u044b\u0439 API \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0435. \u0412 \u043f\u0435\u0440\u0432\u044b\u0445 30K \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 HTML \u2014 \u043d\u0438\u043a\u0430\u043a\u0438\u0445 \u00ab\u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0430 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0438\u00bb.\u0412 \u043f\u0435\u0440\u0432\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u0441\u043a\u0430\u043d\u0435\u0440 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u043b policy.found=false, \u043a\u0430\u043a \u0431\u0443\u0434\u0442\u043e \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438 \u043d\u0435\u0442. \u042d\u0442\u043e \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438 \u043d\u0435\u0432\u0435\u0440\u043d\u043e (\u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0430 \u0435\u0441\u0442\u044c, \u0441\u0441\u044b\u043b\u043a\u0430 \u0435\u0441\u0442\u044c, \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442 \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u043c\u043e\u0436\u043d\u043e) \u0438 \u044e\u0440\u0438\u0434\u0438\u0447\u0435\u0441\u043a\u0438 \u0442\u043e\u0436\u0435 \u043d\u0435\u043f\u043e\u043b\u043d\u043e \u2014 \u0443 \u044d\u0442\u043e\u0433\u043e \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u0430 \u0441\u0432\u043e\u0439 \u0440\u0438\u0441\u043a.\u041f\u043e\u043f\u0440\u0430\u0432\u043a\u0430: early-return \u0434\u043e content-check, \u0435\u0441\u043b\u0438 \u0445\u043e\u0441\u0442 \u043a\u0430\u043d\u0434\u0438\u0434\u0430\u0442\u0430 \u2014 \u0438\u0437\u0432\u0435\u0441\u0442\u043d\u044b\u0439 SaaS-\u0445\u043e\u0441\u0442\u0438\u043d\u0433:$externalHosts = [    &#8216;docs.google.com&#8217;   =&gt; [&#8216;Google Docs&#8217;,          &#8216;\u0421\u0428\u0410&#8217;, &#8216;high&#8217;],    &#8216;drive.google.com&#8217;  =&gt; [&#8216;Google Drive&#8217;,         &#8216;\u0421\u0428\u0410&#8217;, &#8216;high&#8217;],    &#8216;notion.so&#8217;         =&gt; [&#8216;Notion&#8217;,               &#8216;\u0421\u0428\u0410&#8217;, &#8216;high&#8217;],    &#8216;dropbox.com&#8217;       =&gt; [&#8216;Dropbox&#8217;,              &#8216;\u0421\u0428\u0410&#8217;, &#8216;high&#8217;],    &#8216;1drv.ms&#8217;           =&gt; [&#8216;Microsoft OneDrive&#8217;,   &#8216;\u0421\u0428\u0410&#8217;, &#8216;high&#8217;],    &#8216;icloud.com&#8217;        =&gt; [&#8216;Apple iCloud&#8217;,         &#8216;\u0421\u0428\u0410&#8217;, &#8216;high&#8217;],    &#8216;yadi.sk&#8217;           =&gt; [&#8216;\u042f\u043d\u0434\u0435\u043a\u0441.\u0414\u0438\u0441\u043a&#8217;,          &#8216;\u0420\u0424&#8217;,  &#8216;medium&#8217;],    &#8216;cloud.mail.ru&#8217;     =&gt; [&#8216;Mail.ru \u041e\u0431\u043b\u0430\u043a\u043e&#8217;,       &#8216;\u0420\u0424&#8217;,  &#8216;medium&#8217;],];foreach ([&#8216;p1&#8217;, &#8216;p2&#8217;] as $lv) {    foreach ($prio[$lv] as $candUrl) {        $host = strtolower((string)parse_url($candUrl, PHP_URL_HOST));        if (isset($externalHosts[$host])) {            return [                &#8216;found&#8217;            =&gt; true,                &#8216;type&#8217;             =&gt; &#8216;external_hosting&#8217;,                &#8216;url&#8217;              =&gt; $candUrl,                &#8216;external_service&#8217; =&gt; $externalHosts[$host][0],                &#8216;external_country&#8217; =&gt; $externalHosts[$host][1],                &#8216;external_risk&#8217;    =&gt; $externalHosts[$host][2],            ];        }    }}\u042e\u0440\u0438\u0434\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0441\u043c\u044b\u0441\u043b: \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0430 \u0432 Google Docs (\u0421\u0428\u0410) \u2014 \u044d\u0442\u043e \u0441\u0440\u0430\u0437\u0443 \u0447. 5 \u0441\u0442. 18 (\u0411\u0414 \u041f\u0414\u043d \u0432\u043d\u0435 \u0420\u0424 \u2014 \u043f\u0440\u0438 \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u0438 \u043f\u043e\u0441\u0435\u0442\u0438\u0442\u0435\u043b\u0435\u043c IP\/cookies \u0443\u0445\u043e\u0434\u044f\u0442 \u0432 Google) + \u0441\u0442. 18.1 (\u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u043d\u0430 \u0441\u0430\u0439\u0442\u0435 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430). \u0428\u0442\u0440\u0430\u0444 \u043f\u043e \u0447. 8 \u0441\u0442. 13.11 \u041a\u043e\u0410\u041f \u2014 \u0434\u043e 6 \u043c\u043b\u043d \u20bd \u043f\u0440\u0438 \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u043e\u043c \u043d\u0430\u0440\u0443\u0448\u0435\u043d\u0438\u0438 \u043b\u043e\u043a\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438.\u0412\u043d\u0435\u0448\u043d\u0438\u0435 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u0438: \u0440\u0435\u0435\u0441\u0442\u0440 \u0420\u041a\u041d + \u0413\u0435\u043eIP\u0420\u0435\u0435\u0441\u0442\u0440 \u0420\u041a\u041d \u2014 pd.rkn.gov.ru\/operators-registry. \u041f\u043e\u0438\u0441\u043a \u043f\u043e \u0418\u041d\u041d \u2192 JSON \u0441\u043e \u0441\u0442\u0430\u0442\u0443\u0441\u043e\u043c \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438. \u0418\u041d\u041d \u0431\u0435\u0440\u0451\u043c \u0441 \u0441\u0430\u0439\u0442\u0430 \u2014 \u0438\u0437 \u0444\u0443\u0442\u0435\u0440\u0430 \/ \u0440\u0435\u043a\u0432\u0438\u0437\u0438\u0442\u043e\u0432 \/ \u043f\u043e\u043b\u0438\u0442\u0438\u043a\u0438 \u0447\u0435\u0440\u0435\u0437 regex \\b\\d{10,12}\\b + \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u043e\u0439 \u0441\u0443\u043c\u043c\u044b.\u0413\u0435\u043eIP \u0445\u043e\u0441\u0442\u0438\u043d\u0433\u0430 \u2014 ip-api.com (\u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0439 \u043b\u0438\u043c\u0438\u0442 45 req\/min, \u0434\u043b\u044f \u043d\u0430\u0441 \u0445\u0432\u0430\u0442\u0430\u0435\u0442). \u041e\u0442\u0434\u0430\u0451\u0442 \u0441\u0442\u0440\u0430\u043d\u0443 \u0441\u0435\u0440\u0432\u0435\u0440\u0430, ASN, \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u0430\u0446\u0438\u044e. \u0415\u0441\u043b\u0438 \u043d\u0435 \u0420\u0424 \u2014 \u043f\u043e\u043c\u0435\u0442\u043a\u0430 \u0432 \u043e\u0442\u0447\u0451\u0442\u0435: \u00ab\u0411\u0414 \u043d\u0430 \u0441\u0430\u0439\u0442\u0435 \u043c\u043e\u0436\u0435\u0442 \u0445\u0440\u0430\u043d\u0438\u0442\u044c\u0441\u044f \u0432\u043d\u0435 \u0420\u0424, \u043f\u0440\u043e\u0432\u0435\u0440\u044c\u0442\u0435 \u0447. 5 \u0441\u0442. 18\u00bb.\u042d\u0442\u0438 \u0434\u0432\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u0430 \u0434\u0435\u043b\u0430\u0435\u043c \u0442\u043e\u0436\u0435 \u043f\u0430\u0440\u0430\u043b\u043b\u0435\u043b\u044c\u043d\u043e \u0441 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u043c fetch \u0433\u043b\u0430\u0432\u043d\u043e\u0439 \u2014 \u0438\u0442\u043e\u0433\u043e\u0432\u044b\u0439 \u0431\u044e\u0434\u0436\u0435\u0442 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u043d\u0435 \u0440\u0430\u0441\u0442\u0451\u0442.\u0410\u043d\u0442\u0438\u043f\u0430\u0442\u0442\u0435\u0440\u043d\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u044b \u043d\u0430\u0443\u0447\u0438\u043b\u0438\u0441\u044c \u043d\u0435 \u043f\u0443\u0442\u0430\u0442\u044c\u041f\u043e\u0438\u0441\u043a \u2260 \u0444\u043e\u0440\u043c\u0430 \u041f\u0414\u043d. \u0415\u0441\u043b\u0438 \u0432 &lt;form&gt; \u22641 PII-\u043f\u043e\u043b\u0435 + role=&#187;search&#187; \/ action=&#187;\/search&#187; \u2014 \u044d\u0442\u043e \u043f\u043e\u0438\u0441\u043a, \u043f\u0440\u043e\u043f\u0443\u0441\u043a\u0430\u0435\u043c.Honeypot \u2260 \u041f\u0414\u043d. Caldera\/CF7 \u043a\u043b\u0430\u0434\u0443\u0442 \u043d\u0435\u0432\u0438\u0434\u0438\u043c\u043e\u0435 \u043f\u043e\u043b\u0435 name=&#187;web_site&#187; \u0434\u043b\u044f \u0430\u043d\u0442\u0438\u0441\u043f\u0430\u043c\u0430. \u0421\u043f\u0438\u0441\u043a\u043e\u043c \u0438\u0441\u043a\u043b\u044e\u0447\u0430\u0435\u043c.\u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u044f \u2260 \u041a\u043e\u043d\u0442\u0430\u043a\u0442\u043d\u0430\u044f \u0444\u043e\u0440\u043c\u0430&#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-484599","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/484599","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=484599"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/484599\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=484599"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=484599"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=484599"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}