рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдкрд╛рд░реНрд╕рд┐рдВрдЧ BEncodeред рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдореЗрдВ рдзрд╛рд░ рдлрд╝рд╛рдЗрд▓реЗрдВ рджреЗрдЦреЗрдВ

рдореИрдВ рдХреНрдпреЛрдВ


рдЯреЛрд░реЗрдВрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рдХрдИ рддрд░реАрдХреЗ рд╣реИрдВ: рдЯреЛрд░реЗрдВрдЯ рдХреНрд▓рд╛рдЗрдВрдЯ рдореЗрдВ, рдмреАрдПрдирдХреЛрдб рд╕рдВрдкрд╛рджрдХ рдореЗрдВ , рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреЗ рд╕рд╛рде рдлрд╝рд╛рдЗрд▓ рдкреНрд░рдмрдВрдзрдХреЛрдВ рдореЗрдВ, рд╕рдВрднрд╡рддрдГ рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗрд╡рд╛рдУрдВ рдореЗрдВ (рд▓реЗрдХрд┐рди рдпрд╣ рдереЛрдбрд╝рд╛ рдмреЗрд╡рдХреВрдл рд╣реИ)ред

рд▓реЗрдХрд┐рди рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕реЗ рдмрд╛рд╣рд░реА рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рд╣рдореЗрд╢рд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдпрд╣ рдХрд╛рд░реНрдпрдХреНрд░рдо рд╣рдореЗрд╢рд╛ рдкреВрд░реА рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред рд╣рдореЗрд╢рд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдирд╣реАрдВред рд╕рджреИрд╡ рдЦреЛрдЬрдиреЗ рдпреЛрдЧреНрдп рдирд╣реАрдВред рдЗрд╕рд▓рд┐рдП, рдореИрдВ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдзрд╛рд░ рдлрд╝рд╛рдЗрд▓ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдПрдХ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд░рдЦрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛:

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

рджреНрд╡рд┐рддреАрдпред рд░рдгрдиреАрддрд┐


рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП, рдЖрдк рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдХрдИ рдЕрддрд┐рд░рд┐рдХреНрдд рдХрдард┐рдирд╛рдЗрдпреЛрдВ рд╕реЗ рднрд░рд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдПрдХ рд╕рд░рд▓реАрдХреГрдд рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред

рдХрд╕реНрдЯрдо рдмрдЯрди рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдЖрдкрдХреЛ рдордирдорд╛рдиреЗ рдХреЛрдб рд╡рд╛рд▓реЗ рдмрдЯрди рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЗрд╕рд╕реЗ рднреА рдмреЗрд╣рддрд░, рдпрд╣ рдХреЛрдб рдПрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕рдВрджрд░реНрдн рдореЗрдВ рдЪрд▓рддрд╛ рд╣реИ, рдЗрд╕рдореЗрдВ рд╕рдорд╛рди рдШрдЯрдХреЛрдВ рдФрд░ рдЗрдВрдЯрд░рдлреЗрд╕ рддрдХ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╣реБрдВрдЪ рд╣реИ, рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдордирдорд╛рдиреА рдЬрдЯрд┐рд▓рддрд╛ рдХреЗ GUI рддрддреНрд╡ рднреА рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдмрд╕ рдПрдХ рдирдпрд╛ рдмрдЯрди рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдХреЛрдб рдХреЗ рд╕рд╛рде рднрд░ рджреЗрддреЗ рд╣реИрдВ (рджреЛ рд╕реМ рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рд╣рд░ рдЪреАрдЬ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ) рд╕рднреА рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдХреЛ рдирдП рдмрдирд╛рдП рдЧрдП рдмрдЯрди рдХреЗ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдЯреИрдм рдореЗрдВ рдбрд╛рд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рддрд╛рдХрд┐ рдпрд╣ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рджреНрд╡рд╛рд░рд╛ рд▓реЙрдиреНрдЪ рдХрд┐рдП рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдмрдЯрди рдХреЗ рд╡рд╛рдВрдЫрд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реБрдП рдФрд░ рдкреВрд░реЗ рд╕рддреНрд░ рдХреЗ рд▓рд┐рдП рд╣рд░ рдмрд╛рд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛред рдпрд╛ рдЖрдк рдЗрд╕реЗ рд╕рдореНрдорд┐рд▓рд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдХрд╕реНрдЯрдордмрдЯрди: // рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рдФрд░ рд▓реЗрдЦ рдХреЗ рдЕрдВрдд рдореЗрдВ рдореИрдВ рдПрдХ рд▓рд┐рдВрдХ рджреВрдВрдЧрд╛, рдЬрд┐рд╕ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ рдЖрдк рдПрдХ рдХреЛрдб рдХреЗ рд╕рд╛рде рдПрдХ рддреИрдпрд╛рд░ рдмрдЯрди рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ (рдпрд╣ рдХреЗрд╡рд▓ рдЯреВрд▓ рдкреИрд▓реЗрдЯ рд╕реЗ рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╕реНрдерд╛рди рдкрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛ рд╣реБрдЖ рд╣реИ)ред

