рдХрд╕реНрдЯрдо рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреНрд░реЙрд╕-рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╢реЗрд▓ рдмрдирд╛рдирд╛

рдирдорд╕реНрддреЗ рдкреНрд░рд┐рдп рд╣рд░рдЬрд┐рддреЗрд▓реАред Habr├й рдкрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ (рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ) рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдкреЛрд╕реНрдЯ рдереЗ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЙрдиреНрд╣реЛрдВрдиреЗ рдХреЗрд╡рд▓ рдпрд╣ рджрд┐рдЦрд╛рдпрд╛ рдХрд┐ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдПред рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдХрд╛рдо рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдХреНрд░реЙрд╕-рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЕрд╕рдВрдЧрддрддрд╛рдПрдВ рд╣реИрдВ (рд╕рд╛рде рд╣реА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЬреЗрдПрд╕ рдХреЗ рдХрд┐рд╕реА рднреА рдХреНрд╖реЗрддреНрд░ рдореЗрдВ)ред рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рдЖрдк рд╡рд┐рднрд┐рдиреНрди рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд┐рдиреНрди рдРрдб-рдСрди рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрдВрддрд┐рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦрдиреЗ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдкрдХреЛ рдЗрд╕рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рд╕рдВрдЪрд╛рд▓рди рдХреЛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдШрдЯрдХреЛрдВ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдкрд░ рдПрдХ рдмрдбрд╝реА рд░реАрдбрдореА рдХреЗ рд╕рд╛рде рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд╡рд╣, рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, рдореИрдВ, рдФрд░ рдЖрдк, рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ, рдпрд╣ рднреА рдЖрдкрдХреЛ рдмрд╣реБрдд рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИред

рдпрд╣ рд▓реЗрдЦ рддреАрди рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░реЗрдЧрд╛: рдореЛрдЬрд╝рд┐рд▓рд╛ рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ (GreaseMonkey рд╕реНрдерд╛рдкрд┐рдд рдХреЗ рд╕рд╛рде), Google рдХреНрд░реЛрдо, рдУрдкреЗрд░рд╛ред рд▓реЗрдЦ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдПрдХ "рдкреНрд░реАрдлрд╝реИрдм" рд╣реИ, рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд╕рднреА рд╕реВрдЪреАрдмрджреНрдз рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдореЗрдВ рдЙрд╕реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред рдЬреАрдПрдо рдПрдкреАрдЖрдИ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд╡рд╣рд╛рдБ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЙрдирдореЗрдВ рд╕реЗ рд╕реИрдХрдбрд╝реЛрдВ рд╣реИрдВред рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╛рдардХ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рд╛рдорд╛рдиреНрдп рдирд┐рдпрдореЛрдВ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИ (рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдЖрдк рдкрд╣рд▓реЗ рдПрдХ рдФрд░ рд▓реЗрдЦ рдкрдврд╝реЗрдВ)ред


рдФрд░ рд╕реАрдзреЗ рд╡рд┐рд╖рдп рдкрд░ред рдЖрдЗрдП рдирд┐рд░реНрджреЗрд╢реЛрдВ рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВред рдХрдИ рдЕрд╕рдВрдЧрддрддрд╛рдПрдВ рд╣реИрдВ: рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдХреЗрд╡рд▓ рдУрдкреЗрд░рд╛ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╕рдорд░реНрдерди рд╣реИ, рдФрд░ рдХреЗрд╡рд▓ рдореИрдЪ рдХреНрд░реЛрдо рдореЗрдВ рд╕рдорд░реНрдерд┐рдд рд╣реИред рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рджреЛрдиреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рддрджрдиреБрд╕рд╛рд░, рдЖрдкрдХреЛ рджреЛрдиреЛрдВ рдирд┐рд░реНрджреЗрд╢ (рдЕрдЪрд╛рдирдХ) рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рджреВрд╕рд░реА рдмрд╛рдд, рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдореЗрдВ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ @unwrap рдирд┐рд░реНрджреЗрд╢ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореИрдВ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ рдХрд┐ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдпрд╣ рд╕реЛрдЪрдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рддреЛ, рд╣рдорд╛рд░реЗ рд╡рд░реНрдХрдкреАрд╕ рдХрд╛ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рднрд╛рдЧ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
// ==UserScript== // @name script_name // @author author's name // @version 1.0 // @description example // @unwrap // @run-at document-end // @include http://example.com/* // @match http://example.com/* // ==/UserScript== 


