{"id":367512,"date":"2024-05-21T03:22:27","date_gmt":"2024-05-21T03:22:27","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=367512"},"modified":"-0001-11-30T00:00:00","modified_gmt":"2024-05-21T03:22:27","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=367512","title":{"rendered":"<span>\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430 \u0434\u043b\u044f \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430\u043c\u0438 \u043d\u0430 \u041c\u0438\u043a\u0440\u043e\u0442\u0438\u043a\u0435<\/span>"},"content":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/r\/w780q1\/getpro\/habr\/upload_files\/046\/1a8\/123\/0461a81238e6ead92c1fb6a298ae6355.jpg\" width=\"900\" height=\"565\" data-src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/046\/1a8\/123\/0461a81238e6ead92c1fb6a298ae6355.jpg\" data-blurred=\"true\"\/><\/figure>\n<p>\u041c\u043e\u044f \u0434\u043e\u043c\u0430\u0448\u043d\u044f\u044f \u0441\u0435\u0442\u044c \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0445\u043e\u0441\u0442\u043e\u0432 \u043f\u043e \u0441\u0442\u0440\u0430\u043d\u0435 \u0438 \u043f\u043b\u0430\u043d\u0435\u0442\u0435, \u0442\u0440\u0438 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430 \u0437\u0430\u0445\u043e\u0434\u0438\u0442 \u043d\u0430 \u0440\u043e\u0443\u0442\u0435\u0440 \u2013 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0442\u0440\u0435\u043d\u0438\u0440\u043e\u0432\u043e\u0447\u043d\u0430\u044f \u043f\u043b\u043e\u0449\u0430\u0434\u043a\u0430 \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043d\u043e\u0432\u044b\u0445 \u0437\u043d\u0430\u043d\u0438\u0439. \u041c\u043e\u0436\u043d\u043e \u0432\u044b\u0439\u0442\u0438 \u0432 \u0431\u043e\u043b\u044c\u0448\u0443\u044e \u0441\u0435\u0442\u044c \u0438\u0437 \u043b\u044e\u0431\u043e\u0433\u043e \u0448\u043b\u044e\u0437\u0430 \u0441\u0432\u043e\u0435\u0439, \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0430 \u043f\u0440\u043e\u0441\u0442\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u043f\u0440\u0430\u0432\u0438\u043b \u2013 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0430\u0434\u0440\u0435\u0441 \u043d\u0430\u0445\u043e\u0434\u044f\u0449\u0438\u0439\u0441\u044f \u0432 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u043c \u0441\u043f\u0438\u0441\u043a\u0435 \u0430\u0434\u0440\u0435\u0441\u043e\u0432 \u0431\u0443\u0434\u0435\u0442 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d \u043d\u0430 \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0439 \u0432 \u043f\u0440\u0430\u0432\u0438\u043b\u0435 \u0444\u0430\u0439\u0440\u0432\u043e\u043b\u043b\u0430 \u0448\u043b\u044e\u0437, \u043b\u0438\u0431\u043e, \u043f\u0440\u0438 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0438 \u043a \u0434\u043e\u043c\u0435\u043d\u0443 \u043d\u0430\u0445\u043e\u0434\u044f\u0449\u0435\u043c\u0443\u0441\u044f \u0432 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u043c \u0441\u043f\u0438\u0441\u043a\u0435 \u0430\u0434\u0440\u0435\u0441\u043e\u0432 \u0444\u0430\u0439\u0440\u0432\u043e\u043b\u043b\u0430 \u043c\u0430\u0440\u0448\u0440\u0443\u0442 \u043a \u043d\u0435\u043c\u0443 \u0431\u0443\u0434\u0435\u0442 \u0438\u0434\u0442\u0438 \u0447\u0435\u0440\u0435\u0437 \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0439 \u0432 \u043f\u0440\u0430\u0432\u0438\u043b\u0435 \u0448\u043b\u044e\u0437. \u0412\u0441\u0451 \u043f\u0440\u043e\u0441\u0442\u043e \u2013 \u0445\u043e\u0447\u0435\u0448\u044c \u043f\u043e\u0431\u0440\u043e\u0434\u0438\u0442\u044c \u043f\u043e \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0441\u0435\u0442\u0438 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430\u043c\u0438 \u2013 \u043f\u0435\u0440\u0435\u043d\u0451\u0441 \u0441\u0432\u043e\u0439 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0430\u0434\u0440\u0435\u0441 \u0432 \u043d\u0443\u0436\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a, \u0445\u043e\u0447\u0435\u0448\u044c, \u0447\u0442\u043e\u0431\u044b \u043c\u0430\u0440\u0448\u0440\u0443\u0442 \u043a \u0441\u0430\u0439\u0442\u0443 \u0431\u044b\u043b \u0432\u0441\u0435\u0433\u0434\u0430 \u0447\u0435\u0440\u0435\u0437 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0439 \u0448\u043b\u044e\u0437 \u2013 \u0432\u043d\u0451\u0441 \u0435\u0433\u043e \u0434\u043e\u043c\u0435\u043d \u0438\u043b\u0438 \u0430\u0434\u0440\u0435\u0441 \u0432 \u043d\u0443\u0436\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a. \u0417\u043d\u0430\u0435\u0442\u0435, \u043a\u0430\u043a \u043c\u043d\u0435 \u043d\u0430\u0434\u043e\u0435\u043b\u043e \u0437\u0430\u0445\u043e\u0434\u0438\u0442\u044c \u0432 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0442\u043e\u0440\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437, \u043a\u043e\u0433\u0434\u0430 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0432\u043d\u0435\u0441\u0442\u0438 \u0430\u0434\u0440\u0435\u0441 \u0432 \u0441\u043f\u0438\u0441\u043e\u043a? \u041b\u0435\u043d\u044c \u0432\u0437\u044f\u043b\u0430 \u0432\u0435\u0440\u0445 \u0438 \u043d\u0430 \u0434\u043d\u044f\u0445 \u0437\u0430\u0441\u0442\u0430\u0432\u0438\u043b\u0430 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043f\u043b\u0430\u0433\u0438\u043d \u0434\u043b\u044f \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u043e\u0432 \u043e\u0431\u043b\u0435\u0433\u0447\u0430\u044e\u0449\u0438\u0439 \u044d\u0442\u0443 \u0440\u0430\u0431\u043e\u0442\u0443.<\/p>\n<p>\u0412\u043e\u0442 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u0432\u0438\u0434\u0435\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 \u043f\u043b\u0430\u0433\u0438\u043d \u0438 \u0435\u0433\u043e \u0440\u0430\u0431\u043e\u0442\u0443:<\/p>\n<div class=\"tm-iframe_temp\" data-src=\"https:\/\/embedd.srv.habr.com\/iframe\/65c31b1c6748d7d46f5a5cc5\" data-style=\"\" id=\"65c31b1c6748d7d46f5a5cc5\" width=\"\"><\/div>\n<p>\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0441\u043e\u0432\u0441\u0435\u043c \u043d\u0435 \u044d\u043d\u0442\u0435\u0440\u043f\u0440\u0430\u0439\u0437, \u0441\u043a\u043e\u0440\u0435\u0435, \u0430\u0434\u043c\u0438\u043d\u0441\u043a\u0438\u0439 \u0441\u043a\u0440\u0438\u043f\u0442 \u0441 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u044b\u043c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u043c. \u041f\u0443\u0431\u043b\u0438\u043a\u0443\u044e \u0441\u0435\u0439\u0447\u0430\u0441, \u043f\u043e\u043a\u0430 \u0434\u0430\u043d\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u0430 \u0434\u043b\u044f \u043b\u044e\u0431\u043e\u0433\u043e \u041c\u0438\u043a\u0440\u043e\u0442\u0438\u043a\u0430 \u0438 \u043c\u043e\u0436\u0435\u0442 \u043a\u043e\u043c\u0443-\u0442\u043e \u043e\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0439, \u0434\u0430\u043b\u044c\u0448\u0435 \u043c\u043e\u0433\u0443 \u0443\u0439\u0442\u0438 \u0432 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e API \u043d\u0430 \u0441\u0432\u043e\u0451\u043c web-\u0441\u0435\u0440\u0432\u0435\u0440\u0435, \u0438 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0441\u0442\u0430\u043d\u0435\u0442 \u043d\u0430\u043c\u043d\u043e\u0433\u043e \u0431\u043e\u043b\u0435\u0435 \u0442\u044f\u0436\u0435\u043b\u043e\u0432\u0435\u0441\u043d\u044b\u043c \u0438 \u0441\u043b\u043e\u0436\u043d\u044b\u043c. \u041f\u043b\u0430\u0433\u0438\u043d \u0434\u043b\u044f \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430 \u043f\u0438\u0441\u0430\u043b \u043f\u0435\u0440\u0432\u044b\u0439 \u0440\u0430\u0437, \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0441\u044f \u0441\u0442\u0430\u0442\u044c\u0451\u0439: <a href=\"https:\/\/habr.com\/ru\/articles\/703330\/\" rel=\"noopener noreferrer nofollow\">https:\/\/habr.com\/ru\/articles\/703330\/<\/a>, \u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u0441\u043f\u0430\u0441\u0438\u0431\u043e! \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u043d\u0435 \u0431\u0443\u0434\u0443, \u043e\u0431 \u044d\u0442\u043e\u043c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u0432 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435. \u041f\u043b\u0430\u0433\u0438\u043d \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430\u0445 Chrome \u0438 Edge \u2013 \u0434\u043b\u044f \u0441\u0451\u0440\u0444\u0438\u043d\u0433\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u0438\u043c\u0435\u043d\u043d\u043e \u0438\u0445, Mozilla \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u0434\u043b\u044f \u0432\u0441\u044f\u043a\u043e\u0433\u043e. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043f\u043e\u0437\u0436\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u044e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u0434\u0440\u0443\u0433\u0438\u0445 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u043e\u0432.<\/p>\n<p>\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 \u0440\u043e\u0443\u0442\u0435\u0440\u0430\u043c\u0438 MikroTik \u043f\u043e REST API, \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0441\u0442\u043e\u0438\u0442 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043d\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0435 \u0432 \u0433\u0440\u0443\u043f\u043f\u0435 \u0441 \u043f\u0440\u0430\u0432\u0430\u043c\u0438: read, write, api, rest-api, \u0438 \u043f\u0440\u0430\u0432\u043e\u043c \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u0441 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u043e\u0433\u043e \u0441\u043f\u0438\u0441\u043a\u0430 \u0445\u043e\u0441\u0442\u043e\u0432. \u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430\u043c\u0438 \u0434\u043b\u044f \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0430\u0434\u0440\u0435\u0441\u0430 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c\u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u0430\u043c\u0438 \u0444\u0430\u0439\u0440\u0432\u043e\u043b\u043b\u0430:<\/p>\n<pre><code>\/ip firewall mangle chain=prerouting action=route passthrough=no route-dst=GATEWAY_ADDRESS src-address-list=routed-mos dst-address-list=!not-routed \/ip firewall mangle chain=prerouting action=mark-routing new-routing-mark=route-lte passthrough=no src-address-list=routed-lte dst-address-list=!not-routed<\/code><\/pre>\n<p>\u041a\u043e\u0433\u0434\u0430 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0430\u0434\u0440\u0435\u0441 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u043e\u0434\u043d\u043e\u043c \u0438\u0437 \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0445 \u0441\u043f\u0438\u0441\u043a\u043e\u0432, \u0435\u0433\u043e \u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u0442\u0440\u0430\u0444\u0438\u043a \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0442\u0441\u044f \u043d\u0430 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0439 \u0448\u043b\u044e\u0437. \u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0437\u0430\u0432\u0435\u0441\u0442\u0438 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u043d\u0430 \u0444\u0430\u0439\u0440\u0432\u043e\u043b\u043b\u0435 \u043d\u0435\u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0438\u0440\u0443\u0435\u043c\u044b\u0445 \u0430\u0434\u0440\u0435\u0441\u043e\u0432, \u0432 \u043d\u0435\u0433\u043e \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0432\u0441\u0435 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u0435\u0442\u0438 \u0438 \u0432\u043d\u0435\u0448\u043d\u0438\u0435 \u0430\u0434\u0440\u0435\u0441\u0430 \u0432\u0441\u0435\u0445 \u0441\u0432\u043e\u0438\u0445 \u0445\u043e\u0441\u0442\u043e\u0432 \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u0432\u0430\u0448 \u0440\u043e\u0443\u0442\u0435\u0440 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f, \u0447\u0442\u043e\u0431\u044b \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043a\u043e\u043b\u043b\u0438\u0437\u0438\u0438. \u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430\u043c\u0438 \u0434\u043b\u044f \u0432\u043d\u0435\u0448\u043d\u0438\u0445 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0442\u0430\u043a\u0438\u043c\u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u0430\u043c\u0438:<\/p>\n<pre><code>\/ip firewall mangle chain=prerouting action=route passthrough=no route-dst=GATEWAY_ADDRESS dst-address-list=mos-domains<\/code><\/pre>\n<p>\u041a\u043e\u0433\u0434\u0430 \u043e\u0431\u0440\u0430\u0449\u0430\u0435\u043c\u0441\u044f \u043a \u0445\u043e\u0441\u0442\u0443 \u0438\u0437 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0441\u043f\u0438\u0441\u043a\u0430, \u0442\u0440\u0430\u0444\u0438\u043a \u043a \u043d\u0435\u043c\u0443 \u043f\u043e\u0439\u0434\u0451\u0442 \u0447\u0435\u0440\u0435\u0437 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0439 \u0448\u043b\u044e\u0437. \u0417\u0434\u0435\u0441\u044c \u0435\u0441\u0442\u044c \u043c\u043d\u043e\u0433\u043e \u0442\u043e\u043d\u043a\u043e\u0441\u0442\u0435\u0439, \u043c\u043e\u0436\u043d\u043e \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0430\u0434\u0440\u0435\u0441 \u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e \u0445\u043e\u0441\u0442\u0430, \u043b\u0438\u0431\u043e \u0435\u0433\u043e \u0434\u043e\u043c\u0435\u043d\u043d\u043e\u0435 \u0438\u043c\u044f \u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0441\u0430\u043c\u0430 \u0441\u043e\u0437\u0434\u0430\u0441\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u0430\u0434\u0440\u0435\u0441\u043e\u0432 \u043e\u0442\u043a\u043b\u0438\u043a\u0430\u044e\u0449\u0438\u0445\u0441\u044f \u043d\u0430 \u044d\u0442\u043e \u0438\u043c\u044f. \u0414\u043e\u043c\u0435\u043d\u043d\u043e\u0435 \u0438\u043c\u044f \u0432 \u0441\u043f\u0438\u0441\u043a\u0435 \u0444\u0430\u0439\u0440\u0432\u043e\u043b\u043b\u0430 \u0434\u0430\u0451\u0442 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u043d\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e, \u043f\u043e\u0440\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0431\u0443\u043a\u0432\u0430\u043b\u044c\u043d\u043e \u043a\u0430\u0436\u0434\u0443\u044e \u0441\u0435\u043a\u0443\u043d\u0434\u0443 \u043e\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442 \u0430\u0434\u0440\u0435\u0441\u0430 \u0445\u043e\u0441\u0442\u0430, \u043d\u0430 \u0441\u043b\u0430\u0431\u044b\u0445 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430\u0445 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u0441 \u0442\u0430\u043a\u0438\u043c \u043d\u0435 \u0441\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f. \u0425\u043e\u0440\u043e\u0448\u0438\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u0442\u0430\u043a\u043e\u0433\u043e \u0445\u043e\u0441\u0442\u0430 \u0441\u0430\u0439\u0442 \u2013 <a href=\"http:\/\/www.quora.com\" rel=\"noopener noreferrer nofollow\">www.quora.com<\/a>, \u0438, \u043d\u0430\u0432\u0435\u0440\u043d\u043e\u0435, \u043b\u044e\u0431\u044b\u0435 \u0434\u0440\u0443\u0433\u0438\u0435 \u0441\u043e\u0446\u0441\u0435\u0442\u0438, \u0441 \u043a\u043e\u0438\u043c\u0438 \u043d\u0435 \u0437\u043d\u0430\u043a\u043e\u043c, \u043d\u043e \u043f\u0440\u0438\u043c\u0435\u0440 \u043f\u043e\u0434\u0432\u0435\u0440\u043d\u0443\u043b\u0441\u044f \u0433\u043e\u0434\u043d\u044b\u0439. \u041e\u0434\u043d\u0430\u043a\u043e \u0441 \u0442\u0430\u043a\u0438\u043c\u0438 \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u043c\u0438 \u043d\u0435 \u0441\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u0440\u043e\u0441\u0442\u043e\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0438\u0445 \u0442\u0435\u043a\u0443\u0449\u0438\u0445 \u0430\u0434\u0440\u0435\u0441\u043e\u0432 \u0432 \u0441\u043f\u0438\u0441\u043e\u043a \u0444\u0430\u0439\u0440\u0432\u043e\u043b\u043b\u0430, \u043e\u043d\u0438 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f, \u0442\u0443\u0442 \u043b\u0438\u0431\u043e \u0441\u043c\u0438\u0440\u0438\u0442\u044c\u0441\u044f \u0441 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u043e\u0439 \u043d\u0430 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u0438 \u0438\u0437\u0431\u0438\u0440\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0434\u043e\u043c\u0435\u043d\u043d\u044b\u0435 \u0438\u043c\u0435\u043d\u0430 \u0432 \u0441\u0432\u043e\u0438 \u0441\u043f\u0438\u0441\u043a\u0438 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u0443\u044f \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0443, \u043b\u0438\u0431\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0432 \u0441\u043f\u0438\u0441\u043a\u0438 \u043f\u0443\u043b\u044b \u0430\u0434\u0440\u0435\u0441\u043e\u0432 \u0437\u0430\u043c\u0435\u0447\u0435\u043d\u043d\u044b\u0435 \u0437\u0430 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u043c.<\/p>\n<p>\u0418\u0442\u0430\u043a, \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043f\u043b\u0430\u0433\u0438\u043d. \u041a\u043e\u0433\u0434\u0430 \u043e\u043d \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u0432 \u043f\u0430\u043d\u0435\u043b\u044c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u043f\u0440\u0438 \u0432\u044b\u0437\u043e\u0432\u0435 \u043e\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442 \u0443 \u0440\u043e\u0443\u0442\u0435\u0440\u0430 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u043c\u0430\u0440\u0448\u0440\u0443\u0442 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0430\u0434\u0440\u0435\u0441\u0430 \u0438 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u043c\u0430\u0440\u0448\u0440\u0443\u0442 \u0434\u043e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043d\u0430 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0439 \u0432\u043a\u043b\u0430\u0434\u043a\u0435 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430, \u0438 \u0434\u0430\u0451\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0438 \u0442\u043e \u0438 \u0434\u0440\u0443\u0433\u043e\u0435 \u043e\u0434\u043d\u0438\u043c \u043d\u0430\u0436\u0430\u0442\u0438\u0435\u043c. \u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e\u0431 \u0430\u0434\u0440\u0435\u0441\u0430\u0445 \u0431\u0435\u0440\u0451\u0442\u0441\u044f \u0441 \u043c\u043e\u0435\u0433\u043e API \u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0443\u0436\u0435 <a href=\"https:\/\/habr.com\/ru\/articles\/770546\/\" rel=\"noopener noreferrer nofollow\"><u>\u043f\u0438\u0441\u0430\u043b<\/u><\/a>, \u0437\u0430\u0431\u0430\u0432\u0430 \u043e\u0431\u0440\u0435\u043b\u0430 \u043f\u043e\u043b\u044c\u0437\u0443. \u041c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c \u0441 \u044d\u0442\u0438\u043c API, \u044f \u0438\u043d\u043e\u0433\u0434\u0430 \u0447\u0438\u0442\u0430\u044e \u043b\u043e\u0433\u0438 \u043f\u043e \u0445\u043e\u0437\u044f\u0439\u0441\u043a\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044f \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0445\u043e\u0441\u0442\u0438\u043d\u0433\u0430 \u0438 \u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c \u0431\u044d\u043a\u0430, \u0431\u043e\u043b\u044c\u0448\u0435 \u0432\u0430\u043c \u044d\u0442\u043e \u043d\u0438\u0447\u0435\u043c \u043d\u0435 \u0433\u0440\u043e\u0437\u0438\u0442. \u041d\u0435 \u0441\u043b\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043b\u044e\u0431\u043e\u0433\u043e \u0434\u0440\u0443\u0433\u043e\u0433\u043e API.<\/p>\n<p>\u0414\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0437\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0444\u0430\u0439\u043b manifest.json \u2013 \u0432 \u043c\u0430\u0441\u0441\u0438\u0432 &#171;host_permissions&#187; \u043d\u0430\u0434\u043e \u0432\u043d\u0435\u0441\u0442\u0438 \u0430\u0434\u0440\u0435\u0441 \u0441\u0432\u043e\u0435\u0433\u043e \u0440\u043e\u0443\u0442\u0435\u0440\u0430: &#171;*:\/\/192.168.88.1\/&#187;. \u0412 \u0444\u0430\u0439\u043b\u0435 settings.js \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0437\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043c\u0430\u0441\u0441\u0438\u0432\u044b &#171;routes&#187; \u0438 &#171;domains&#187; \u2013 \u043a\u043b\u044e\u0447\u0438 \u043c\u0430\u0441\u0441\u0438\u0432\u0430, \u044d\u0442\u043e \u0442\u043e, \u0447\u0442\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044f \u0432 \u0441\u043f\u0438\u0441\u043a\u0435 \u0432\u044b\u0431\u043e\u0440\u0430 \u2013 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u043e\u0435 \u043d\u0430\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u2013 \u0438\u043c\u0435\u043d\u0430 \u0432\u0430\u0448\u0438\u0445 \u0441\u043f\u0438\u0441\u043a\u043e\u0432 \u0430\u0434\u0440\u0435\u0441\u043e\u0432 \u043d\u0430 \u0444\u0430\u0439\u0440\u0432\u043e\u043b\u043b\u0435. \u041f\u0443\u0441\u0442\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438\u043c\u0435\u043d\u0438 \u0441\u043f\u0438\u0441\u043a\u0430 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0442\u0435\u043a\u0443\u0449\u0438\u0445 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u043e\u0432 \u0434\u043b\u044f \u0434\u043e\u043c\u0435\u043d\u0430 \u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0442\u0435\u043a\u0443\u0449\u0438\u0445 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u043e\u0432 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0430\u0434\u0440\u0435\u0441\u0430 \u2013 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0430\u0434\u0440\u0435\u0441 \u043d\u0435 \u0443\u0434\u0430\u043b\u044f\u0435\u0442\u0441\u044f \u0438\u0437 \u0441\u043f\u0438\u0441\u043a\u0430 \u043f\u0440\u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0435 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043c\u0430\u0440\u0448\u0440\u0443\u0442, \u043e\u043d \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043d\u0435\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u043c. \u0415\u0441\u043b\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u043f\u0438\u0439 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0430\u0434\u0440\u0435\u0441\u0430 \u0432 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0445 \u0441\u043f\u0438\u0441\u043a\u0430\u0445 \u0444\u0430\u0439\u0440\u0432\u043e\u043b\u043b\u0430, \u0432\u0441\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c\u044b \u043a \u043f\u0435\u0440\u0432\u043e\u043c\u0443 \u0438\u0437 \u043d\u0438\u0445, \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u044b. \u0415\u0441\u043b\u0438 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0438\u0440\u0443\u0435\u043c\u044b\u0439 \u0434\u043e\u043c\u0435\u043d \u0438\u043b\u0438 \u0435\u0433\u043e \u0430\u0434\u0440\u0435\u0441 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d, \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0435\u0433\u043e \u0443\u0434\u0430\u043b\u044f\u0442\u044c \u043f\u0440\u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0438 \u0435\u0433\u043e \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430 \u0438\u0441\u0445\u043e\u0434\u044f \u0438\u0437 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0432\u044b \u0432\u0438\u0434\u0438\u043c\u043e \u0437\u0430\u0447\u0435\u043c-\u0442\u043e \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0435\u0433\u043e \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u043b\u0438.<\/p>\n<p>\u0417\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u043c\u0430\u0441\u0441\u0438\u0432\u044b &#171;exclude&#187; \u0438 &#171;notrouted&#187; \u2013 \u043e\u043d\u0438 \u0441\u0443\u0442\u044c \u043e\u0434\u043d\u043e \u0438 \u0442\u043e \u0436\u0435, \u0430\u0434\u0440\u0435\u0441\u0430 \u0438 \u043f\u043e\u0434\u0441\u0435\u0442\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u043d\u0435 \u043d\u0430\u0437\u043d\u0430\u0447\u0430\u0442\u044c \u0438\u043c \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u044b. \u0420\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u044b \u043f\u043e \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044f\u043c, &#171;notrouted&#187; \u2013 \u0432\u0441\u0435 \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u044b\u0435 \u0441\u0435\u0442\u0438, &#171;exclude&#187; \u2013 \u0432\u043d\u0435\u0448\u043d\u0438\u0435 \u0430\u0434\u0440\u0435\u0441\u0430 \u0445\u043e\u0441\u0442\u043e\u0432 \u0441\u0435\u0442\u0438, \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u0438\u0437 \u044d\u0442\u0438\u0445 \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u0432, \u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c \u044d\u0442\u043e \u043d\u0435 \u043f\u043e\u0432\u043b\u0438\u044f\u0435\u0442. \u041a\u043b\u044e\u0447\u0438 \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u0432 \u2013 \u0430\u0434\u0440\u0435\u0441\u0430 \u043f\u043e\u0434\u0441\u0435\u0442\u0435\u0439 (\u043f\u0435\u0440\u0432\u044b\u0439 \u0430\u0434\u0440\u0435\u0441 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0430 \u043e\u0431\u0440\u0430\u0437\u0443\u0435\u043c\u043e\u0433\u043e \u043f\u043e\u0434\u0441\u0435\u0442\u044c\u044e), \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u2013 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0440\u0435\u0444\u0438\u043a\u0441\u0430 \u043f\u043e\u0434\u0441\u0435\u0442\u0438. \u0412 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d \u043f\u043e\u0438\u0441\u043a \u0430\u0434\u0440\u0435\u0441\u0430 \u043f\u043e \u043a\u043b\u044e\u0447\u0443 \u0430\u0441\u0441\u043e\u0446\u0438\u0430\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u2013 \u043f\u043e \u0441\u0443\u0442\u0438, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0433\u043e\u0442\u043e\u0432\u044b\u0435 \u0445\u044d\u0448\u0438 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0435\u043c\u044b\u0435 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u043e\u0439, \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435, \u043d\u043e \u043e\u0446\u0435\u043d\u0438\u0442\u044c \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u0431\u0430\u0437\u0430\u0445 \u043f\u043e\u0434\u0441\u0435\u0442\u0435\u0439.<\/p>\n<p>\u041e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043c\u043e\u0436\u043d\u043e \u043d\u0435 \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0432 \u0444\u0430\u0439\u043b\u0435, \u0430 \u0437\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0438\u0445 \u0443\u0436\u0435 \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u0438 \u043e\u043d\u0438 \u0431\u0443\u0434\u0443\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u044b \u0432 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u043c \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430. \u0415\u0441\u0442\u044c \u0442\u0440\u0438 \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0443\u0447\u0435\u0442\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f API \u0440\u043e\u0443\u0442\u0435\u0440\u0430: \u0432 \u043e\u0442\u043a\u0440\u044b\u0442\u043e\u043c \u0432\u0438\u0434\u0435 \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0438\u0445 \u0432 \u0444\u0430\u0439\u043b\u0435 settings.js \u0432 \u043f\u043e\u043b\u044f\u0445 &#171;user&#187; \u0438 &#171;password&#187; \u2013 \u043c\u043e\u0436\u043d\u043e, \u043d\u043e \u043b\u0443\u0447\u0448\u0435 \u0442\u0430\u043a \u043d\u0435 \u0434\u0435\u043b\u0430\u0442\u044c, \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u043e\u0442\u043b\u0430\u0434\u043a\u0438. \u041b\u0443\u0447\u0448\u0435 \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u044d\u0442\u0438 \u043f\u043e\u043b\u044f \u043f\u0443\u0441\u0442\u044b\u043c\u0438, \u0432\u043d\u0435\u0441\u0442\u0438 \u0438\u043c\u044f \u0438 \u043f\u0430\u0440\u043e\u043b\u044c \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438, \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0438 \u043e\u043d\u0438 \u0431\u0443\u0434\u0443\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u044b \u0432 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u043c \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u0432 \u043f\u043e\u043b\u044f\u0445: &#171;an&#187; (\u0438\u043c\u044f) \u0438 &#171;ap&#187; (\u043f\u0430\u0440\u043e\u043b\u044c), \u0432 \u0441\u043b\u0435\u0433\u043a\u0430 \u0437\u0430\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c \u0432\u0438\u0434\u0435, \u0431\u0443\u0434\u0435\u0442 \u0441\u043f\u043e\u043a\u043e\u0439\u043d\u0435\u0435. \u0410 \u043c\u043e\u0436\u043d\u043e \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u0438 \u043f\u043e\u043b\u044f \u0441 \u0437\u0430\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c\u0438 \u0438\u0437 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430 \u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0438\u0445 \u0432 \u0444\u0430\u0439\u043b settings.js \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 &#171;user&#187; \u0438 &#171;password&#187; (&#171;user&#187; \u0438 &#171;password&#187; \u0438\u043c\u0435\u044e\u0442 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442 \u0434\u043b\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u0434\u0435\u0440\u0436\u0438\u0442\u0435 \u0438\u0445 \u043f\u0443\u0441\u0442\u044b\u043c\u0438, \u0435\u0441\u043b\u0438 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435), \u043d\u043e \u0442\u043e\u0433\u0434\u0430 \u043d\u0430\u0434\u043e \u043e\u0447\u0438\u0441\u0442\u0438\u0442\u044c \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435, \u043e\u043d\u043e \u0438\u043c\u0435\u0435\u0442 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442 \u0434\u043b\u044f \u043f\u043e\u043b\u0435\u0439 &#171;an&#187; \u0438 &#171;ap&#187;.<\/p>\n<p>\u041a\u0430\u043a \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0438 \u0441 \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435\u043c \u0444\u0430\u0439\u043b\u0430 settings.js, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440, \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0435\u0433\u043e \u043d\u0430 \u043f\u0430\u043d\u0435\u043b\u044c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0438 \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u043e\u0441\u0442\u0430\u0432\u0448\u0443\u044e\u0441\u044f \u0447\u0430\u0441\u0442\u044c: \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0430\u0434\u0440\u0435\u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0439 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e (\u0432\u0430\u0448\u0430 \u0441\u0442\u0430\u043d\u0446\u0438\u044f), \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0434\u043e\u043c\u0435\u043d\u044b \u0432 \u0441\u043f\u0438\u0441\u043a\u0438 \u0444\u0430\u0439\u0440\u0432\u043e\u043b\u043b\u0430 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0438\u043b\u0438 \u043d\u0435\u0442, \u0432\u0440\u0435\u043c\u044f \u0436\u0438\u0437\u043d\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0434\u043e\u043c\u0435\u043d\u0430 \u0432 \u0441\u043f\u0438\u0441\u043e\u043a. \u0421\u043f\u043e\u0441\u043e\u0431 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u043e\u043c\u0435\u043d\u0430 \u0432 \u0441\u043f\u0438\u0441\u043e\u043a: Top \u2013 \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u0435\u0440\u0445\u043d\u0438\u0439 \u0434\u043e\u043c\u0435\u043d, WWW \u2013 \u0435\u0441\u043b\u0438 \u0432\u0435\u0440\u0445\u043d\u0438\u0439 \u0434\u043e\u043c\u0435\u043d \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442\u0441\u044f \u0432 \u0441\u043f\u0438\u0441\u043a\u0435 &#171;www&#187;, \u0432 \u0441\u043f\u0438\u0441\u043e\u043a \u0444\u0430\u0439\u0440\u0432\u043e\u043b\u043b\u0430 \u0431\u0443\u0434\u0435\u0442 \u0442\u0430\u043a \u0436\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0437\u0430 \u043d\u0438\u043c \u0434\u043e\u043c\u0435\u043d, All \u2013 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 \u0441\u043f\u0438\u0441\u043e\u043a \u0432\u0441\u0435 \u0434\u043e\u043c\u0435\u043d\u044b \u043f\u043e \u0432\u0442\u043e\u0440\u043e\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c. \u041c\u0435\u0442\u043e\u0434 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u043e\u043c\u0435\u043d\u0430: Domain \u2013 \u0434\u043e\u043c\u0435\u043d \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d \u043f\u043e \u0438\u043c\u0435\u043d\u0438, Address \u2013 \u043f\u043e \u0432\u0441\u0435\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u043c \u0430\u0434\u0440\u0435\u0441\u0430\u043c \u043d\u0430 \u0434\u043e\u043c\u0435\u043d\u0435 \u2013 \u0445\u043e\u0440\u043e\u0448\u0438\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442, \u043d\u043e \u0434\u0430\u043b\u0435\u043a\u043e \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u043f\u0440\u0438 \u0431\u043e\u0433\u0430\u0442\u043e\u043c \u043d\u0430\u0431\u043e\u0440\u0435 \u0430\u0434\u0440\u0435\u0441\u043e\u0432 \u043d\u0430 \u0445\u043e\u0441\u0442\u0435 \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0430\u0441\u0442\u044c \u0438\u0437 \u043d\u0438\u0445.<\/p>\n<p>\u0420\u0430\u0441\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u0440\u0430\u0437\u0434\u0435\u043b Settings, \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u0430\u0434\u0440\u0435\u0441 \u0440\u043e\u0443\u0442\u0435\u0440\u0430, \u0438\u043c\u044f \u0438 \u043f\u0430\u0440\u043e\u043b\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f API, \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043b\u0438, \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u0441\u043f\u0438\u0441\u043e\u043a \u0434\u043e\u043c\u0435\u043d\u043e\u0432 \u0432\u0435\u0440\u0445\u043d\u0435\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f \u043d\u0430 \u0441\u0432\u043e\u0439 \u0432\u043a\u0443\u0441 \u0438 \u0436\u043c\u0451\u043c \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c. \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u0437\u0430\u043a\u0440\u043e\u0435\u043c \u0438 \u0441\u043d\u043e\u0432\u0430 \u043e\u0442\u043a\u0440\u043e\u0435\u043c \u043f\u043b\u0430\u0433\u0438\u043d, \u0442\u0435\u043f\u0435\u0440\u044c \u043e\u043d \u0433\u043e\u0442\u043e\u0432 \u043a \u0440\u0430\u0431\u043e\u0442\u0435.<\/p>\n<p>\u041a\u043e\u0433\u0434\u0430 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0430\u0434\u0440\u0435\u0441 \u0432 \u0441\u043f\u0438\u0441\u043e\u043a \u0441 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u043e\u043c, \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0430\u0434\u0440\u0435\u0441\u0430 \u0441 \u0432\u0435\u0431-\u043f\u043e\u0440\u0442\u0430\u043c\u0438 API \u0445\u043e\u0441\u0442\u0430 \u0438 \u0445\u043e\u0441\u0442\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0432\u043a\u043b\u0430\u0434\u043a\u0438 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430 \u2013 \u044d\u0442\u043e \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0442\u0438 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044e \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430, \u043d\u043e \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0432\u0441\u0451 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0431\u044b\u0441\u0442\u0440\u043e, \u0441 \u044d\u0442\u0438\u043c \u043c\u043e\u043c\u0435\u043d\u0442\u043e\u043c \u0435\u0449\u0451 \u043d\u0430\u0434\u043e \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c\u0441\u044f, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043d\u0430 Yota \u0443 \u043c\u0435\u043d\u044f \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 4-5 \u0441\u0435\u043a\u0443\u043d\u0434, \u043a\u0430\u043a \u044f \u043d\u0435 \u0441\u0442\u0430\u0440\u0430\u043b\u0441\u044f \u043f\u0440\u0438\u0431\u0438\u0442\u044c \u0432\u0441\u0435 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f. \u041e\u0434\u043d\u0430\u043a\u043e \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u044d\u0442\u043e \u043d\u0435 \u0432\u043b\u0438\u044f\u0435\u0442, \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043c\u0435\u0436\u0434\u0443 \u043f\u0440\u043e\u0432\u043e\u0434\u043d\u044b\u043c\u0438 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f\u043c\u0438 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0431\u044b\u0441\u0442\u0440\u043e.<\/p>\n<p>\u041f\u0440\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u0434\u043e\u043c\u0435\u043d\u0430 \u0432 \u0441\u043f\u0438\u0441\u043e\u043a \u0441 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u043e\u043c, \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0432\u0441\u0435\u0445 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0435\u0442\u0438 \u043d\u0430 \u0432\u0435\u0431-\u043f\u043e\u0440\u0442\u044b \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c\u044b\u0445 \u0434\u043e\u043c\u0435\u043d\u043e\u0432, \u044d\u0442\u043e \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0443\u0441\u043a\u043e\u0440\u044f\u0435\u0442 \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043d\u0430 \u043d\u043e\u0432\u044b\u0439 \u043c\u0430\u0440\u0448\u0440\u0443\u0442. \u041f\u043e\u0441\u043b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0432\u043a\u043b\u0430\u0434\u043a\u0438, \u0441\u0440\u0430\u0437\u0443 \u0432\u0438\u0434\u0438\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442.<\/p>\n<details class=\"spoiler\">\n<summary>\u0424\u0430\u0439\u043b manifest.json<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"json\">{   \"name\": \"MikroTik Control Panel\",   \"description\": \"MikroTik Control Panel\",   \"version\": \"1.0\",   \"manifest_version\": 3,     \"icons\": {       \"16\": \"icons\/logo16.png\",       \"32\": \"icons\/logo32.png\",       \"48\": \"icons\/logo48.png\",       \"128\": \"icons\/logo128.png\"   },   \"action\": {     \"default_popup\": \"popup.html\"   },   \"permissions\": [     \"scripting\",     \"activeTab\",     \"storage\"   ],   \"host_permissions\": [     \"*:\/\/192.168.88.1\/\"   ],   \"background\": {} }<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<details class=\"spoiler\">\n<summary>\u0424\u0430\u0439\u043b setting.js<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"javascript\">const settings = {   \"localhost\": \"192.168.88.77\",   \"router\": \"192.168.88.1\",   \"protocol\": \"http\",   \"user\": \"\",   \"password\": \"\",   \"defaults\": {     \"dynamic\": false,     \"time\": \"02:00:00\",     \"www\": \"www,web,wap,m\",     \"what\": \"www\",     \"how\": \"name\"   },   \"routes\": {     \"Default\": \"\",     \"Yota\": \"routed-lte\",     \"Rostelecom\": \"routed-dsl\",     \"Saint Petersburg\": \"routed-spb\",     \"Moscow\": \"routed-mos\",     \"New York\": \"routed-usa\",     \"Singapore\": \"routed-sin\"   },   \"domains\": {     \"Default\": \"\",     \"Moscow\": \"mos-domains\",     \"New York\": \"usa-domains\",     \"Singapore\": \"sin-domains\"   },   \"exclude\": {     \"1.1.1.1\": 32,     \"8.8.8.8\": 32   },   \"notrouted\": {     \"0.0.0.0\": 8,     \"10.0.0.0\": 8,     \"100.64.0.0\": 10,     \"127.0.0.0\": 8,     \"169.254.0.0\": 16,     \"172.16.0.0\": 12,     \"192.168.0.0\": 16,     \"192.0.0.0\": 24,     \"192.0.2.0\": 24,     \"192.88.99.0\": 24,     \"198.18.0.0\": 15,     \"198.51.100.0\": 24,     \"203.0.113.0\": 24,     \"224.0.0.0\": 3   } }<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<details class=\"spoiler\">\n<summary>\u0424\u0430\u0439\u043b popup.html<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"xml\">&lt;!DOCTYPE html> &lt;html> &lt;head> &lt;title>MikroTik control panel&lt;\/title> &lt;link rel=\"stylesheet\" type=\"text\/css\" href=\"popup.css\"\/> &lt;\/head> &lt;body>   &lt;p class=\"browntext\" style=\"font-weight:bold;font-size:13px;\">MikroTik Control Panel&lt;\/p>   &lt;p class=\"errormessage\" id=\"error-messages\" style=\"font-weight:normal;font-size:13px;\">&lt;\/p>   &lt;p class=\"infomessage\" id=\"current-address\" style=\"margin-top:4px;font-weight:bold;font-size:14px;\">-&lt;\/p>   &lt;p class=\"infomessage\" id=\"address-city\" style=\"font-size:12px;\">-&lt;\/p>   &lt;p class=\"infomessage\" id=\"address-provider\" style=\"font-size:12px;\">-&lt;\/p>   &lt;div style=\"margin-top:8px;\">     &lt;label for=\"local-address\">Host:&lt;\/label>     &lt;input type=\"text\" id=\"local-address\" value=\"\" style=\"width:160px;margin-left:4px;text-align:left;\" \/>   &lt;\/div>   &lt;div style=\"margin-top:10px;\">     &lt;label for=\"route-selection\">Route:&lt;\/label>     &lt;select id=\"route-selection\" style=\"width:152px;margin-left:5px;\">&lt;\/select>   &lt;\/div>   &lt;button id=\"route-button\" class=\"formsbutton2\">Apply&lt;\/button>   &lt;p class=\"infomessage\" id=\"current-page\" style=\"font-weight:bold;font-size:14px;\">-&lt;\/p>   &lt;p class=\"infomessage\" id=\"page-address\" style=\"font-size:14px;\">-&lt;\/p>   &lt;p class=\"infomessage\" id=\"page-city\" style=\"font-size:12px;\">-&lt;\/p>   &lt;div style=\"margin-top:10px;\">     &lt;label for=\"domain-selection\">Route:&lt;\/label>     &lt;select id=\"domain-selection\" style=\"width:152px;margin-left:5px;\">&lt;\/select>   &lt;\/div>   &lt;div style=\"margin-top:11px;\">     &lt;input type=\"checkbox\" id=\"domain-dynamic\"\/>     &lt;label for=\"domain-dynamic\">Dynamic:&lt;\/label>     &lt;input type=\"text\" id=\"domain-time\" value=\"\" style=\"width:112px;margin-left:4px;text-align:left;\" \/>   &lt;\/div>   &lt;div style=\"margin-top:8px;\">     &lt;input type=\"radio\" id=\"domain-top\" name=\"what-add\" \/>     &lt;label for=\"domain-top\">Top&lt;\/label>     &lt;input type=\"radio\" id=\"domain-www\" name=\"what-add\" style=\"margin-left:10px;\" checked \/>     &lt;label for=\"domain-www\">WWW&lt;\/label>     &lt;input type=\"radio\" id=\"domain-all\" name=\"what-add\" style=\"margin-left:10px;\" \/>     &lt;label for=\"domain-all\">All&lt;\/label>   &lt;\/div>   &lt;div style=\"margin-top:8px;\">     &lt;input type=\"radio\" id=\"domain-name\" name=\"how-add\" checked \/>     &lt;label for=\"domain-name\">Domain&lt;\/label>     &lt;input type=\"radio\" id=\"domain-address\" name=\"how-add\" style=\"margin-left:10px;\" \/>     &lt;label for=\"domain-address\">Address&lt;\/label>   &lt;\/div>   &lt;button id=\"domain-button\" class=\"formsbutton1\">Apply&lt;\/button>   &lt;button id=\"settings-button\" class=\"headerbutton1\">Settings...&lt;\/button>   &lt;div id=\"settings-block\" hidden>     &lt;div style=\"margin-top:10px;\">       &lt;label for=\"router-address\">Router:&lt;\/label>       &lt;input type=\"text\" id=\"router-address\" value=\"\" style=\"margin-left:4px;width:147px;text-align:left;\" \/>     &lt;\/div>     &lt;div style=\"margin-top:10px;\">       &lt;label for=\"router-user\">User:&lt;\/label>       &lt;input type=\"text\" id=\"router-user\" value=\"\" style=\"margin-left:4px;width:160px;text-align:left;\" \/>     &lt;\/div>     &lt;div style=\"margin-top:10px;\">       &lt;label for=\"router-user\">Password:&lt;\/label>       &lt;input type=\"password\" id=\"router-password\" value=\"\" style=\"margin-left:4px;width:130px;text-align:left;\" \/>     &lt;\/div>     &lt;div style=\"margin-top:10px;\">       &lt;label for=\"protocol-selection\">Protocol:&lt;\/label>       &lt;select id=\"protocol-selection\" style=\"width:135px;margin-left:5px;\">         &lt;option value=\"http\">HTTP&lt;\/option>         &lt;option value=\"https\">HTTPS&lt;\/option>       &lt;\/select>     &lt;\/div>     &lt;div style=\"margin-top:10px;\">       &lt;label for=\"top-domains\">WWW:&lt;\/label>       &lt;input type=\"text\" id=\"top-domains\" value=\"\" style=\"margin-left:4px;width:150px;text-align:left;\" \/>     &lt;\/div>     &lt;button id=\"save-button\" class=\"formsbutton1\">Save settings&lt;\/button>     &lt;p class=\"infomessage\" id=\"settings-info\" style=\"font-size:14px;font-style:italic;\">&lt;\/p>   &lt;\/div>   &lt;script src=\"settings.js\">&lt;\/script>   &lt;script src=\"popup.js\">&lt;\/script> &lt;\/body> &lt;\/html><\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<details class=\"spoiler\">\n<summary>\u0424\u0430\u0439\u043b popup.css<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"css\">body {   text-align: center; } label, button {   cursor: pointer;   font-size: 14px;   -webkit-touch-callout: none;   -webkit-user-select: none;   -khtml-user-select: none;   -moz-user-select: none;   -ms-user-select: none;   user-select: none; } label + input {   font-size: 14px;   margin-top: 0px;   text-decoration: none;   vertical-align: middle;   display: inline-block; } input[type=checkbox], input[type=radio] {   width: 18px;   height: 18px;   cursor: pointer;   border: 1px solid #ccc;   box-sizing: border-box;   vertical-align: middle;   accent-color: #3586E5;   margin-top: -2px;   margin-bottom: 0;   margin-left: 0;   margin-right: 2px;   padding: 0; } textarea, input[type=text], input[type=password] {   font-size: 14px;   padding: 5px;   border: 1px solid #ccc;   box-sizing: border-box;   background-color: #fff;   border-radius: 0; } select {   font-size: 14px;   font-weight: normal;   text-align: center;   padding: 5px;   border: 1px solid #ccc;   box-sizing: border-box;   background-color: #fff;   border-radius: 0; } button {   margin-top: 10px;   margin-bottom: 5px; } button:disabled {   background-color: #D1D1D1; } .fileupload, .formsbutton0, .formsbutton1, .formsbutton2 {   font-size: 11pt;   font-weight: normal;   font-style: normal;   padding: 6px;   border: none;   cursor: pointer;   width: 200px;   display: inline-block; } .fileupload:enabled:hover, .formsbutton0:enabled:hover, .formsbutton1:enabled:hover, .formsbutton2:enabled:hover, .linktext:hover {   opacity: 0.8; } .fileupload:disabled, .formsbutton0:disabled, .formsbutton1:disabled, .formsbutton2:disabled {   background-color: #D1D1D1;   cursor: default; } .formsbutton0 {   background-color: #E54335;   color: white; } .formsbutton1 {   background-color: #43A047;   color: white; } .fileupload, .formsbutton2 {   background-color: #3586E5;   color: white; } .headerbutton1, .headerbutton2 {   cursor: pointer;   background:none;   border:none;   margin:0;   padding:0; } .headerbutton1 {   font-size: 14px;   font-weight: bold;   color: #00695C; } .headerbutton2 {   font-size: 12px;   font-weight: normal;   color: #004D40; } .headerbutton1:hover, .headerbutton2:hover {   text-decoration: underline;   opacity: 0.8; } .textmessage, .infomessage, .errormessage, .bluetext, .violettext, .yellowtext, .browntext {   margin: 0px;   padding: 0px; }  @media (prefers-color-scheme: light) { body {    } .headerbutton1 {   color: #00695C; } .headerbutton2 {   color: #004D40; }  .errormessage {   color: #D50000; } .bluetext {   color: MediumBlue; } .violettext {   color: DarkViolet; } .yellowtext {   color: #987F08; } .browntext {   color: #795548; } .infomessage, .textmessage {   color: black; } }  @media (prefers-color-scheme: dark) { body {   background: #111B23; } select, textarea, input[type=text], input[type=password] {   background: #142633;   color: #CFD8DC; } select, textarea, input[type=text], input[type=password], input[type=checkbox], input[type=radio] {   border-color: #78909C; } input[type=checkbox]:not(:checked), input[type=radio]:not(:checked) {   opacity: 0.9; } .fileupload:focus, .formsbutton0:focus, .formsbutton1:focus, .formsbutton2:focus, input[type=checkbox]:focus, input[type=radio]:focus, select:focus, textarea:focus, input[type=text]:focus, input[type=password]:focus {   outline-color: #CFD8DC; } .appheader1, .appheader2, .infomessage, .textmessage, label, h5, th, td {   color: #CFD8DC; } .errormessage {   color: #F77878; } .linktext {   color: #7986CB; } .linktext:focus {   outline-color: #7986CB; } .linktext:visited {   color: #BA68C8; } .linktext:visited:focus {   outline-color: #BA68C8; } .headerbutton1 {   color: #26A69A; } .headerbutton2 {   color: #4DB6AC; } .headerbutton1:focus {   outline-color: #26A69A; } .headerbutton1:focus {   outline-color: #4DB6AC; } .fileupload:disabled, .formsbutton0:disabled, .formsbutton1:disabled, .formsbutton2:disabled {   background-color: #626567;   color: #A6ACAF; } .fileupload:enabled, .formsbutton0:enabled, .formsbutton1:enabled, .formsbutton2:enabled {   color: #ECEFF1; } .bluetext {   color: #64B5F6; } .violettext {   color: #CE93D8; } .yellowtext {   color: #E6EE9C; } .browntext {   color: #A1887F; }  }<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<details class=\"spoiler\">\n<summary>\u0424\u0430\u0439\u043b popup.js<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"javascript\">let opened_tab = null; let api_ip_address = null; let api_ip_query = ''; let routes_query = ''; let domains_query = ''; let domains_regular = ','; let exclude_minprefix = 32; let exclude_maxprefix = 0; let notrouted_minprefix = 32; let notrouted_maxprefix = 0;  async function InitPage() {   let load_settings = null;   await chrome.storage.local.get([\"MikroTikControlPanelSettings\"]).then((result) => {     if (typeof result.MikroTikControlPanelSettings != 'undefined')       load_settings = result.MikroTikControlPanelSettings;   });      if (load_settings !== null) {     settings['user'] = DecodeString(load_settings['an']);     settings['password'] = DecodeString(load_settings['ap']);     settings['localhost'] = load_settings['localhost'];     settings['router'] = load_settings['router'];     settings['protocol'] = load_settings['protocol'];     settings['defaults']['dynamic'] = load_settings['defaults']['dynamic'];     settings['defaults']['time'] = load_settings['defaults']['time'];     settings['defaults']['www'] = load_settings['defaults']['www'];     settings['defaults']['what'] = load_settings['defaults']['what'];     settings['defaults']['how'] = load_settings['defaults']['how'];   } else {     if ((typeof settings['user'] == 'undefined' || !settings['user']) &amp;&amp; typeof settings['an'] != 'undefined' &amp;&amp; settings['an'])       settings['user'] = ae(settings['an']);     if ((typeof settings['password'] == 'undefined' || !settings['password']) &amp;&amp; typeof settings['ap'] != 'undefined' &amp;&amp; settings['ap'])       settings['password'] = ae(settings['ap']);   }      for (let subnet in settings['exclude']) {     if (settings['exclude'][subnet] > exclude_maxprefix)       exclude_maxprefix = settings['exclude'][subnet];     if (settings['exclude'][subnet] &lt; exclude_minprefix)       exclude_minprefix = settings['exclude'][subnet];   }      for (let subnet in settings['notrouted']) {     if (settings['notrouted'][subnet] > notrouted_maxprefix)       notrouted_maxprefix = settings['notrouted'][subnet];     if (settings['notrouted'][subnet] &lt; notrouted_minprefix)       notrouted_minprefix = settings['notrouted'][subnet];   }      document.getElementById(\"local-address\").value = settings['localhost'];   document.getElementById(\"router-address\").value = settings['router'];   document.getElementById(\"router-user\").value = settings['user'];   document.getElementById(\"router-password\").value = settings['password'];   document.getElementById(\"protocol-selection\").value = settings['protocol'];   document.getElementById(\"domain-dynamic\").checked = settings['defaults']['dynamic'];   document.getElementById(\"domain-time\").value = settings['defaults']['time'];   document.getElementById(\"domain-\" + settings['defaults']['how']).checked = true;   document.getElementById(\"domain-\" + settings['defaults']['what']).checked = true;   document.getElementById(\"top-domains\").value = settings['defaults']['www'];      let routes_options = '';   let domains_options = '';      for (let idx in settings['routes']) {     routes_options += '&lt;option value=\"' + settings['routes'][idx] + '\">' + idx + '&lt;\/option>';          if (settings['routes'][idx])       routes_query += '\"list=' + settings['routes'][idx] + '\",' + (routes_query ? '\"#|\",' : '');   }      for (let idx in settings['domains']) {     domains_options += '&lt;option value=\"' + settings['domains'][idx] + '\">' + idx + '&lt;\/option>';          domains_regular += settings['domains'][idx] + ',';          if (settings['domains'][idx])       domains_query += '\"list=' + settings['domains'][idx] + '\",' + (domains_query ? '\"#|\",' : '');   }      document.getElementById(\"route-selection\").innerHTML = routes_options;   document.getElementById(\"domain-selection\").innerHTML = domains_options;      document.getElementById(\"settings-button\").addEventListener(\"click\", () => {     HideViewBlock('settings-block');   });      await chrome.tabs.query({active: true}, (tabs) => {     const tab = tabs[0];     if (tab) {       opened_tab = tab;       const url = new URL(tab.url);       const hostname = url.hostname;       document.getElementById(\"current-page\").innerHTML = hostname;              if ((\/^(\\d{1,3}\\.){3}\\d{1,3}$\/).test(hostname))         document.getElementById(\"domain-button\").disabled = IpIsExclude(hostname);              if (hostname.indexOf('.') > 0) {         fetch(\"http:\/\/api.syo.su\/ipwhois?\" + hostname, {           method: \"GET\",           headers: { \"Accept\": \"application\/json\" }         }).then((response) => { return response.json(); }).then((whois) => {           document.getElementById(\"page-address\").innerHTML = whois['ip'];           document.getElementById(\"page-city\").innerHTML = whois['ip2location']['city'] + \", \" + whois['ip2location']['country'];           document.getElementById(\"domain-button\").disabled = IpIsExclude(whois['ip']);                      RefreshDomainInfo();         }).catch(function() {           SetExternalApiError();         });       } else {         document.getElementById(\"domain-button\").disabled = true;       }     } else {       document.getElementById(\"domain-button\").disabled = true;     }   });      RefreshAddressInfo();      let authuser = 'Basic ' + btoa(settings['user'] + \":\" + settings['password']);      fetch(settings['protocol'] + \":\/\/\" + settings['router'] + \"\/rest\/ip\/firewall\/address-list\/print\", {     method: \"POST\",     headers: { \"Accept\": \"application\/json\", \"Content-Type\": \"application\/json\", \"Authorization\": authuser },     body: '{\".query\": [' + routes_query + '\"address=' + settings['localhost'] + '\",\"disabled=false\"]}'   }).then((response) => { return response.json(); }).then((data) => {     document.getElementById(\"route-selection\").value = (data.length ? data[0]['list'] : '');   }).catch(function() {     SetRouterApiError();   });      await fetch(\"http:\/\/api.syo.su\/gethost?api.syo.su\", {     method: \"GET\",     headers: { \"Accept\": \"text\/html\" }   }).then((response) => { return response.text(); }).then((ip) => {     api_ip_address = ip;     api_ip_query = '\"dst-address=' + ip + ':443\",\"dst-address=' + ip + ':80\",\"#|\"';   });      document.getElementById(\"route-button\").addEventListener(\"click\", () => {     SetLocalhostRoute();   });      document.getElementById(\"domain-button\").addEventListener(\"click\", () => {     SetDomainRoute();   });      document.getElementById(\"save-button\").addEventListener(\"click\", () => {     SaveSettings();   }); }  function HideViewBlock(block_name) {   let info_block = document.getElementById(block_name);   info_block.hidden = !info_block.hidden; }  function SetRouterApiError() {   document.getElementById(\"error-messages\").innerHTML += \"&lt;b>Error connecting to router API&lt;\/b>&lt;br>Check router address, username, password and protocol in settings\";   document.getElementById(\"route-button\").disabled = true;   document.getElementById(\"domain-button\").disabled = true; }  function SetExternalApiError() {   document.getElementById(\"error-messages\").innerHTML += \"&lt;b>Error connecting to external API&lt;\/b>&lt;br>Check availability http:\/\/api.syo.su\";   document.getElementById(\"domain-button\").disabled = true; }  function RefreshAddressInfo() {   fetch(\"http:\/\/api.syo.su\/myip\", {     method: \"GET\",     headers: { \"Accept\": \"text\/html\" }   }).then((response) => { return response.text(); }).then((data) => {     document.getElementById(\"current-address\").innerHTML = data;          fetch(\"http:\/\/api.syo.su\/ipwhois?\" + data, {       method: \"GET\",       headers: { \"Accept\": \"application\/json\" }     }).then((response) => { return response.json(); }).then((whois) => {       document.getElementById(\"address-city\").innerHTML = whois['ip2location']['city'] + \", \" + whois['ip2location']['country'];       document.getElementById(\"address-provider\").innerHTML = whois['ip2location']['provider'];     }).catch(function() {       SetExternalApiError();     });   }).catch(function() {     SetExternalApiError();   }); }  async function SetLocalhostRoute() {   let localhost = document.getElementById(\"local-address\").value.replaceAll(' ', '');   let addrlist = document.getElementById(\"route-selection\").value;   let address = document.getElementById(\"page-address\").innerHTML;   let domain = document.getElementById(\"current-page\").innerHTML;   let router = document.getElementById(\"router-address\").value.replaceAll(' ', '');   let username = document.getElementById(\"router-user\").value;   let userpass = document.getElementById(\"router-password\").value;   let protocol = document.getElementById(\"protocol-selection\").value;   let authuser = 'Basic ' + btoa(username + \":\" + userpass);   let is_exclude = (!address || address == '-' || IpIsExclude(address));   let disable_from = 0;      let current_list = await fetch(protocol + \":\/\/\" + router + \"\/rest\/ip\/firewall\/address-list\/print\", {     method: \"POST\",     headers: { \"Accept\": \"application\/json\", \"Content-Type\": \"application\/json\", \"Authorization\": authuser },     body: '{\".query\": [' + routes_query + '\"address=' + localhost + '\"]}'   }).then((response) => { return response.json(); }).then((data) => {     return data;   });      let current_conn_query = api_ip_query;   if (!is_exclude)     current_conn_query += '\"dst-address=' + address + ':443\",\"dst-address=' + address + ':80\",\"#|\"' + (api_ip_query ? '\"#|\"' : \"\");      let current_conn = await fetch(protocol + \":\/\/\" + router + \"\/rest\/ip\/firewall\/connection\/print\", {     method: \"POST\",     headers: { \"Accept\": \"application\/json\", \"Content-Type\": \"application\/json\", \"Authorization\": authuser },     body: '{\".query\": [' + current_conn_query + ']}'   }).then((response) => { return response.json(); }).then((data) => {     return data;   });      let gateway_address = null;   if (current_conn.length)     gateway_address = current_conn[0]['reply-dst-address'].split(':')[0];      if (addrlist) {     disable_from = 1;     let fetch_method = null;     let fetch_url = null;     let sendbody = '\"address\":\"' + localhost + '\",\"disabled\":\"false\",\"dynamic\":\"false\",\"list\":\"' + addrlist + '\"';          if (current_list.length) {       fetch_method = \"PATCH\";       fetch_url = protocol + \":\/\/\" + router + \"\/rest\/ip\/firewall\/address-list\/\" + current_list[0]['.id'];       let comment = (typeof current_list[0]['comment'] != 'undefined' ? ',\"comment\":\"' + current_list[0]['comment'] + '\"' : \"\");       sendbody = '\".id\":\"' + current_list[0]['.id'] + '\",' + sendbody + comment;     } else {       fetch_method = \"POST\";       fetch_url = protocol + \":\/\/\" + router + \"\/rest\/ip\/firewall\/address-list\/add\";     }          await fetch(fetch_url, {       method: fetch_method,       headers: { \"Accept\": \"application\/json\", \"Content-Type\": \"application\/json\", \"Authorization\": authuser },       body: '{' + sendbody + '}'     }).then((response) => { return response; });   }      for (let i = disable_from; i &lt; current_list.length; i++)     if (current_list[i]['disabled'] == 'false')       await fetch(protocol + \":\/\/\" + router + \"\/rest\/ip\/firewall\/address-list\/\" + current_list[i]['.id'], {         method: \"PATCH\",         headers: { \"Accept\": \"application\/json\", \"Content-Type\": \"application\/json\", \"Authorization\": authuser },         body: '{\".id\":\"' + current_list[i]['.id'] + '\",\"address\":\"' + localhost + '\",\"disabled\":\"true\",\"dynamic\":\"' + current_list[i]['dynamic'] + '\",\"list\":\"' + current_list[i]['list'] + '\"}'       }).then((response) => { return response; });      for (let i = 0; i &lt; current_conn.length; i++) {     if (localhost == current_conn[i]['src-address'].split(':')[0]) {       let check_address = await fetch(protocol + \":\/\/\" + router + \"\/rest\/ip\/firewall\/connection\/\" + current_conn[i]['.id'], {         method: \"DELETE\",         headers: { \"Accept\": \"application\/json\", \"Authorization\": authuser }       }).then((response) => { return response; });     }   };      setTimeout(RefreshAddressInfo, 1000);      if (!is_exclude)     setTimeout(function() { chrome.tabs.reload(opened_tab.id); }, 1000); }  function RefreshDomainInfo() {   let domain = document.getElementById(\"current-page\").innerHTML;   let address = document.getElementById(\"page-address\").innerHTML;   let router = document.getElementById(\"router-address\").value.replaceAll(' ', '');   let username = document.getElementById(\"router-user\").value;   let userpass = document.getElementById(\"router-password\").value;   let protocol = document.getElementById(\"protocol-selection\").value;   let authuser = 'Basic ' + btoa(username + \":\" + userpass);      fetch(protocol + \":\/\/\" + router + \"\/rest\/ip\/firewall\/address-list\/print\", {     method: \"POST\",     headers: { \"Accept\": \"application\/json\", \"Content-Type\": \"application\/json\", \"Authorization\": authuser },     body: '{\".query\": [' + domains_query + '\"comment=' + domain + '\",\"address=' + address + '\",\"#&amp;\",\"address=' + domain + '\",\"#|\",\"disabled=false\",\"timeout\",\"#!\",\"dynamic=true\",\"#&amp;!\"]}'   }).then((response) => { return response.json(); }).then((data) => {     if (data.length) {       document.getElementById(\"domain-time\").value = (data[0]['dynamic'] == 'true' ? data[0]['timeout'] : settings['defaults']['time']);       document.getElementById(\"domain-dynamic\").checked = (data[0]['dynamic'] == 'true');       document.getElementById(\"domain-selection\").value = data[0]['list'];     } else {       document.getElementById(\"domain-time\").value = settings['defaults']['time'];       document.getElementById(\"domain-dynamic\").checked = settings['defaults']['dynamic'];       document.getElementById(\"domain-selection\").value = \"\";     }   }); }  async function SetDomainRoute() {   let domain = document.getElementById(\"current-page\").innerHTML;   let address = document.getElementById(\"page-address\").innerHTML;   let addrlist = document.getElementById(\"domain-selection\").value;   let dynamic = document.getElementById(\"domain-dynamic\").checked;   let dyntime = document.getElementById(\"domain-time\").value.replaceAll(' ', '');   let router = document.getElementById(\"router-address\").value.replaceAll(' ', '');   let username = document.getElementById(\"router-user\").value;   let userpass = document.getElementById(\"router-password\").value;   let protocol = document.getElementById(\"protocol-selection\").value;   let top_domains_template = ',' + document.getElementById(\"top-domains\").value.replaceAll(' ', '').toLowerCase() + ',';   let as_address = document.getElementById(\"domain-address\").checked;   let add_www = document.getElementById(\"domain-www\").checked;   let add_all = document.getElementById(\"domain-all\").checked;   let authuser = 'Basic ' + btoa(username + \":\" + userpass);   let is_exclude = (!address || address == '-' || IpIsExclude(address));      if (is_exclude)     return 0;      let domains = new Array();   let addresses = new Array();   let error_messages = new Array();      if (domain != address) {     let domain_struct = domain.split('.');     let steps_count = 1;     if (add_www) {       if (top_domains_template.indexOf(',' + domain_struct[0] + ',') >= 0)         steps_count = 2;     } else if (add_all) {       steps_count = domain_struct.length - 1;     }          let domain_next = domain;     for (let i = 0; i &lt; steps_count; i++) {       domains[domain_next] = new Array();              if (as_address) {         let hosts = await fetch(\"http:\/\/api.syo.su\/gethosts?\" + domain_next, {           method: \"GET\",           headers: { \"Accept\": \"text\/html\" }         }).then((response) => {           return response.text().split('&lt;br>');         }).catch(function() {           return null;         });                  if (hosts !== null) {           for (let i = 0; i &lt; hosts.length; i++)             if (!addresses.includes(hosts[i])) {               addresses.push(hosts[i]);               domains[domain_next].push(hosts[i]);             }         } else           error_messages.push(\"Error API access\");       } else {         domains[domain_next].push(domain_next);       }              domain_next = domain_next.substr(domain_struct[i].length + 1);     }   }      let current_query = '';   let current_addr_query = '';   for (let dom in domains) {     current_query += '\"comment=' + dom + '\",\"address=' + dom + '\",\"#|\",' + (current_query ? '\"#|\",' : '');     current_addr_query += '\"comment=' + dom + '\",' + (current_addr_query ? '\"#|\",' : '');   }      let current_list = await fetch(protocol + \":\/\/\" + router + \"\/rest\/ip\/firewall\/address-list\/print\", {     method: \"POST\",     headers: { \"Accept\": \"application\/json\", \"Content-Type\": \"application\/json\", \"Authorization\": authuser },     body: '{\".query\": [' + domains_query + current_query + '\"disabled=false\",\"timeout\",\"#!\",\"dynamic=true\",\"#&amp;!\"]}'   }).then((response) => { return response.json(); }).then((data) => {     return data;   });      let current_addrs = new Array();   let current_num = null;   if (current_list.length)     current_num = 0;      if (addrlist) {     for (let dom in domains) {       for (let i = 0; i &lt; domains[dom].length; i++) {         let set_address = domains[dom][i];         let sendbody = '\"address\":\"' + set_address + '\",\"list\":\"' + addrlist + '\",\"disabled\":\"false\"';                  if (as_address)           sendbody += ',\"comment\":\"' + dom + '\"';                  if (dynamic)           sendbody += ',\"dynamic\":\"true\",\"timeout\":\"' + dyntime + '\"';         else           sendbody += ',\"dynamic\":\"false\"';                  let fetch_method = null;         let fetch_url = null;         if (current_num !== null &amp;&amp; current_num &lt; current_list.length) {           fetch_method = \"PATCH\";           fetch_url = protocol + \":\/\/\" + router + \"\/rest\/ip\/firewall\/address-list\/\" + current_list[current_num]['.id'];           sendbody = '\".id\":\"' + current_list[current_num]['.id'] + '\",' + sendbody;           current_num++;         } else {           fetch_method = \"POST\";           fetch_url = protocol + \":\/\/\" + router + \"\/rest\/ip\/firewall\/address-list\/add\";         }                  let check_address = await fetch(fetch_url, {           method: fetch_method,           headers: { \"Accept\": \"application\/json\", \"Content-Type\": \"application\/json\", \"Authorization\": authuser },           body: '{' + sendbody + '}'         }).then((response) => { return response.json(); }).then((answer) => {           return answer;         });       }     }   } else {     current_addrs = await fetch(protocol + \":\/\/\" + router + \"\/rest\/ip\/firewall\/address-list\/print\", {       method: \"POST\",       headers: { \"Accept\": \"application\/json\", \"Content-Type\": \"application\/json\", \"Authorization\": authuser },       body: '{\".query\": [' + domains_query + current_addr_query + '\"disabled=false\"]}'     }).then((response) => { return response.json(); }).then((data) => {       return data;     });   }      if (current_num !== null)     for (let i = current_num; i &lt; current_list.length; i++) {       let check_address = await fetch(protocol + \":\/\/\" + router + \"\/rest\/ip\/firewall\/address-list\/\" + current_list[i]['.id'], {         method: \"DELETE\",         headers: { \"Accept\": \"application\/json\", \"Authorization\": authuser }       }).then((response) => { return response; });     }      if (addrlist)     current_addrs = await fetch(protocol + \":\/\/\" + router + \"\/rest\/ip\/firewall\/address-list\/print\", {       method: \"POST\",       headers: { \"Accept\": \"application\/json\", \"Content-Type\": \"application\/json\", \"Authorization\": authuser },       body: '{\".query\": [' + domains_query + current_addr_query + '\"disabled=false\"]}'     }).then((response) => { return response.json(); }).then((data) => {       return data;     });      let current_conn_query = '';   for (let i = 0; i &lt; current_addrs.length; i++) {     current_conn_query += '\"dst-address=' + current_addrs[i]['address'] + ':443\",\"dst-address=' + current_addrs[i]['address'] + ':80\",\"#|\",' + (current_conn_query ? '\"#|\",' : '');   }      let current_conn = await fetch(protocol + \":\/\/\" + router + \"\/rest\/ip\/firewall\/connection\/print\", {     method: \"POST\",     headers: { \"Accept\": \"application\/json\", \"Content-Type\": \"application\/json\", \"Authorization\": authuser },     body: '{\".query\": [' + current_conn_query + ']}'   }).then((response) => { return response.json(); }).then((data) => {     return data;   });      for (let i = 0; i &lt; current_conn.length; i++) {     let check_address = await fetch(protocol + \":\/\/\" + router + \"\/rest\/ip\/firewall\/connection\/\" + current_conn[i]['.id'], {       method: \"DELETE\",       headers: { \"Accept\": \"application\/json\", \"Authorization\": authuser }     }).then((response) => { return response; });   }      setTimeout(function() { chrome.tabs.reload(opened_tab.id); }, 1000); }  function SaveSettings() {   let localhost = document.getElementById(\"local-address\").value;   let dynamic = document.getElementById(\"domain-dynamic\").checked;   let dyntime = document.getElementById(\"domain-time\").value;   let router = document.getElementById(\"router-address\").value;   let username = document.getElementById(\"router-user\").value;   let userpass = document.getElementById(\"router-password\").value;   let protocol = document.getElementById(\"protocol-selection\").value;   let top_domains_template = document.getElementById(\"top-domains\").value;   let as_address = document.getElementById(\"domain-address\").checked;   let add_www = document.getElementById(\"domain-www\").checked;   let add_all = document.getElementById(\"domain-all\").checked;      let save_settings = {     localhost: localhost,     router: router,     an: CodeString(username),     ap: CodeString(userpass),     protocol: protocol,     defaults: {       dynamic: dynamic,       time: dyntime,       www: top_domains_template,       what: (add_www ? \"www\" : (add_all ? \"all\" : \"top\")),       how: (as_address ? \"address\" : \"name\")     }   };      chrome.storage.local.set({\"MikroTikControlPanelSettings\": save_settings }).then(() => {     document.getElementById(\"settings-info\").innerHTML = \"Settings saved\";   }); }  const delay = (delayInms) => {   return new Promise(resolve => setTimeout(resolve, delayInms)); };  function IpIsExclude(ip_str) {   let ip = ParseIp(ip_str);      if (ip === null)     return false;      return IpInArray(ip, settings['exclude'], exclude_minprefix, exclude_maxprefix)     || IpInArray(ip, settings['notrouted'], notrouted_minprefix, notrouted_maxprefix); }  function IpInArray(ip, arr, prefmin, prefmax) {   let submask = new Uint32Array([0xffffffff &lt;&lt; (32 - prefmax)])[0];   let network = ip &amp; submask;      for (let prefix = prefmax; prefix >= prefmin; prefix--) {     let subnet = ((network >>> 24) &amp; 0xff).toString() + '.' + ((network >>> 16) &amp; 0xff).toString() + '.' + ((network >>> 8) &amp; 0xff).toString() + '.' + (network &amp; 0xff).toString();          if (typeof arr[subnet] != 'undefined' &amp;&amp; arr[subnet] &lt;= prefix)       return true;          submask = submask &lt;&lt; 1;     network = network &amp; submask;   }      return false; }  function ParseIp(ip_str, ip_format = 10) {   let ip_octets = ip_str.split('.');      ip_octets[0] = parseInt(ip_octets[0], ip_format);   ip_octets[1] = parseInt(ip_octets[1], ip_format);   ip_octets[2] = parseInt(ip_octets[2], ip_format);   ip_octets[3] = parseInt(ip_octets[3], ip_format);      if (isNaN(ip_octets[0]) || isNaN(ip_octets[1]) || isNaN(ip_octets[2]) || isNaN(ip_octets[3])     || ip_octets[0] > 255 || ip_octets[1] > 255 || ip_octets[2] > 255 || ip_octets[3] > 255     || ip_octets[0] &lt; 0 || ip_octets[1] &lt; 0 || ip_octets[2] &lt; 0 || ip_octets[3] &lt; 0)     return null;      return new Uint32Array([((ip_octets[0] &lt;&lt; 24) + (ip_octets[1] &lt;&lt; 16) + (ip_octets[2] &lt;&lt; 8) + ip_octets[3])])[0]; }  function ae(ai) {   let f = \"\";   for (let c = 0; c &lt; ai.length; c++)     f += String.fromCharCode(ai.charCodeAt(c) ^ (1 + (ai.length - c) % 32));      return f; }  function StringToHex(str) {   let hex = '';   for (let i = 0; i &lt; str.length; i++)     hex += str.charCodeAt(i).toString(16).padStart(2, '0');      return hex; }  function HexToString(hex) {   let str = '';   for (let i = 0; i &lt; hex.length; i += 2)     str += String.fromCharCode(parseInt(hex.substring(i, i + 2), 16));      return str; }  function CodeString(str) {   return StringToHex(ae(btoa(str))); }  function DecodeString(str) {   return atob(ae(HexToString(str))); }  InitPage();<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<p>\u041e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 19.05.2024 &#8212; \u043d\u043e\u0432\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u043d\u0430 <a href=\"https:\/\/github.com\/DenSyo77\/MikroTikControlPanel\" rel=\"noopener noreferrer nofollow\">GitHub<\/a><\/p>\n<p>\u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u0430\u0434\u0440\u0435\u0441\u043e\u0432 \u043e\u0442\u043a\u0440\u044b\u0442\u043e\u0439 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0442\u0435\u043f\u0435\u0440\u044c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0442\u043e\u0440\u043e\u043c. \u0414\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0441\u0432\u043e\u0435\u0433\u043e \u0442\u0435\u043a\u0443\u0449\u0435\u0433\u043e \u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e \u0430\u0434\u0440\u0435\u0441\u0430 \u0438 \u0441\u0435\u0440\u0432\u0438\u0441\u0430 Whois \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043b\u044e\u0431\u043e\u0439 API \u0438 \u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043e\u0442\u0432\u0435\u0442 \u043d\u0430 \u0441\u0432\u043e\u0451 \u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u0438\u0435 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u044f \u0448\u0430\u0431\u043b\u043e\u043d\u044b \u0432 \u0444\u0430\u0439\u043b\u0435 settings.js &#8212; \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0430\u0445 api.myip \u0438 api.whois. \u0412 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f\u0445 \u0437\u0430\u043f\u0440\u0435\u0449\u0435\u043d\u044b JS \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0448\u0430\u0431\u043b\u043e\u043d\u044b \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0447\u0435\u0440\u0435\u0437 \u0437\u0430\u043c\u0435\u043d\u0443 \u043a\u043b\u044e\u0447\u0435\u0432\u044b\u0445 \u0441\u043b\u043e\u0432. \u0415\u0441\u043b\u0438 \u043e\u0442\u0432\u0435\u0442 \u043d\u0430 \u0437\u0430\u043f\u0440\u043e\u0441 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0439, \u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0434\u043b\u044f \u0437\u0430\u043c\u0435\u043d\u044b \u043d\u0430 \u043d\u0435\u0433\u043e \u0432 \u0448\u0430\u0431\u043b\u043e\u043d\u0435 \u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 <code>[%answer%]<\/code>. \u0415\u0441\u043b\u0438 \u043e\u0442\u0432\u0435\u0442 JSON, \u0442\u043e \u043f\u043e\u0441\u043b\u0435 \u0441\u043b\u043e\u0432\u0430 answer \u0447\u0435\u0440\u0435\u0437 \u0442\u043e\u0447\u043a\u0443 \u043f\u0438\u0448\u0435\u043c \u0438\u043c\u0435\u043d\u0430 \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432 \u0438 \u0438\u043d\u0434\u0435\u043a\u0441\u044b \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u0432 <code>[%answer.fields.1.field%]<\/code>. API \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c, \u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c \u044d\u0442\u043e \u043d\u0435 \u043f\u043e\u0432\u043b\u0438\u044f\u0435\u0442. \u0415\u0441\u043b\u0438 API \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u0442 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u0443 \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u0432 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0430\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432, \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u043f\u043e\u043b\u0435 authorization \u0432 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0437\u0430\u043f\u0440\u043e\u0441\u0430, \u043f\u0440\u0438\u043c\u0435\u0440 \u0435\u0441\u0442\u044c \u0432 \u0444\u0430\u0439\u043b\u0435 settings.js. <\/p>\n<p>\u0423\u043b\u0443\u0447\u0448\u0435\u043d\u0430 \u0441\u0442\u0430\u0431\u0438\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u044b, \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0435 \u0442\u0435\u043a\u0443\u0449\u0438\u0435 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u044b \u0442\u0435\u043f\u0435\u0440\u044c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u044e\u0442\u0441\u044f \u0441\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u043f\u043e\u0440\u044f\u0434\u043a\u0430 \u043f\u0440\u0430\u0432\u0438\u043b mangle. \u0412 \u043f\u043e\u043b\u0435 Host \u043f\u0440\u0438 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0438 \u0430\u0434\u0440\u0435\u0441\u0430, \u0435\u0441\u043b\u0438 \u043d\u0430\u0436\u0430\u0442\u044c \u0432\u0432\u043e\u0434, \u0431\u0443\u0434\u0435\u0442 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0451\u043d \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u043c\u0430\u0440\u0448\u0440\u0443\u0442 \u0434\u043b\u044f \u0432\u0432\u0435\u0434\u0451\u043d\u043d\u043e\u0433\u043e \u0430\u0434\u0440\u0435\u0441\u0430. \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0435 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0430\u0434\u0440\u0435\u0441\u0430 \u0441\u0432\u043e\u0435\u0433\u043e \u0445\u043e\u0441\u0442\u0430 \u043c\u043e\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430\u043c\u0438 \u0440\u043e\u0443\u0442\u0435\u0440\u0430 \u043f\u043e \u0438\u043c\u0435\u043d\u0438 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f, \u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u044d\u0442\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0440\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u043c\u0435\u043d\u0438 \u043d\u0430 \u043e\u0434\u043d\u043e\u043c \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0435 &#8212; \u043f\u043e\u043a\u0430 \u0447\u0435\u0440\u043d\u043e\u0432\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442. \u0420\u0430\u0437 \u0432 \u0441\u0443\u0442\u043a\u0438 \u043e\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442\u0441\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u044c \u043d\u043e\u0432\u043e\u0439 \u0432\u0435\u0440\u0441\u0438\u0438 \u043d\u0430 GitHub, \u043e\u0442\u043a\u043b\u044e\u0447\u0430\u0435\u0442\u0441\u044f.<\/p>\n<p>\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0432\u0432\u0435\u0440\u0445\u0443 \u043e\u043a\u043d\u0430 \u0442\u0435\u043f\u0435\u0440\u044c \u0440\u0430\u0441\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u043f\u0430\u043d\u0435\u043b\u044c \u0441 \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u043c \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 \u0438 \u0441\u043f\u0438\u0441\u043a\u043e\u0432 \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u043e\u0432 \u0434\u043b\u044f \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0435\u0442\u0438 \u0438 \u0434\u043e\u043c\u0435\u043d\u043d\u044b\u0445 \u0438\u043c\u0451\u043d. \u0412 \u0444\u0430\u0439\u043b\u0435 settings.js \u0435\u0441\u0442\u044c \u0442\u043e\u043d\u043a\u0438\u0435 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043e\u043f\u0440\u043e\u0441\u043e\u0432 \u0440\u043e\u0443\u0442\u0435\u0440\u0430 \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0435 tweaks.<\/p>\n<p>\u0412 Mozilla \u043f\u043e\u043a\u0430 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u043e\u0441\u044c \u043f\u043e\u0431\u043e\u0440\u043e\u0442\u044c \u043e\u0448\u0438\u0431\u043a\u0443 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u043f\u043e HTTP \u043a API \u0440\u043e\u0443\u0442\u0435\u0440\u0430, \u0442\u0435\u043e\u0440\u0435\u0442\u0438\u0447\u0435\u0441\u043a\u0438, \u043f\u043e HTTPS \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c. <\/p>\n<\/div>\n<\/div>\n<\/div>\n<p><!----><!----><\/div>\n<p><!----><!----><br \/> \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\/791932\/\"> https:\/\/habr.com\/ru\/articles\/791932\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<div><!--[--><!--]--><\/div>\n<div id=\"post-content-body\">\n<div>\n<div class=\"article-formatted-body article-formatted-body article-formatted-body_version-2\">\n<div xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\">\n<figure class=\"full-width\"><\/figure>\n<p>\u041c\u043e\u044f \u0434\u043e\u043c\u0430\u0448\u043d\u044f\u044f \u0441\u0435\u0442\u044c \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u0445\u043e\u0441\u0442\u043e\u0432 \u043f\u043e \u0441\u0442\u0440\u0430\u043d\u0435 \u0438 \u043f\u043b\u0430\u043d\u0435\u0442\u0435, \u0442\u0440\u0438 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430 \u0437\u0430\u0445\u043e\u0434\u0438\u0442 \u043d\u0430 \u0440\u043e\u0443\u0442\u0435\u0440 \u2013 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u0430\u044f \u0442\u0440\u0435\u043d\u0438\u0440\u043e\u0432\u043e\u0447\u043d\u0430\u044f \u043f\u043b\u043e\u0449\u0430\u0434\u043a\u0430 \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u043d\u043e\u0432\u044b\u0445 \u0437\u043d\u0430\u043d\u0438\u0439. \u041c\u043e\u0436\u043d\u043e \u0432\u044b\u0439\u0442\u0438 \u0432 \u0431\u043e\u043b\u044c\u0448\u0443\u044e \u0441\u0435\u0442\u044c \u0438\u0437 \u043b\u044e\u0431\u043e\u0433\u043e \u0448\u043b\u044e\u0437\u0430 \u0441\u0432\u043e\u0435\u0439, \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0430 \u043f\u0440\u043e\u0441\u0442\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u043f\u0440\u0430\u0432\u0438\u043b \u2013 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0430\u0434\u0440\u0435\u0441 \u043d\u0430\u0445\u043e\u0434\u044f\u0449\u0438\u0439\u0441\u044f \u0432 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u043c \u0441\u043f\u0438\u0441\u043a\u0435 \u0430\u0434\u0440\u0435\u0441\u043e\u0432 \u0431\u0443\u0434\u0435\u0442 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d \u043d\u0430 \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0439 \u0432 \u043f\u0440\u0430\u0432\u0438\u043b\u0435 \u0444\u0430\u0439\u0440\u0432\u043e\u043b\u043b\u0430 \u0448\u043b\u044e\u0437, \u043b\u0438\u0431\u043e, \u043f\u0440\u0438 \u043e\u0431\u0440\u0430\u0449\u0435\u043d\u0438\u0438 \u043a \u0434\u043e\u043c\u0435\u043d\u0443 \u043d\u0430\u0445\u043e\u0434\u044f\u0449\u0435\u043c\u0443\u0441\u044f \u0432 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u043c \u0441\u043f\u0438\u0441\u043a\u0435 \u0430\u0434\u0440\u0435\u0441\u043e\u0432 \u0444\u0430\u0439\u0440\u0432\u043e\u043b\u043b\u0430 \u043c\u0430\u0440\u0448\u0440\u0443\u0442 \u043a \u043d\u0435\u043c\u0443 \u0431\u0443\u0434\u0435\u0442 \u0438\u0434\u0442\u0438 \u0447\u0435\u0440\u0435\u0437 \u0437\u0430\u0434\u0430\u043d\u043d\u044b\u0439 \u0432 \u043f\u0440\u0430\u0432\u0438\u043b\u0435 \u0448\u043b\u044e\u0437. \u0412\u0441\u0451 \u043f\u0440\u043e\u0441\u0442\u043e \u2013 \u0445\u043e\u0447\u0435\u0448\u044c \u043f\u043e\u0431\u0440\u043e\u0434\u0438\u0442\u044c \u043f\u043e \u0431\u043e\u043b\u044c\u0448\u043e\u0439 \u0441\u0435\u0442\u0438 \u0434\u0440\u0443\u0433\u0438\u043c\u0438 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430\u043c\u0438 \u2013 \u043f\u0435\u0440\u0435\u043d\u0451\u0441 \u0441\u0432\u043e\u0439 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0430\u0434\u0440\u0435\u0441 \u0432 \u043d\u0443\u0436\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a, \u0445\u043e\u0447\u0435\u0448\u044c, \u0447\u0442\u043e\u0431\u044b \u043c\u0430\u0440\u0448\u0440\u0443\u0442 \u043a \u0441\u0430\u0439\u0442\u0443 \u0431\u044b\u043b \u0432\u0441\u0435\u0433\u0434\u0430 \u0447\u0435\u0440\u0435\u0437 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u0439 \u0448\u043b\u044e\u0437 \u2013 \u0432\u043d\u0451\u0441 \u0435\u0433\u043e \u0434\u043e\u043c\u0435\u043d \u0438\u043b\u0438 \u0430\u0434\u0440\u0435\u0441 \u0432 \u043d\u0443\u0436\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a. \u0417\u043d\u0430\u0435\u0442\u0435, \u043a\u0430\u043a \u043c\u043d\u0435 \u043d\u0430\u0434\u043e\u0435\u043b\u043e \u0437\u0430\u0445\u043e\u0434\u0438\u0442\u044c \u0432 \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0430\u0442\u043e\u0440\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437, \u043a\u043e\u0433\u0434\u0430 \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0432\u043d\u0435\u0441\u0442\u0438 \u0430\u0434\u0440\u0435\u0441 \u0432 \u0441\u043f\u0438\u0441\u043e\u043a? \u041b\u0435\u043d\u044c \u0432\u0437\u044f\u043b\u0430 \u0432\u0435\u0440\u0445 \u0438 \u043d\u0430 \u0434\u043d\u044f\u0445 \u0437\u0430\u0441\u0442\u0430\u0432\u0438\u043b\u0430 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043f\u043b\u0430\u0433\u0438\u043d \u0434\u043b\u044f \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u043e\u0432 \u043e\u0431\u043b\u0435\u0433\u0447\u0430\u044e\u0449\u0438\u0439 \u044d\u0442\u0443 \u0440\u0430\u0431\u043e\u0442\u0443.<\/p>\n<p>\u0412\u043e\u0442 \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u0432\u0438\u0434\u0435\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u043d\u0430 \u043f\u043b\u0430\u0433\u0438\u043d \u0438 \u0435\u0433\u043e \u0440\u0430\u0431\u043e\u0442\u0443:<\/p>\n<div class=\"tm-iframe_temp\" data-src=\"https:\/\/embedd.srv.habr.com\/iframe\/65c31b1c6748d7d46f5a5cc5\" data-style=\"\" id=\"65c31b1c6748d7d46f5a5cc5\" width=\"\"><\/div>\n<p>\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0441\u043e\u0432\u0441\u0435\u043c \u043d\u0435 \u044d\u043d\u0442\u0435\u0440\u043f\u0440\u0430\u0439\u0437, \u0441\u043a\u043e\u0440\u0435\u0435, \u0430\u0434\u043c\u0438\u043d\u0441\u043a\u0438\u0439 \u0441\u043a\u0440\u0438\u043f\u0442 \u0441 \u043d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u044b\u043c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u043e\u043c. \u041f\u0443\u0431\u043b\u0438\u043a\u0443\u044e \u0441\u0435\u0439\u0447\u0430\u0441, \u043f\u043e\u043a\u0430 \u0434\u0430\u043d\u043d\u0430\u044f \u0432\u0435\u0440\u0441\u0438\u044f \u0443\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u0430 \u0434\u043b\u044f \u043b\u044e\u0431\u043e\u0433\u043e \u041c\u0438\u043a\u0440\u043e\u0442\u0438\u043a\u0430 \u0438 \u043c\u043e\u0436\u0435\u0442 \u043a\u043e\u043c\u0443-\u0442\u043e \u043e\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0439, \u0434\u0430\u043b\u044c\u0448\u0435 \u043c\u043e\u0433\u0443 \u0443\u0439\u0442\u0438 \u0432 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0433\u043e API \u043d\u0430 \u0441\u0432\u043e\u0451\u043c web-\u0441\u0435\u0440\u0432\u0435\u0440\u0435, \u0438 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u0441\u0442\u0430\u043d\u0435\u0442 \u043d\u0430\u043c\u043d\u043e\u0433\u043e \u0431\u043e\u043b\u0435\u0435 \u0442\u044f\u0436\u0435\u043b\u043e\u0432\u0435\u0441\u043d\u044b\u043c \u0438 \u0441\u043b\u043e\u0436\u043d\u044b\u043c. \u041f\u043b\u0430\u0433\u0438\u043d \u0434\u043b\u044f \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430 \u043f\u0438\u0441\u0430\u043b \u043f\u0435\u0440\u0432\u044b\u0439 \u0440\u0430\u0437, \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0441\u044f \u0441\u0442\u0430\u0442\u044c\u0451\u0439: <a href=\"https:\/\/habr.com\/ru\/articles\/703330\/\" rel=\"noopener noreferrer nofollow\">https:\/\/habr.com\/ru\/articles\/703330\/<\/a>, \u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u0441\u043f\u0430\u0441\u0438\u0431\u043e! \u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430 \u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0442\u044c \u043d\u0435 \u0431\u0443\u0434\u0443, \u043e\u0431 \u044d\u0442\u043e\u043c \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u0432 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435. \u041f\u043b\u0430\u0433\u0438\u043d \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430\u0445 Chrome \u0438 Edge \u2013 \u0434\u043b\u044f \u0441\u0451\u0440\u0444\u0438\u043d\u0433\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e \u0438\u043c\u0435\u043d\u043d\u043e \u0438\u0445, Mozilla \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u0434\u043b\u044f \u0432\u0441\u044f\u043a\u043e\u0433\u043e. \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e, \u043f\u043e\u0437\u0436\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u044e \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0443 \u0434\u0440\u0443\u0433\u0438\u0445 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u043e\u0432.<\/p>\n<p>\u041f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441 \u0440\u043e\u0443\u0442\u0435\u0440\u0430\u043c\u0438 MikroTik \u043f\u043e REST API, \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0441\u0442\u043e\u0438\u0442 \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u043d\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u0435 \u0432 \u0433\u0440\u0443\u043f\u043f\u0435 \u0441 \u043f\u0440\u0430\u0432\u0430\u043c\u0438: read, write, api, rest-api, \u0438 \u043f\u0440\u0430\u0432\u043e\u043c \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u0441 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u043e\u0433\u043e \u0441\u043f\u0438\u0441\u043a\u0430 \u0445\u043e\u0441\u0442\u043e\u0432. \u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430\u043c\u0438 \u0434\u043b\u044f \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0430\u0434\u0440\u0435\u0441\u0430 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u043c\u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u0430\u043c\u0438 \u0444\u0430\u0439\u0440\u0432\u043e\u043b\u043b\u0430:<\/p>\n<pre><code>\/ip firewall mangle chain=prerouting action=route passthrough=no route-dst=GATEWAY_ADDRESS src-address-list=routed-mos dst-address-list=!not-routed \/ip firewall mangle chain=prerouting action=mark-routing new-routing-mark=route-lte passthrough=no src-address-list=routed-lte dst-address-list=!not-routed<\/code><\/pre>\n<p>\u041a\u043e\u0433\u0434\u0430 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0430\u0434\u0440\u0435\u0441 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0432 \u043e\u0434\u043d\u043e\u043c \u0438\u0437 \u043e\u043f\u0438\u0441\u0430\u043d\u043d\u044b\u0445 \u0441\u043f\u0438\u0441\u043a\u043e\u0432, \u0435\u0433\u043e \u0438\u0441\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u0442\u0440\u0430\u0444\u0438\u043a \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0442\u0441\u044f \u043d\u0430 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0439 \u0448\u043b\u044e\u0437. \u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0437\u0430\u0432\u0435\u0441\u0442\u0438 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u043d\u0430 \u0444\u0430\u0439\u0440\u0432\u043e\u043b\u043b\u0435 \u043d\u0435\u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0438\u0440\u0443\u0435\u043c\u044b\u0445 \u0430\u0434\u0440\u0435\u0441\u043e\u0432, \u0432 \u043d\u0435\u0433\u043e \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0432\u0441\u0435 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u0435\u0442\u0438 \u0438 \u0432\u043d\u0435\u0448\u043d\u0438\u0435 \u0430\u0434\u0440\u0435\u0441\u0430 \u0432\u0441\u0435\u0445 \u0441\u0432\u043e\u0438\u0445 \u0445\u043e\u0441\u0442\u043e\u0432 \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u0432\u0430\u0448 \u0440\u043e\u0443\u0442\u0435\u0440 \u0443\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f, \u0447\u0442\u043e\u0431\u044b \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043a\u043e\u043b\u043b\u0438\u0437\u0438\u0438. \u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430\u043c\u0438 \u0434\u043b\u044f \u0432\u043d\u0435\u0448\u043d\u0438\u0445 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0442\u0430\u043a\u0438\u043c\u0438 \u043f\u0440\u0430\u0432\u0438\u043b\u0430\u043c\u0438:<\/p>\n<pre><code>\/ip firewall mangle chain=prerouting action=route passthrough=no route-dst=GATEWAY_ADDRESS dst-address-list=mos-domains<\/code><\/pre>\n<p>\u041a\u043e\u0433\u0434\u0430 \u043e\u0431\u0440\u0430\u0449\u0430\u0435\u043c\u0441\u044f \u043a \u0445\u043e\u0441\u0442\u0443 \u0438\u0437 \u0437\u0430\u0434\u0430\u043d\u043d\u043e\u0433\u043e \u0441\u043f\u0438\u0441\u043a\u0430, \u0442\u0440\u0430\u0444\u0438\u043a \u043a \u043d\u0435\u043c\u0443 \u043f\u043e\u0439\u0434\u0451\u0442 \u0447\u0435\u0440\u0435\u0437 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0439 \u0448\u043b\u044e\u0437. \u0417\u0434\u0435\u0441\u044c \u0435\u0441\u0442\u044c \u043c\u043d\u043e\u0433\u043e \u0442\u043e\u043d\u043a\u043e\u0441\u0442\u0435\u0439, \u043c\u043e\u0436\u043d\u043e \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0430\u0434\u0440\u0435\u0441 \u0432\u043d\u0435\u0448\u043d\u0435\u0433\u043e \u0445\u043e\u0441\u0442\u0430, \u043b\u0438\u0431\u043e \u0435\u0433\u043e \u0434\u043e\u043c\u0435\u043d\u043d\u043e\u0435 \u0438\u043c\u044f \u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0441\u0430\u043c\u0430 \u0441\u043e\u0437\u0434\u0430\u0441\u0442 \u0441\u043f\u0438\u0441\u043e\u043a \u0430\u0434\u0440\u0435\u0441\u043e\u0432 \u043e\u0442\u043a\u043b\u0438\u043a\u0430\u044e\u0449\u0438\u0445\u0441\u044f \u043d\u0430 \u044d\u0442\u043e \u0438\u043c\u044f. \u0414\u043e\u043c\u0435\u043d\u043d\u043e\u0435 \u0438\u043c\u044f \u0432 \u0441\u043f\u0438\u0441\u043a\u0435 \u0444\u0430\u0439\u0440\u0432\u043e\u043b\u043b\u0430 \u0434\u0430\u0451\u0442 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0443 \u043d\u0430 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432\u043e, \u043f\u043e\u0440\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0431\u0443\u043a\u0432\u0430\u043b\u044c\u043d\u043e \u043a\u0430\u0436\u0434\u0443\u044e \u0441\u0435\u043a\u0443\u043d\u0434\u0443 \u043e\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442 \u0430\u0434\u0440\u0435\u0441\u0430 \u0445\u043e\u0441\u0442\u0430, \u043d\u0430 \u0441\u043b\u0430\u0431\u044b\u0445 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430\u0445 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u0441 \u0442\u0430\u043a\u0438\u043c \u043d\u0435 \u0441\u043f\u0440\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f. \u0425\u043e\u0440\u043e\u0448\u0438\u0439 \u043f\u0440\u0438\u043c\u0435\u0440 \u0442\u0430\u043a\u043e\u0433\u043e \u0445\u043e\u0441\u0442\u0430 \u0441\u0430\u0439\u0442 \u2013 <a href=\"http:\/\/www.quora.com\" rel=\"noopener noreferrer nofollow\">www.quora.com<\/a>, \u0438, \u043d\u0430\u0432\u0435\u0440\u043d\u043e\u0435, \u043b\u044e\u0431\u044b\u0435 \u0434\u0440\u0443\u0433\u0438\u0435 \u0441\u043e\u0446\u0441\u0435\u0442\u0438, \u0441 \u043a\u043e\u0438\u043c\u0438 \u043d\u0435 \u0437\u043d\u0430\u043a\u043e\u043c, \u043d\u043e \u043f\u0440\u0438\u043c\u0435\u0440 \u043f\u043e\u0434\u0432\u0435\u0440\u043d\u0443\u043b\u0441\u044f \u0433\u043e\u0434\u043d\u044b\u0439. \u041e\u0434\u043d\u0430\u043a\u043e \u0441 \u0442\u0430\u043a\u0438\u043c\u0438 \u0440\u0435\u0441\u0443\u0440\u0441\u0430\u043c\u0438 \u043d\u0435 \u0441\u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u0440\u043e\u0441\u0442\u043e\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0438\u0445 \u0442\u0435\u043a\u0443\u0449\u0438\u0445 \u0430\u0434\u0440\u0435\u0441\u043e\u0432 \u0432 \u0441\u043f\u0438\u0441\u043e\u043a \u0444\u0430\u0439\u0440\u0432\u043e\u043b\u043b\u0430, \u043e\u043d\u0438 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u043c\u0435\u043d\u044f\u044e\u0442\u0441\u044f, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u044e\u0442\u0441\u044f, \u0442\u0443\u0442 \u043b\u0438\u0431\u043e \u0441\u043c\u0438\u0440\u0438\u0442\u044c\u0441\u044f \u0441 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u043e\u0439 \u043d\u0430 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440 \u0438 \u0438\u0437\u0431\u0438\u0440\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0434\u043e\u043c\u0435\u043d\u043d\u044b\u0435 \u0438\u043c\u0435\u043d\u0430 \u0432 \u0441\u0432\u043e\u0438 \u0441\u043f\u0438\u0441\u043a\u0438 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u0438\u0440\u0443\u044f \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0443, \u043b\u0438\u0431\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0432 \u0441\u043f\u0438\u0441\u043a\u0438 \u043f\u0443\u043b\u044b \u0430\u0434\u0440\u0435\u0441\u043e\u0432 \u0437\u0430\u043c\u0435\u0447\u0435\u043d\u043d\u044b\u0435 \u0437\u0430 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u043c.<\/p>\n<p>\u0418\u0442\u0430\u043a, \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e, \u043f\u043b\u0430\u0433\u0438\u043d. \u041a\u043e\u0433\u0434\u0430 \u043e\u043d \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d \u0432 \u043f\u0430\u043d\u0435\u043b\u044c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u043f\u0440\u0438 \u0432\u044b\u0437\u043e\u0432\u0435 \u043e\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u0442 \u0443 \u0440\u043e\u0443\u0442\u0435\u0440\u0430 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u043c\u0430\u0440\u0448\u0440\u0443\u0442 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0430\u0434\u0440\u0435\u0441\u0430 \u0438 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u043c\u0430\u0440\u0448\u0440\u0443\u0442 \u0434\u043e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043d\u0430 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0439 \u0432\u043a\u043b\u0430\u0434\u043a\u0435 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430, \u0438 \u0434\u0430\u0451\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0438 \u0442\u043e \u0438 \u0434\u0440\u0443\u0433\u043e\u0435 \u043e\u0434\u043d\u0438\u043c \u043d\u0430\u0436\u0430\u0442\u0438\u0435\u043c. \u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e\u0431 \u0430\u0434\u0440\u0435\u0441\u0430\u0445 \u0431\u0435\u0440\u0451\u0442\u0441\u044f \u0441 \u043c\u043e\u0435\u0433\u043e API \u043e \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0443\u0436\u0435 <a href=\"https:\/\/habr.com\/ru\/articles\/770546\/\" rel=\"noopener noreferrer nofollow\"><u>\u043f\u0438\u0441\u0430\u043b<\/u><\/a>, \u0437\u0430\u0431\u0430\u0432\u0430 \u043e\u0431\u0440\u0435\u043b\u0430 \u043f\u043e\u043b\u044c\u0437\u0443. \u041c\u043e\u0436\u0435\u0442\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435\u043c \u0441 \u044d\u0442\u0438\u043c API, \u044f \u0438\u043d\u043e\u0433\u0434\u0430 \u0447\u0438\u0442\u0430\u044e \u043b\u043e\u0433\u0438 \u043f\u043e \u0445\u043e\u0437\u044f\u0439\u0441\u043a\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u044f \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0445\u043e\u0441\u0442\u0438\u043d\u0433\u0430 \u0438 \u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c \u0431\u044d\u043a\u0430, \u0431\u043e\u043b\u044c\u0448\u0435 \u0432\u0430\u043c \u044d\u0442\u043e \u043d\u0438\u0447\u0435\u043c \u043d\u0435 \u0433\u0440\u043e\u0437\u0438\u0442. \u041d\u0435 \u0441\u043b\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0430 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u043b\u044e\u0431\u043e\u0433\u043e \u0434\u0440\u0443\u0433\u043e\u0433\u043e API.<\/p>\n<p>\u0414\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0437\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0444\u0430\u0439\u043b manifest.json \u2013 \u0432 \u043c\u0430\u0441\u0441\u0438\u0432 &#171;host_permissions&#187; \u043d\u0430\u0434\u043e \u0432\u043d\u0435\u0441\u0442\u0438 \u0430\u0434\u0440\u0435\u0441 \u0441\u0432\u043e\u0435\u0433\u043e \u0440\u043e\u0443\u0442\u0435\u0440\u0430: &#171;*:\/\/192.168.88.1\/&#187;. \u0412 \u0444\u0430\u0439\u043b\u0435 settings.js \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0437\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043c\u0430\u0441\u0441\u0438\u0432\u044b &#171;routes&#187; \u0438 &#171;domains&#187; \u2013 \u043a\u043b\u044e\u0447\u0438 \u043c\u0430\u0441\u0441\u0438\u0432\u0430, \u044d\u0442\u043e \u0442\u043e, \u0447\u0442\u043e \u043e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u0442\u0441\u044f \u0432 \u0441\u043f\u0438\u0441\u043a\u0435 \u0432\u044b\u0431\u043e\u0440\u0430 \u2013 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u043b\u044c\u043d\u043e\u0435 \u043d\u0430\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430, \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u2013 \u0438\u043c\u0435\u043d\u0430 \u0432\u0430\u0448\u0438\u0445 \u0441\u043f\u0438\u0441\u043a\u043e\u0432 \u0430\u0434\u0440\u0435\u0441\u043e\u0432 \u043d\u0430 \u0444\u0430\u0439\u0440\u0432\u043e\u043b\u043b\u0435. \u041f\u0443\u0441\u0442\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0438\u043c\u0435\u043d\u0438 \u0441\u043f\u0438\u0441\u043a\u0430 \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0442\u0435\u043a\u0443\u0449\u0438\u0445 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u043e\u0432 \u0434\u043b\u044f \u0434\u043e\u043c\u0435\u043d\u0430 \u0438 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 \u0442\u0435\u043a\u0443\u0449\u0438\u0445 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u043e\u0432 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0430\u0434\u0440\u0435\u0441\u0430 \u2013 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0430\u0434\u0440\u0435\u0441 \u043d\u0435 \u0443\u0434\u0430\u043b\u044f\u0435\u0442\u0441\u044f \u0438\u0437 \u0441\u043f\u0438\u0441\u043a\u0430 \u043f\u0440\u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0435 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043c\u0430\u0440\u0448\u0440\u0443\u0442, \u043e\u043d \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043d\u0435\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u043c. \u0415\u0441\u043b\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0438\u0442 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043a\u043e\u043f\u0438\u0439 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0430\u0434\u0440\u0435\u0441\u0430 \u0432 \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u043d\u044b\u0445 \u0441\u043f\u0438\u0441\u043a\u0430\u0445 \u0444\u0430\u0439\u0440\u0432\u043e\u043b\u043b\u0430, \u0432\u0441\u0435 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u043c\u044b \u043a \u043f\u0435\u0440\u0432\u043e\u043c\u0443 \u0438\u0437 \u043d\u0438\u0445, \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u044b. \u0415\u0441\u043b\u0438 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0438\u0437\u0438\u0440\u0443\u0435\u043c\u044b\u0439 \u0434\u043e\u043c\u0435\u043d \u0438\u043b\u0438 \u0435\u0433\u043e \u0430\u0434\u0440\u0435\u0441 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d, \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0435\u0433\u043e \u0443\u0434\u0430\u043b\u044f\u0442\u044c \u043f\u0440\u0438 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0438 \u0435\u0433\u043e \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430 \u0438\u0441\u0445\u043e\u0434\u044f \u0438\u0437 \u0442\u043e\u0433\u043e, \u0447\u0442\u043e \u0432\u044b \u0432\u0438\u0434\u0438\u043c\u043e \u0437\u0430\u0447\u0435\u043c-\u0442\u043e \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u0435\u0433\u043e \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u043b\u0438.<\/p>\n<p>\u0417\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u043c\u0430\u0441\u0441\u0438\u0432\u044b &#171;exclude&#187; \u0438 &#171;notrouted&#187; \u2013 \u043e\u043d\u0438 \u0441\u0443\u0442\u044c \u043e\u0434\u043d\u043e \u0438 \u0442\u043e \u0436\u0435, \u0430\u0434\u0440\u0435\u0441\u0430 \u0438 \u043f\u043e\u0434\u0441\u0435\u0442\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0434\u043e\u043b\u0436\u043d\u043e \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438 \u043d\u0435 \u043d\u0430\u0437\u043d\u0430\u0447\u0430\u0442\u044c \u0438\u043c \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u044b. \u0420\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u044b \u043f\u043e \u0441\u0443\u0449\u043d\u043e\u0441\u0442\u044f\u043c, &#171;notrouted&#187; \u2013 \u0432\u0441\u0435 \u0441\u043b\u0443\u0436\u0435\u0431\u043d\u044b\u0435 \u0441\u0435\u0442\u0438, &#171;exclude&#187; \u2013 \u0432\u043d\u0435\u0448\u043d\u0438\u0435 \u0430\u0434\u0440\u0435\u0441\u0430 \u0445\u043e\u0441\u0442\u043e\u0432 \u0441\u0435\u0442\u0438, \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u0434\u0438\u043d \u0438\u0437 \u044d\u0442\u0438\u0445 \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u0432, \u043d\u0430 \u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c \u044d\u0442\u043e \u043d\u0435 \u043f\u043e\u0432\u043b\u0438\u044f\u0435\u0442. \u041a\u043b\u044e\u0447\u0438 \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u0432 \u2013 \u0430\u0434\u0440\u0435\u0441\u0430 \u043f\u043e\u0434\u0441\u0435\u0442\u0435\u0439 (\u043f\u0435\u0440\u0432\u044b\u0439 \u0430\u0434\u0440\u0435\u0441 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0430 \u043e\u0431\u0440\u0430\u0437\u0443\u0435\u043c\u043e\u0433\u043e \u043f\u043e\u0434\u0441\u0435\u0442\u044c\u044e), \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u2013 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u0440\u0435\u0444\u0438\u043a\u0441\u0430 \u043f\u043e\u0434\u0441\u0435\u0442\u0438. \u0412 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d \u043f\u043e\u0438\u0441\u043a \u0430\u0434\u0440\u0435\u0441\u0430 \u043f\u043e \u043a\u043b\u044e\u0447\u0443 \u0430\u0441\u0441\u043e\u0446\u0438\u0430\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u2013 \u043f\u043e \u0441\u0443\u0442\u0438, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c \u0433\u043e\u0442\u043e\u0432\u044b\u0435 \u0445\u044d\u0448\u0438 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0435\u043c\u044b\u0435 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u043e\u0439, \u043e\u0447\u0435\u043d\u044c \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0440\u0435\u0448\u0435\u043d\u0438\u0435, \u043d\u043e \u043e\u0446\u0435\u043d\u0438\u0442\u044c \u0435\u0433\u043e \u043c\u043e\u0436\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u043d\u0430 \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u0431\u0430\u0437\u0430\u0445 \u043f\u043e\u0434\u0441\u0435\u0442\u0435\u0439.<\/p>\n<p>\u041e\u0441\u0442\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043c\u043e\u0436\u043d\u043e \u043d\u0435 \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0432 \u0444\u0430\u0439\u043b\u0435, \u0430 \u0437\u0430\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0438\u0445 \u0443\u0436\u0435 \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u0438 \u043e\u043d\u0438 \u0431\u0443\u0434\u0443\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u044b \u0432 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u043c \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430. \u0415\u0441\u0442\u044c \u0442\u0440\u0438 \u0441\u043f\u043e\u0441\u043e\u0431\u0430 \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0443\u0447\u0435\u0442\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f API \u0440\u043e\u0443\u0442\u0435\u0440\u0430: \u0432 \u043e\u0442\u043a\u0440\u044b\u0442\u043e\u043c \u0432\u0438\u0434\u0435 \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0438\u0445 \u0432 \u0444\u0430\u0439\u043b\u0435 settings.js \u0432 \u043f\u043e\u043b\u044f\u0445 &#171;user&#187; \u0438 &#171;password&#187; \u2013 \u043c\u043e\u0436\u043d\u043e, \u043d\u043e \u043b\u0443\u0447\u0448\u0435 \u0442\u0430\u043a \u043d\u0435 \u0434\u0435\u043b\u0430\u0442\u044c, \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u043e\u0442\u043b\u0430\u0434\u043a\u0438. \u041b\u0443\u0447\u0448\u0435 \u043e\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u044d\u0442\u0438 \u043f\u043e\u043b\u044f \u043f\u0443\u0441\u0442\u044b\u043c\u0438, \u0432\u043d\u0435\u0441\u0442\u0438 \u0438\u043c\u044f \u0438 \u043f\u0430\u0440\u043e\u043b\u044c \u0432 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438, \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0438 \u043e\u043d\u0438 \u0431\u0443\u0434\u0443\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u044b \u0432 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u043c \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u044f \u0432 \u043f\u043e\u043b\u044f\u0445: &#171;an&#187; (\u0438\u043c\u044f) \u0438 &#171;ap&#187; (\u043f\u0430\u0440\u043e\u043b\u044c), \u0432 \u0441\u043b\u0435\u0433\u043a\u0430 \u0437\u0430\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c \u0432\u0438\u0434\u0435, \u0431\u0443\u0434\u0435\u0442 \u0441\u043f\u043e\u043a\u043e\u0439\u043d\u0435\u0435. \u0410 \u043c\u043e\u0436\u043d\u043e \u0441\u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u0438 \u043f\u043e\u043b\u044f \u0441 \u0437\u0430\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u043c\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f\u043c\u0438 \u0438\u0437 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430 \u0438 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0438\u0445 \u0432 \u0444\u0430\u0439\u043b settings.js \u0432\u043c\u0435\u0441\u0442\u0435 \u0441 &#171;user&#187; \u0438 &#171;password&#187; (&#171;user&#187; \u0438 &#171;password&#187; \u0438\u043c\u0435\u044e\u0442 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442 \u0434\u043b\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u0434\u0435\u0440\u0436\u0438\u0442\u0435 \u0438\u0445 \u043f\u0443\u0441\u0442\u044b\u043c\u0438, \u0435\u0441\u043b\u0438 \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435), \u043d\u043e \u0442\u043e\u0433\u0434\u0430 \u043d\u0430\u0434\u043e \u043e\u0447\u0438\u0441\u0442\u0438\u0442\u044c \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435, \u043e\u043d\u043e \u0438\u043c\u0435\u0435\u0442 \u043f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442 \u0434\u043b\u044f \u043f\u043e\u043b\u0435\u0439 &#171;an&#187; \u0438 &#171;ap&#187;.<\/p>\n<p>\u041a\u0430\u043a \u0437\u0430\u043a\u043e\u043d\u0447\u0438\u043b\u0438 \u0441 \u0437\u0430\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435\u043c \u0444\u0430\u0439\u043b\u0430 settings.js, \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0440\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u0438\u0435 \u0432 \u0431\u0440\u0430\u0443\u0437\u0435\u0440, \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u043c \u0435\u0433\u043e \u043d\u0430 \u043f\u0430\u043d\u0435\u043b\u044c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432, \u0437\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c \u0438 \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u043e\u0441\u0442\u0430\u0432\u0448\u0443\u044e\u0441\u044f \u0447\u0430\u0441\u0442\u044c: \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0430\u0434\u0440\u0435\u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u0439 \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e (\u0432\u0430\u0448\u0430 \u0441\u0442\u0430\u043d\u0446\u0438\u044f), \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c \u0434\u043e\u043c\u0435\u043d\u044b \u0432 \u0441\u043f\u0438\u0441\u043a\u0438 \u0444\u0430\u0439\u0440\u0432\u043e\u043b\u043b\u0430 \u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0438\u043b\u0438 \u043d\u0435\u0442, \u0432\u0440\u0435\u043c\u044f \u0436\u0438\u0437\u043d\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u043d\u043e\u0433\u043e \u0434\u043e\u043c\u0435\u043d\u0430 \u0432 \u0441\u043f\u0438\u0441\u043e\u043a. \u0421\u043f\u043e\u0441\u043e\u0431 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u043e\u043c\u0435\u043d\u0430 \u0432 \u0441\u043f\u0438\u0441\u043e\u043a: Top \u2013 \u0442\u043e\u043b\u044c\u043a\u043e \u0432\u0435\u0440\u0445\u043d\u0438\u0439 \u0434\u043e\u043c\u0435\u043d, WWW \u2013 \u0435\u0441\u043b\u0438 \u0432\u0435\u0440\u0445\u043d\u0438\u0439 \u0434\u043e\u043c\u0435\u043d \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442\u0441\u044f \u0432 \u0441\u043f\u0438\u0441\u043a\u0435 &#171;www&#187;, \u0432 \u0441\u043f\u0438\u0441\u043e\u043a \u0444\u0430\u0439\u0440\u0432\u043e\u043b\u043b\u0430 \u0431\u0443\u0434\u0435\u0442 \u0442\u0430\u043a \u0436\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0437\u0430 \u043d\u0438\u043c \u0434\u043e\u043c\u0435\u043d, All \u2013 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 \u0441\u043f\u0438\u0441\u043e\u043a \u0432\u0441\u0435 \u0434\u043e\u043c\u0435\u043d\u044b \u043f\u043e \u0432\u0442\u043e\u0440\u043e\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c. \u041c\u0435\u0442\u043e\u0434 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u043e\u043c\u0435\u043d\u0430: Domain \u2013 \u0434\u043e\u043c\u0435\u043d \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d \u043f\u043e \u0438\u043c\u0435\u043d\u0438, Address \u2013 \u043f\u043e \u0432\u0441\u0435\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u044b\u043c \u0430\u0434\u0440\u0435\u0441\u0430\u043c \u043d\u0430 \u0434\u043e\u043c\u0435\u043d\u0435 \u2013 \u0445\u043e\u0440\u043e\u0448\u0438\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442, \u043d\u043e \u0434\u0430\u043b\u0435\u043a\u043e \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u043f\u0440\u0438 \u0431\u043e\u0433\u0430\u0442\u043e\u043c \u043d\u0430\u0431\u043e\u0440\u0435 \u0430\u0434\u0440\u0435\u0441\u043e\u0432 \u043d\u0430 \u0445\u043e\u0441\u0442\u0435 \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0430\u0441\u0442\u044c \u0438\u0437 \u043d\u0438\u0445.<\/p>\n<p>\u0420\u0430\u0441\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u0440\u0430\u0437\u0434\u0435\u043b Settings, \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u0430\u0434\u0440\u0435\u0441 \u0440\u043e\u0443\u0442\u0435\u0440\u0430, \u0438\u043c\u044f \u0438 \u043f\u0430\u0440\u043e\u043b\u044c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f API, \u0432\u044b\u0431\u0438\u0440\u0430\u0435\u043c \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u044b \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u043b\u0438, \u0437\u0430\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u0441\u043f\u0438\u0441\u043e\u043a \u0434\u043e\u043c\u0435\u043d\u043e\u0432 \u0432\u0435\u0440\u0445\u043d\u0435\u0433\u043e \u0443\u0440\u043e\u0432\u043d\u044f \u043d\u0430 \u0441\u0432\u043e\u0439 \u0432\u043a\u0443\u0441 \u0438 \u0436\u043c\u0451\u043c \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c. \u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u0437\u0430\u043a\u0440\u043e\u0435\u043c \u0438 \u0441\u043d\u043e\u0432\u0430 \u043e\u0442\u043a\u0440\u043e\u0435\u043c \u043f\u043b\u0430\u0433\u0438\u043d, \u0442\u0435\u043f\u0435\u0440\u044c \u043e\u043d \u0433\u043e\u0442\u043e\u0432 \u043a \u0440\u0430\u0431\u043e\u0442\u0435.<\/p>\n<p>\u041a\u043e\u0433\u0434\u0430 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0430\u0434\u0440\u0435\u0441 \u0432 \u0441\u043f\u0438\u0441\u043e\u043a \u0441 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u043e\u043c, \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0430\u0434\u0440\u0435\u0441\u0430 \u0441 \u0432\u0435\u0431-\u043f\u043e\u0440\u0442\u0430\u043c\u0438 API \u0445\u043e\u0441\u0442\u0430 \u0438 \u0445\u043e\u0441\u0442\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0432\u043a\u043b\u0430\u0434\u043a\u0438 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430 \u2013 \u044d\u0442\u043e \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u0431\u044b\u0441\u0442\u0440\u0435\u0435 \u043f\u0440\u043e\u0438\u0437\u043e\u0439\u0442\u0438 \u043f\u0435\u0440\u0435\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044e \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430, \u043d\u043e \u043d\u0435 \u0432\u0441\u0435\u0433\u0434\u0430 \u0432\u0441\u0451 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0431\u044b\u0441\u0442\u0440\u043e, \u0441 \u044d\u0442\u0438\u043c \u043c\u043e\u043c\u0435\u043d\u0442\u043e\u043c \u0435\u0449\u0451 \u043d\u0430\u0434\u043e \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c\u0441\u044f, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043d\u0430 Yota \u0443 \u043c\u0435\u043d\u044f \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 4-5 \u0441\u0435\u043a\u0443\u043d\u0434, \u043a\u0430\u043a \u044f \u043d\u0435 \u0441\u0442\u0430\u0440\u0430\u043b\u0441\u044f \u043f\u0440\u0438\u0431\u0438\u0442\u044c \u0432\u0441\u0435 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f. \u041e\u0434\u043d\u0430\u043a\u043e \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u043e\u043d\u0430\u043b \u044d\u0442\u043e \u043d\u0435 \u0432\u043b\u0438\u044f\u0435\u0442, \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043c\u0435\u0436\u0434\u0443 \u043f\u0440\u043e\u0432\u043e\u0434\u043d\u044b\u043c\u0438 \u0441\u043e\u0435\u0434\u0438\u043d\u0435\u043d\u0438\u044f\u043c\u0438 \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0431\u044b\u0441\u0442\u0440\u043e.<\/p>\n<p>\u041f\u0440\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0438 \u0434\u043e\u043c\u0435\u043d\u0430 \u0432 \u0441\u043f\u0438\u0441\u043e\u043a \u0441 \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u043e\u043c, \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0435 \u0432\u0441\u0435\u0445 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0439 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u0441\u0435\u0442\u0438 \u043d\u0430 \u0432\u0435\u0431-\u043f\u043e\u0440\u0442\u044b \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c\u044b\u0445 \u0434\u043e\u043c\u0435\u043d\u043e\u0432, \u044d\u0442\u043e \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0443\u0441\u043a\u043e\u0440\u044f\u0435\u0442 \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043d\u0430 \u043d\u043e\u0432\u044b\u0439 \u043c\u0430\u0440\u0448\u0440\u0443\u0442. \u041f\u043e\u0441\u043b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u043c\u0430\u0440\u0448\u0440\u0443\u0442\u0430 \u0432\u044b\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0432\u043a\u043b\u0430\u0434\u043a\u0438, \u0441\u0440\u0430\u0437\u0443 \u0432\u0438\u0434\u0438\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442.<\/p>\n<details class=\"spoiler\">\n<summary>\u0424\u0430\u0439\u043b manifest.json<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"json\">{   \"name\": \"MikroTik Control Panel\",   \"description\": \"MikroTik Control Panel\",   \"version\": \"1.0\",   \"manifest_version\": 3,     \"icons\": {       \"16\": \"icons\/logo16.png\",       \"32\": \"icons\/logo32.png\",       \"48\": \"icons\/logo48.png\",       \"128\": \"icons\/logo128.png\"   },   \"action\": {     \"default_popup\": \"popup.html\"   },   \"permissions\": [     \"scripting\",     \"activeTab\",     \"storage\"   ],   \"host_permissions\": [     \"*:\/\/192.168.88.1\/\"   ],   \"background\": {} }<\/code><\/pre>\n<\/p>\n<\/div>\n<\/details>\n<details class=\"spoiler\">\n<summary>\u0424\u0430\u0439\u043b setting.js<\/summary>\n<div class=\"spoiler__content\">\n<pre><code class=\"javascript\">const settings = {   \"localhost\": \"192.168.88.77\",   \"router\": \"192.168.88.1\",   \"protocol\": \"http\",   \"user\": \"\",   \"password\": \"\",   \"defaults\": {     \"dynamic\": false,     \"time\": \"02:00:00\",     \"www\": \"www,web,wap,m\",     \"what\": \"www\",     \"how\": \"name\"   },   \"routes\": {     \"Default\": \"\",     \"Yota\": \"routed-lte\",     \"Rostelecom\": \"routed-dsl\",     \"Saint Petersburg\": \"routed-spb\",     \"Moscow\": \"routed-mos\",     \"New York\": \"routed-usa\",     \"Singapore\": \"routed-sin\"   },   \"domains\": {     \"Default\": \"\",     \"Moscow\": \"mos-domains\",     \"New York\": \"usa-domains\",     \"Singapore\": \"sin-domains\"   },   \"exclude\": {     \"1.1.1.1\": 32,     \"8.8.8.8\": 32   },   \"notrouted\": {     \"0.0.0.0\": 8,     \"10.0.0.0\": 8,     \"100.64.0.0\": 10,     \"127.0.0.0\": 8,     \"169.254.0.0\": 16,     \"172.16.0.0\": 12,     \"192.168.0.0\": 16,     \"192.0.0.0\": 24,     \"192.0.2.0\":<\/code><\/pre>\n<\/div>\n<\/details>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-367512","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/367512","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=367512"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/367512\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=367512"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=367512"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=367512"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}