рддреГрддреАрдпред рдпреБрдХреНрддрд┐


1. рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕

var btn = this; var imgMain = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAdVBMVEX////////////////////////////////XzeWjisHx7vaKaq5nNpV8VqSDYaqtmMiTdbS2pM/MwN6YfLjBstd7VqRuQZnk3u7y7/eKa6+SdbR1S56CX6jXzuabgLv49/uhh7+JaK39/P3e1ury7vbLv97g2es6Rn8YAAAAB3RSTlMAYMAg0PDzqTbVzAAAAAFiS0dEAIgFHUgAAAAJcEhZcwAAAEgAAABIAEbJaz4AAACcSURBVBjTXY/bAoIgEEQRsWERUykDMu1m/f8ntqC+dJ6WYfYyQjCFBCMLsVIqaGI0VJnflaltpjZVUpRp7EZjFPcj/R/bLntQCKm56IE2e7QUIGsJ7tSeaUhVEi5wgw/OR2uvWegQvR9zy+ogWDi7CzyUMO4CD+W1EdQj7mvTYT7cJkx0nO9qPf2B8JxdwOtQbuHeC5bPdwv3F/8HCk4KcI8+awQAAAAldEVYdGRhdGU6Y3JlYXRlADIwMTItMDYtMjZUMjE6MDk6MDQrMDQ6MDD1mOHZAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDEyLTA2LTI2VDIxOjA5OjA0KzA0OjAwhMVZZQAAAABJRU5ErkJggg=="; var imgThrobber = "data:image/gif;base64,R0lGODlhEAAQAOMIAAAAABoaGjMzM0xMTGZmZoCAgJmZmbKysv///////////////////////////////yH/C05FVFNDQVBFMi4wAwEAAAAh+QQBCgAIACwAAAAAEAAQAAAESBDJiQCgmFqbZwjVhhwH9n3hSJbeSa1sm5GUIHSTYSC2jeu63q0D3PlwCB1lMMgUChgmk/J8LqUIAgFRhV6z2q0VF94iJ9pOBAAh+QQBCgAPACwAAAAAEAAQAAAESPDJ+UKgmFqbpxDV9gAA9n3hSJbeSa1sm5HUMHTTcTy2jeu63q0D3PlwDx2FQMgYDBgmk/J8LqWPQuFRhV6z2q0VF94iJ9pOBAAh+QQBCgAPACwAAAAAEAAQAAAESPDJ+YSgmFqb5xjV9gQB9n3hSJbeSa1sm5EUQXQTADy2jeu63q0D3PlwDx2lUMgcDhgmk/J8LqUPg+FRhV6z2q0VF94iJ9pOBAAh+QQBCgAPACwAAAAAEAAQAAAESPDJ+cagmFqbJyHV9ggC9n3hSJbeSa1sm5FUUXRTEDy2jeu63q0D3PlwDx3FYMgAABgmk/J8LqWPw+FRhV6z2q0VF94iJ9pOBAAh+QQBCgAPACwAAAAAEAAQAAAESPDJ+QihmFqbZynV9gwD9n3hSJbeSa1sm5GUYXSTIDy2jeu63q0D3PlwDx3lcMgEAhgmk/J8LqUPAOBRhV6z2q0VF94iJ9pOBAAh+QQBCgAPACwAAAAAEAAQAAAESPDJ+UqhmFqbpzHV9hAE9n3hSJbeSa1sm5HUcXTTMDy2jeu63q0D3PlwDx0FAMgIBBgmk/J8LqWPQOBRhV6z2q0VF94iJ9pOBAAh+QQBCgAPACwAAAAAEAAQAAAESPDJ+YyhmFqb5znV9hQF9n3hSJbeSa1sm5EUAHQTQTy2jeu63q0D3PlwDx0lEMgMBhgmk/J8LqUPgeBRhV6z2q0VF94iJ9pOBAAh+QQBCgAPACwAAAAAEAAQAAAESPDJ+c6hmFqbJwDV9hgG9n3hSJbeSa1sm5FUEHRTUTy2jeu63q0D3PlwDx1FIMgQCBgmk/J8LqWPweBRhV6z2q0VF94iJ9pOBAA7"; function clickBtn(event) { if (event.button == 0) { event.preventDefault(); var tFileURL = prompt("Torrent File URL:"); if (tFileURL) { getTFile(tFileURL); } } } function checkDrag(event) { if (event.dataTransfer.types.contains("text/uri-list")) { event.preventDefault(); } } function onDrop(event) { var tFileURL = event.dataTransfer.getData("URL"); if (tFileURL) { getTFile(tFileURL); } event.preventDefault(); } btn.addEventListener("click", clickBtn, true); btn.addEventListener("dragenter", checkDrag, true); btn.addEventListener("dragover", checkDrag, true); btn.addEventListener("drop", onDrop, true); btn.onDestroy = function() { btn.removeEventListener("click", clickBtn, true); btn.removeEventListener("dragenter", checkDrag, true); btn.removeEventListener("dragover", checkDrag, true); btn.removeEventListener("drop", onDrop, true); } 