рд╕рд╛рде рд╣реА, рдХреНрд░реЛрдо рдореЗрдВ, рдореИрдЪ рдирд┐рд░реНрджреЗрд╢ рдХреЛ рдЧрд┐рд░рд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╢реБрд░реБрдЖрдд рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдПрдХ рдкрдВрдХреНрддрд┐ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╕рд╛рд░реНрдердХ рд╣реИ:
 if (location.hostname !== "example.com") return; 


рдЕрдм рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВ рд╕реНрдХреЛрдк рдХреАред Google Chrome рдореЗрдВ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд╣рдореЗрд╢рд╛ рдПрдХ рдЕрд▓рдЧ рджрд╛рдпрд░реЗ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдЬрдмрдХрд┐ рдУрдкреЗрд░рд╛ рдореЗрдВ, рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЙрдиреНрд╣реЗрдВ рдкреГрд╖реНрда рдХреЗ рдордзреНрдп рдореЗрдВ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╕рднреА рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рдХреЛ рдирд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдзрдордХреА рджреА рдЬрд╛рддреА рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП, рдЕрддрд┐рд░рд┐рдХреНрдд рдХреНрд▓реЛрдЬрд░ рдЬреЛрдбрд╝рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛:
 // ==UserScript== // @name script_name // @author author's name // @version 1.0 // @description example // @unwrap // @run-at document-end // @include http://example.com/* // @match http://example.com/* // ==/UserScript== (function(){ if (location.hostname !== "example.com") return; })(); 


рдФрд░ рдЕрдВрдд рдореЗрдВ, рд╡реИрд╢реНрд╡рд┐рдХ рд╡рд╕реНрддреБрдУрдВ рдХреА рдкрд╣реБрдВрдЪ рдЬреИрд╕реА рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЪреАрдЬред рдореЛрдЬрд╝рд┐рд▓рд╛ рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдореЗрдВ, рд╡реЗ рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдХреИрдлреЗ рдЪрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХрд░рддреЗ рд╣реИрдВ, рдУрдкреЗрд░рд╛ рдореЗрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реАрдзреЗ рдкреГрд╖реНрда рджреГрд╢реНрдпрддрд╛ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХреА рдЬрд╛рддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП, рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рдЦрд┐рдбрд╝рдХреА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реБрд▓рдн рд╣реИрдВ, Google рдХреНрд░реЛрдо рдореЗрдВ рд╡реИрд╢реНрд╡рд┐рдХ рд╡рд╕реНрддреБрдУрдВ рддрдХ рдкрд╣реБрдВрдЪ рдирд╣реАрдВ рд╣реИ (рдЙрджрд╛рд╕реА)ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рд╡рд╕реНрддреБ рдХреЛ рдЙрд╕ рдкреГрд╖реНрда рдкрд░ рдПрдХ рд╡рд╕реНрддреБ рдЬреЛрдбрд╝рдХрд░ рдЙрддрд╛рд░рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдХреА рдСрдирдХреНрд▓рд┐рдХ рд╡рд┐рдВрдбреЛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд▓реМрдЯрддреА рд╣реИред рджрд░рдЕрд╕рд▓, рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рд╡рд╛рд▓рд╛ рдХреЛрдб:

 //   unsafeWindow    -   ,    , //      window var unsafeWindow= this.unsafeWindow; //  ,    unsafeWindow,     , //    (function(){ // ..,   ,      , //  unsafeWindow  chrome,   , ,   . var test_scr= document.createElement("script"); //       var tid= ("t" + Math.random() + +(new Date())).replace(/\./g, ""); //       . test_scr.text= "window."+tid+"=true"; document.querySelector("body").appendChild(test_scr); //      unsafeWindow, //         if (typeof(unsafeWindow) == "undefined" || !unsafeWindow[tid]) { if (window[tid]) { // ..   window -    window, //    unsafeWindow= window; } else { //   -    var scr= document.createElement("script"); scr.text= "(" + (function() { var el= document.createElement('unsafeWindow'); el.style.display= 'none'; el.onclick=function(){return window}; document.body.appendChild(el); }).toString() + ")()"; //   -   script      document.querySelector("body").appendChild(scr); this.unsafeWindow= document.querySelector("unsafeWindow").onclick(); //   ,     // onclick  unsafeWindow ,      unsafeWindow= this.unsafeWindow; }; } })(); //  