рдЗрд╕ рдЯреБрдХрдбрд╝реЗ рдореЗрдВ, рд╣рдо рдмрдЯрди рдСрдмреНрдЬреЗрдХреНрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ, рджреЛ рдЫрд╡рд┐рдпрд╛рдВ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ (рдПрдХ рдореБрдЦреНрдп рдмрд╛рдд рд╣реИ, рджреВрд╕рд░рд╛ рдорд╛рдирдХ рдлрд╝рд╛рдЗрд▓ рдбрд╛рдЙрдирд▓реЛрдб рд╕рдВрдХреЗрддрдХ рд╣реИ, рд╡реЗ рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ рд╣реЛрдВрдЧреЗ), рд╣рдо рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдмрдЯрди рд╕реЗ рдмрд╛рдВрдзрддреЗ рд╣реИрдВред

рд╣рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдзрд╛рд░ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдкрддрд╛ рджреЗрдиреЗ рдХреЗ рджреЛ рддрд░реАрдХреЗ рдорд┐рд▓рддреЗ рд╣реИрдВ: рдпрджрд┐ рдХреЛрдИ рд▓рд┐рдВрдХ рд╣реИ, рддреЛ рд╣рдо рдЗрд╕реЗ рдХреЗрд╡рд▓ рдмрдЯрди ( рддрдВрддреНрд░ рдХрд╛ рд╡рд┐рд╡рд░рдг ) рдкрд░ рдЦреАрдВрдЪрддреЗ рд╣реИрдВред рдпрджрд┐ рдмрдлрд╝рд░ рдореЗрдВ рдкрддреЗ рдХреЗ рд╕рд╛рде рдПрдХ рдкрдВрдХреНрддрд┐ рд╣реИ, рддреЛ рд╣рдо рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдкрддреЗ рдХреЛ рдЙрд╕ рдлрд╝реАрд▓реНрдб рдореЗрдВ рдЪрд┐рдкрдХрд╛рддреЗ рд╣реИрдВ рдЬреЛ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИред

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

2. рдзрд╛рд░ рдлрд╝рд╛рдЗрд▓ рд╣реЛ рд░рд╣реА рд╣реИ

 function getTFile(tFileURL) { btn.image = imgThrobber; var xhr = new XMLHttpRequest(); xhr.mozBackgroundRequest = true; var sendData; if (tFileURL.indexOf("http://dl.rutracker.org/forum/dl.php") > -1) { xhr.open("POST", tFileURL, true); sendData = tFileURL.replace(/^.+\b(t=\d+).*$/, "$1"); xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); xhr.setRequestHeader("Referer", "http://rutracker.org/forum/viewtopic.php?t=" + tFileURL.replace(/^.+\bt=(\d+).*$/, "$1")); } else { xhr.open("GET", tFileURL, true); sendData = null; } xhr.timeout = 10000; if(!/^file:/.test(tFileURL)) { xhr.channel.loadFlags |= Components.interfaces.nsIRequest.LOAD_BYPASS_CACHE; xhr.channel.QueryInterface(Components.interfaces.nsIHttpChannelInternal) .forceAllowThirdPartyCookie = true; } xhr.responseType = "arraybuffer"; xhr.onload = function() { btn.image = imgMain; processTFile(this.response); } xhr.ontimeout = function() { btn.image = imgMain; alert("Timeout"); } xhr.onerror = function() { btn.image = imgMain; alert("HTTP error"); } xhr.send(sendData); } 