рддреЛ, рдЕрдВрдд рдореЗрдВ, рд╣рдорд╛рд░рд╛ рдмреНрд▓реИрдВрдХ рдРрд╕рд╛ рджрд┐рдЦреЗрдЧрд╛:
 // ==UserScript== // @name script_name // @author author's name // @version 1.0 // @description example // @unwrap // @run-at document-end // @include http://example.com/* // @match http://example.com/* // ==/UserScript== (function(){ if (location.hostname !== "example.com") return; var unsafeWindow= this.unsafeWindow; (function(){ var test_scr= document.createElement("script"); var tid= ("t" + Math.random() + +(new Date())).replace(/\./g, ""); test_scr.text= "window."+tid+"=true"; document.querySelector("body").appendChild(test_scr); if (typeof(unsafeWindow) == "undefined" || !unsafeWindow[tid]) { if (window[tid]) { unsafeWindow= window; } else { var scr= document.createElement("script"); scr.text= "(" + (function() { var el= document.createElement('unsafeWindow'); el.style.display= 'none'; el.onclick=function(){return window}; document.body.appendChild(el); }).toString() + ")()"; document.querySelector("body").appendChild(scr); this.unsafeWindow= document.querySelector("unsafeWindow").onclick(); unsafeWindow= window.unsafeWindow; }; } })(); //  ,    })(); 


рдмрд╕ рдЗрддрдирд╛ рд╣реАред рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рд▓реЗрдЦ рдХрд┐рд╕реА рдХреА рдорджрдж рдХрд░рддрд╛ рд╣реИред

рдкреАрдПрд╕ рдУрд╣ рд╣рд╛рдВред рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдбреАрдмрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдЕрдкрдиреЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рдХреЛ рдПрдХ рдХреЛрд╢рд┐рд╢ рдореЗрдВ рд▓рдкреЗрдЯ рд╕рдХрддреЗ рд╣реИрдВ ... рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВ:
рдХреЛрд╢рд┐рд╢ рдХрд░реЛ {
// рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб
} рдкрдХрдбрд╝ (рдИ) {рдХрдВрд╕реЛрд▓.рд░реЛрд░ (рдИ)}
рдЬреАрд╡рди рдХреЛ рдмрд╣реБрдд рд╕реБрдЧрдо рдмрдирд╛рддрд╛ рд╣реИред

UPD: рд▓реЗрдЦ рдХреЗ рдЗрддрдиреЗ рдЕрдЪреНрдЫреЗ рдЬреЛрдбрд╝ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рджред рдмрд▓реНрдХрд┐, рдЙрдиреНрд╣реЛрдВрдиреЗ рдЬреЛ рд▓рд┐рдЦрд╛ рдЙрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рд▓реЗрдЦ рднреА ...

UPD2: рдЗрд╕рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдирд┐рд░реНрджреЗрд╢ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╕рд╛рдЗрдЯреЛрдВ рдкрд░ рдХреНрд░реЛрдо рдореЗрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рдиреЗ рджреЗрдЧрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╕рдордп, рдпрджрд┐ рдЖрдк рдореИрдЪ рдирд┐рд░реНрджреЗрд╢ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛ рдХрд┐ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рднреА рдкреГрд╖реНрдареЛрдВ рдкрд░ рдХрд╛рдо рдХрд░рддреА рд╣реИред рдЗрд╕рд▓рд┐рдП, рдореИрдЪ рдирд┐рд░реНрджреЗрд╢ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред

Source: https://habr.com/ru/post/In140825/


All Articles