рд╢реБрд░реБрдЖрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЯреЛрд░реЗрдВрдЯ рдлрд╛рдЗрд▓реЗрдВ рдмреАрдПрдирдХреЛрдб рднрд╛рд╖рд╛ ( рднрд╛рд╖рд╛ рд╡рд┐рд╡рд░рдг рдФрд░ рдЯреЛрд░реЗрдВрдЯ рдлрд╛рдЗрд▓реЛрдВ рдХрд╛ рдкреНрд░рд╛рд░реВрдк ) рдореЗрдВ рд▓рд┐рдЦреА рдЬрд╛рддреА рд╣реИрдВред рдпрд╣ рдЕрдкрдиреА рдХреНрд╖рдорддрд╛рдУрдВ рдореЗрдВ JSON рдХреА рддрд░рд╣ рдПрдХ рд╕рд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рдПрдХ рдЕрдбрд╝рдЪрди рд╣реИ: рдЯреИрдЧ, рд╕рдВрдЦреНрдпрд╛ рдФрд░ рдЗрд╕рдореЗрдВ рдореМрдЬреВрдж рд▓рд╛рдЗрдиреЗрдВ, рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, UTF-8 рдкрд░ рдПрдиреНрдХреЛрдбреЗрдб рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХреБрдЫ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдореЗрдВ рдмрд╛рдЗрдирд░реА рдбреЗрдЯрд╛ (рдмрд╛рдЗрдЯреНрд╕ рдХрд╛ рдПрдХ рд╕рд░рд▓ рдЕрдиреБрдХреНрд░рдо рдЬреЛ UTF-8 рдирд┐рдпрдореЛрдВ рдХрд╛ рдкрд╛рд▓рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ) рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдЖрдк рдХреЗрд╡рд▓ рд╕рдВрдкреВрд░реНрдг рдкрдВрдХреНрддрд┐ рдХреЛ UTF-8 рдХреЗ рд░реВрдк рдореЗрдВ рдирд╣реАрдВ рдорд╛рди рд╕рдХрддреЗ рд╣реИрдВ, рдбрд┐рдХреЛрдбрд░ рд▓реЙрдХ рд╣реЛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдЧрд▓рдд UTF-8 рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рддреНрд░реБрдЯрд┐ рджреЗрдЧрд╛ред рдХрд┐рд╕реА рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рддреЗ рд╕рдордп, рдЖрдкрдХреЛ рдЗрд╕ рдПрд╣рддрд┐рдпрд╛рдд рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдирд╛ рд╣реЛрдЧрд╛ред

рдЕрдм рдЕрдиреБрд░реЛрдз рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдиреЛрдЯреНрд╕ рдФрд░ рдлрд╝рд╛рдЗрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ред

рд╣рдо рдкрд▓реНрд╕рд░ рдЫрд╡рд┐ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреГрд╖реНрдарднреВрдорд┐ рдЕрдиреБрд░реЛрдз рдзреНрд╡рдЬ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВред рдлрд┐рд░ рд╣рдо рдкрддреЗ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╕рдмрд╕реЗ рдкреНрд░рд╕рд┐рджреНрдз рдШрд░реЗрд▓реВ рдЯреЛрд░реЗрдВрдЯ рдЯреНрд░реИрдХрд░ рдХреЗ рд╕рдВрд░рдХреНрд╖рдг рдХреЛ рдЖрд╢реНрд╡рд╕реНрдд рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рд╕рд╛рдЗрдЯ рдХреЗ рдкрдиреНрдиреЛрдВ рд╕реЗ рдирд╣реАрдВ рдЯреЛрд░реЗрдВрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдкрд░ рд░реЛрдХ рд▓рдЧрд╛рддрд╛ рд╣реИ (рдпрд╣ рд╡рд┐рдзрд┐, рдЬреЛ рдЯреНрд░реИрдХрд░ рдХреА рдЯреЛрд░реЗрдВрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ, рд╕реБрд░рдХреНрд╖рд╛ рдХрд╛ рдкрд░рд┐рдЪрдп рджреЗрддреЗ рд╕рдордп рд╕рд╛рдЗрдЯ рдбреЗрд╡рд▓рдкрд░реНрд╕ рджреНрд╡рд╛рд░рд╛ рдПрдХ рдмрд╛рд░ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛)ред

рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдХреЛ XHR рдХреЗ рд╕рд╛рде рдХреБрдХреАрдЬрд╝ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ рддреГрддреАрдп-рдкрдХреНрд╖ рд╕рд╛рдЗрдЯреЛрдВ рд╕реЗ рдХреБрдХреАрдЬрд╝ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░ рджрд┐рдпрд╛ рд╣реИ, рддреЛ рдмрд▓ рднреЗрдЬрдиреЗ рд╡рд╛рд▓реЗ рдзреНрд╡рдЬ рдХреЛ рд╕реЗрдЯ рдХрд░реЗрдВ (рдЗрд╕рдХреЗ рдмрд┐рдирд╛ рдХреБрдХреАрдЬрд╝ рд╕реНрд╡реАрдХрд╛рд░ рдирд╣реАрдВ рдХреА рдЬрд╛рддреА рд╣реИрдВ рдФрд░ рдирд╣реАрдВ рднреЗрдЬреА рдЬрд╛рддреА рд╣реИрдВ)ред рдмреЗрд╢рдХ, рдХреБрдХреАрдЬрд╝ рдФрд░ рдХреИрд╢ рдмрд╛рдИрдкрд╛рд╕ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЭрдВрдбреЗ рдХреЗрд╡рд▓ рдиреЗрдЯрд╡рд░реНрдХ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП, рд╕реНрдерд╛рдиреАрдп рдлрд╝рд╛рдЗрд▓ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо рдЙрдиреНрд╣реЗрдВ рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред

рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ, XMLHttpRequest рд╕реЗ рдмрд╛рдЗрдирд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдХреБрдЫ рдЯреЛрдирд╛-рдЯреЛрдЯрдХрд╛ рдХрд╛ рд╕рд╣рд╛рд░рд╛ рд▓реЗрдирд╛ рдкрдбрд╝рддрд╛ рдерд╛ред XHR рдореЗрдВ рдирдП рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреА рд╢реБрд░реБрдЖрдд рдХреЗ рд╕рд╛рде, рдЪреАрдЬреЗрдВ рдЖрд╕рд╛рди рд╣реЛ рдЧрдИрдВред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдЯрд╛рдЗрдк arraybuffer рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ рдФрд░ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЯрд╛рдЗрдк рдХрд┐рдП рдЧрдП рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВрдЧреЗред

рдЕрдВрдд рдореЗрдВ, рд╣рдо рдЕрдкрдиреЗ рдЕрдиреБрд░реЛрдз рдХреЗ рд╡рд┐рднрд┐рдиреНрди рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рд▓рд┐рдП рд╣реИрдВрдбрд▓рд░ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ (рд╣рд░ рдмрд╛рд░ рдмрд┐рдирд╛ рдкрд▓реНрд╕рд░ рдХреЗ рдПрдХ рдирд┐рдпрдорд┐рдд рдЪрд┐рддреНрд░ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рднреВрд▓ рдЬрд╛рддреЗ рд╣реИрдВ)ред рд╕рдлрд▓ рд╣реЛрдиреЗ рдкрд░, рд╣рдо рдкрд░рд┐рдгрд╛рдореА рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВред

3. рдЯреЛрд░реЗрдВрдЯ рдлрд╛рдЗрд▓ рдХреА рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ

 function processTFile(tFile) { var byteArray = new Uint8Array(tFile); var torrentObject = bdecode(byteArray); if (torrentObject) { if (torrentObject['creation date']) { torrentObject['creation date'] = (new Date(torrentObject['creation date']*1000)).toLocaleString(); } if (torrentObject.info) { var files = torrentObject.info.files; if (files && files instanceof Array) { for (var i = 0, file; file = files[i]; i++) { if (file.length) { file.length = Number((file.length / 1024).toFixed(2)).toLocaleString() + " KB"; } if (file['path.utf-8']) { file['path.utf-8'] = file['path.utf-8'].join("/"); } if (file.path) { file.path = file.path.join("/"); } } if (files[0]['path.utf-8']) { files = files.sort( function(o1, o2) { if (o1['path.utf-8'] > o2['path.utf-8']) {return 1;} else if (o1['path.utf-8'] < o2['path.utf-8']) {return -1;} else {return 0;} } ); } else if (files[0].path) { files = files.sort( function(o1, o2) { if (o1['path'] > o2['path']) {return 1;} else if (o1['path'] < o2['path']) {return -1;} else {return 0;} } ); } files.unshift(files.length); } else { if (torrentObject.info.length) { torrentObject.info.length = Number((torrentObject.info.length / 1024).toFixed(2)).toLocaleString() + " KB"; } } } if (gBrowser.selectedBrowser.currentURI.spec == "about:blank" && !gBrowser.selectedBrowser.webProgress.isLoadingDocument) { gBrowser.selectedBrowser.loadURI( "data:application/json;charset=utf-8," + encodeURIComponent(JSON.stringify(torrentObject, null, '\t')) ); } else { gBrowser.selectedTab = gBrowser.addTab( "data:application/json;charset=utf-8," + encodeURIComponent(JSON.stringify(torrentObject, null, '\t')) ); } torrentObject = null; } else { alert("Parsing error"); } } 


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

рд╣рдо JSON рдореЗрдВ рд╕рд╛рджрдЧреА рдФрд░ рдмрд╣реБрдореБрдЦреА рдкреНрд░рддрд┐рднрд╛ рдХреЗ рд▓рд┐рдП рдЖрдЙрдЯрдкреБрдЯ рд▓рд╛рдЧреВ рдХрд░реЗрдВрдЧреЗред рд╣рдо рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдереЛрдбрд╝рд╛ рдкреНрд░рд╛рд░реВрдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдХреБрдЫ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИ рдЬреЛ JSON рдХреЛ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЖрдкрдХреЛ рдЗрд╕реЗ рдЯреНрд░реА рд╕рдВрд░рдЪрдирд╛, рдврд╣рдиреЗ рдФрд░ рд╡рд┐рд╕реНрддрд╛рд░ рдиреЛрдбреНрд╕ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, JSONView ) рдХреА рддрд░рд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдирд┐рд╖реНрдХрд░реНрд╖ рдХреЗ рдмрд╛рдж, рдХреЗрд╡рд▓ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо рд╡рд┐рд╢рд╛рд▓ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд░реАрд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ (рдпрджрд┐ рдпрд╣ рд╡реНрдпрд╛рдореЛрд╣ рдирд╣реАрдВ рд╣реИ)ред

4. рдкрд╛рд░реНрд╕рд░ BEncode

 function bdecode(byteArray, byteIndex, isRawBytes) { if (byteIndex === undefined) { byteIndex = [0]; } var item = String.fromCharCode(byteArray[byteIndex[0]++]); if(item == 'd') { var dic = {}; item = String.fromCharCode(byteArray[byteIndex[0]++]); while(item != 'e') { byteIndex[0]--; var key = bdecode(byteArray, byteIndex); if (key == "pieces") { dic[key] = bdecode(byteArray, byteIndex, true); } else { dic[key] = bdecode(byteArray, byteIndex); } item = String.fromCharCode(byteArray[byteIndex[0]++]); } return dic; } if(item == 'l') { var list = []; item = String.fromCharCode(byteArray[byteIndex[0]++]); while(item != 'e') { byteIndex[0]--; list.push(bdecode(byteArray, byteIndex)); item = String.fromCharCode(byteArray[byteIndex[0]++]); } return list; } if(item == 'i') { var num = ''; item = String.fromCharCode(byteArray[byteIndex[0]++]); while(item != 'e') { num += item; item = String.fromCharCode(byteArray[byteIndex[0]++]); } return Number(num); } if(/\d/.test(item)) { var num = ''; while(/\d/.test(item)) { num += item; item = String.fromCharCode(byteArray[byteIndex[0]++]); } num = Number(num); var line = ''; if (isRawBytes) { byteIndex[0] += num; return "[" + num + "]"; } else { while(num--) { line += escape(String.fromCharCode(byteArray[byteIndex[0]++])); } try { return decodeURIComponent(line); } catch(e) { return unescape(line) + " (?!)"; } } } return null; } 


рдореИрдВрдиреЗ рдкрд░реНрд▓ рдкрд╛рд░реНрд╕рд░ рдХреЛ рдЖрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд┐рдпрд╛, рдЗрд╕рдХреА рд╕рдВрдХреНрд╖рд┐рдкреНрддрддрд╛ рдФрд░ рд╕рд░рд▓рддрд╛ рд╕реЗ рдмрд╣рдХрд╛рдпрд╛ред рдкрд╣рд▓реЗ рддреЛ рдореИрдВрдиреЗ рдЯрд╛рдЗрдк рдХреА рдЧрдИ рд╕рд░рдгреА рдХреЛ рдПрдХ рдирд┐рдпрдорд┐рдд рдмрд╛рдЗрдЯ рд╕рд░рдгреА рдореЗрдВ рдмрджрд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рддрд╛рдХрд┐ рдореИрдВ shift рд╕рд╛рде рдХрд╛рдо рдХрд░ shift , рд▓реЗрдХрд┐рди рдЗрд╕ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдиреЗ рдмрд╣реБрдд рдзреАрд░реЗ-рдзреАрд░реЗ рдХрд╛рдо рдХрд┐рдпрд╛ (рд╢рд╛рдпрдж рдПрдХ рдмрдбрд╝реЗ рд╕рд░рдгреА рдХреЗ рдирд┐рд░рдВрддрд░ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдХрд╛рд░рдг)ред рдЗрд╕рд▓рд┐рдП, рд╣рдореЗрдВ рдПрдХ рдмрдврд╝рддреА-рдмрдврд╝рддреА рдПрдХреНрд╕реЗрд╕ рдЗрдВрдбреЗрдХреНрд╕ рдХреА рд╢реБрд░реБрдЖрдд рдХрд░рдиреА рдереА, рдЗрд╕реЗ рдПрдХ рд╕рд░рдгреА рдореЗрдВ рд▓рдкреЗрдЯрдХрд░ (рддрд╛рдХрд┐ рдЖрдк рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдореЗрдВ рд╕рдВрджрд░реНрдн рд╕реЗ рдЧреБрдЬрд░ рд╕рдХреЗрдВ)ред

рдореВрд▓ рдирдореВрдиреЗ рд╕реЗ рдореБрдЦреНрдп рдЕрдВрддрд░ рд▓рд╛рдЗрди рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдмреНрд▓реЙрдХ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдЖрдЙрдЯрдкреБрдЯ рд╕реЗ рдПрдХ рдмрдбрд╝реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рд╣рдЯрд╛рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рдмрд╛рдЗрдЯреНрд╕ рдХреЗ рд╕реЗрдЧрдореЗрдВрдЯ рд╣реЛрддреЗ рд╣реИрдВ (рдпрд╣ рдПрдХ рд╕реНрдкрд╖реНрдЯ рд╕реНрдерд╛рди рд╣реИ, рдЗрд╕рд▓рд┐рдП, рд╕рдВрдмрджреНрдз рд╕рд░рдгреА рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдореЗрдВ рд╡рд╛рдВрдЫрд┐рдд рдХреБрдВрдЬреА рддрдХ рдкрд╣реБрдВрдЪ рдЧрдпрд╛ рд╣реИ, рд╣рдо рдЕрд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдЗрд╕ рдХреБрдВрдЬреА рдХреЗ рдореВрд▓реНрдп рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рдореЗрдВ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдЕрдХреНрд╖рдо рдзреНрд╡рдЬ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ)ред рджреВрд╕рд░реЗ, рд╣рдо рдмрд╛рдХреА рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдпреВрдЯреАрдПрдл -8 рдореЗрдВ рдмрд╛рдЗрдЯреНрд╕ рдХреЛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдХреЗ рдХреБрдЫ рд╣реЗрд░рдлреЗрд░ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣рд╛рдВ рд╣рдо рдЦрддрд░реЗ рдореЗрдВ рд╣реИрдВ: рдХрднреА-рдХрднреА рдпрд╣ рд▓рд╛рдЗрдиреЛрдВ рдореЗрдВ UTF-8 рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд▓реЛрдХрдкреНрд░рд┐рдп tracker.0day.kiev.ua рдЯреНрд░реИрдХрд░ рдХрд┐рд╕реА рднреА рддрд░рд╣ "рдЯреНрд░реИрдХрд░" рд╢рдмреНрдж рдХреЛ "рд╕реНрд░реЛрдд" рдХреБрдВрдЬреА рдореЗрдВ Windows-1251 рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдореЗрдВ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рддрд╛ рд╣реИ) рдФрд░ рдПрдХ рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рдбрд┐рдХреЛрдбреНрдпреВрд░рд┐рдХреЛрдореНрдкреЛрдиреЗрдВрдЯ рдХреНрд░реИрд╢ ред рдЗрд╕рд▓рд┐рдП, рдРрд╕реЗ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЗрд╕реЗ рдереЛрдбрд╝рд╛ рд╕рд╛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рддреЗ рд╣реБрдП, рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдХрдЪреНрдЪрд╛ рджреГрд╢реНрдп рд▓реМрдЯрд╛рддреЗ рд╣реИрдВред рдРрд╕реА рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╣рдЯрд╛рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдХрднреА-рдХрднреА рдЙрдирдореЗрдВ рд╕реЗ рдХреЗрд╡рд▓ рдПрдХ рдЯреБрдХрдбрд╝рд╛ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИ, рдореБрдЦреНрдп рднрд╛рдЧ ASCII рдХреЗ рд╕рдВрдпреЛрдЧ рдФрд░ UTF-8 рдХреА рд╢реБрд░реБрдЖрдд рдХреЗ рдХрд╛рд░рдг рдХрд╛рдлреА рдкрдардиреАрдп рд╣реИред

рдЪрддреБрд░реНрдеред рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ


рд╡рд░реНрдгрд┐рдд рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдФрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

- рдПрдХ рд╣реА рдкрддреЗ рдкрд░ рдЯреЛрд░реЗрдВрдЯ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрдкрдбреЗрдЯ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рдирд╛ (рд╕рд╛рдордЧреНрд░реА рдпрд╛ рдирд┐рд░реНрдорд╛рдг рд╕рдордп рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛) рдФрд░ рдлрд┐рд░ рд╕реЗ рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реВрдЪрд┐рдд рдХрд░рдирд╛; рдЗрд╕ рддрд░рд╣ рдХреЗ рдЪреЗрдХ рдХреЗ рдЙрджрд╛рд╣рд░рдг (рд╡реЗрдм тАЛтАЛрдкреЗрдЬреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рд▓реЗрдХрд┐рди рд╕рдм рдХреБрдЫ рдЖрд╕рд╛рдиреА рд╕реЗ рдлрд┐рд░ рд╕реЗ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ) рдпрд╣рд╛рдВ рджреЗрдЦреЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ ;

- рдпрджрд┐ рдлрд╝рд╛рдЗрд▓ рдЕрдкрдбреЗрдЯ рдХреА рдЬрд╛рддреА рд╣реИ, рддреЛ рдЗрд╕реЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕реЗ рдбрд┐рд╕реНрдХ рдкрд░ рдПрдХ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕рд╣реЗрдЬрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рдЯреЛрд░реЗрдВрдЯ рдХреНрд▓рд╛рдЗрдВрдЯ рдЗрд╕реЗ рдЙрдард╛рдПрдЧрд╛ (рдпрд╣рд╛рдВ рд╣рдо рдЗрдВрдЯрд░рдлреЗрд╕ nsIFile , nsILocalFile , nsIFilePicker , nsIFileOutputStream , nsIBinaryOutputStream рдФрд░ рдирдореВрдирд╛ рдХреЛрдб ) рдореЗрдВ рд░реБрдЪрд┐ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВред

- рдЪреВрдВрдХрд┐ рдирд╡реАрдирддрдо XHR рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдлрд╝рд╛рдЗрд▓ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВ: // рдкреНрд░реЛрдЯреЛрдХреЙрд▓, рдмрдЯрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрдк рд╕реНрдерд╛рдиреАрдп рдзрд╛рд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдХреНрд▓рд╛рдЗрдВрдЯ рдбреЗрдЯрд╛рдмреЗрд╕ (рдЬреИрд╕реЗ settings.dat рдпрд╛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рднреА рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ), рд╣рд╛рд▓рд╛рдВрдХрд┐, рдмрд╛рдж рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдХреНрд░реЛрдХреЛ-рдЬрд╝реЛрдореНрд╕ рдХреЗ рд╕рд╛рде рдХрдИ рдмрд╛рдЗрдирд░реА рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рд╣реЛрдВрдЧреЗред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рдлрд╝реЛрд▓реНрдбрд░ рдЦреЛрд▓реЗрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдмрдЯрди рдкрд░ рдЦреАрдВрдЪреЗрдВред



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

рдореИрдВ рдорд╛рдлреА рдорд╛рдБрдЧрддрд╛ рд╣реВрдБ рдЕрдЧрд░ рдореИрдВ рдХрд┐рд╕реА рдХреЛ рд╢рд┐рд▓реНрдк рдХреА рдЧрд▓рддрддрд╛ рдпрд╛ рдЧрд▓рдд рд╢рдмреНрджреЛрдВ рд╕реЗ рдкрд░реЗрд╢рд╛рди рдХрд░рддрд╛ рд╣реВрдБред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдХрдо рд╕реЗ рдХрдо рдпрд╣ рдЕрдиреБрднрд╡ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИред

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


All Articles