рдПрдХ рд╕рдордп, рдПрдХ рд╡рд┐рд╖рдп рд╕рд╛рдордиреЗ рдЖрдпрд╛ рдХрд┐
рдПрдХ рдСрдирд▓рд╛рдЗрди рдЧреЗрдо рдореЗрдВ
рдХреИрдкреНрдЪрд╛ рдЬреИрд╕реА рдХреЛрдИ рдХрд╖реНрдЯрдкреНрд░рдж рдмрд╛рдд рдереАред рдЕрдкрдиреЗ рдЖрдк рд╕реЗ, рдХреИрдкреНрдЪрд╛ рджрд░реНрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЦреЗрд▓ рд╕реЗ рд╡рд┐рдЪрд▓рд┐рдд рд╣реЛрдиреЗ рд╕реЗ рдмрд╣реБрдд рдЕрдЪреНрдЫреЗ рдкрд░рд┐рдгрд╛рдо рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдЦрд╛рд╕рдХрд░ рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдкрд╣рд▓реА рдмрд╛рд░ рджрд░реНрдЬ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рджреБрд╢реНрдорди рднреА рдирд╛рд░рд╛рдЬ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдпрд╣ рдмрд╛рдд рдирд╣реАрдВ рд╣реИред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдмреБрд░реА рдмрд╛рдд рд╣реИ рдЬреЛ рд╕реНрдерд╛рдиреАрдп рдмреЙрдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЙрди рдЫреЛрдЯреЗ рд▓реЛрдЧреЛрдВ рдиреЗ рдХреИрдкреНрдЪрд╛ рдкрд░ рдареЛрдХрд░ рдЦрд╛рдИ, рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЦреЗрд▓ рддреБрд░рдиреНрдд рдЗрдХрд╛рдЗрдпреЛрдВ рдФрд░ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рдиреБрдХрд╕рд╛рди рдХреЗ рд╕рд╛рде рдЙрдиреНрд╣реЗрдВ рдЬреБрд░реНрдорд╛рдирд╛ рдХрд░рддрд╛ рд╣реИред рдПрдХ рдЕрдкреНрд░рд┐рдп рдмрд╛рдд рдХрд╣рдиреЗ рдХреЗ рд▓рд┐рдПред
рддреЛ, рдХрд╛рд░реНрдп:
рдореИрдВ рдХреИрдкреНрдЪрд╛ рджрд░реНрдЬ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЕрдЧрд░ рдЖрдк рдЕрдкрдиреЗ рдЖрдк рд╕реЗ рдЦреЗрд▓рддреЗ рд╣реИрдВ, рднрд▓реЗ рд╣реА рдмреЙрдЯ рдЖрдкрдХреЗ рд▓рд┐рдП рдЦреЗрд▓рддрд╛ рд╣реИ, рдЕрдЧрд░ рдЖрдк рд╕реЛрддреЗ рд╣реИрдВред
рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реНрдерд┐рддрд┐: 40 рдШрдВрдЯреЗ рдХрд╛ рд╕рдордп (рдЬрд╣рд╛рдЬ рдкрд░ рдШрдмрд░рд╛рд╣рдЯ рдХреЗ рд▓рд┐рдП)ред
рдкрд╕рдВрджреАрджрд╛ рд╕реНрдерд┐рддрд┐: рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рд▓рд┐рдП рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдлрд╝рд╛рдЗрд▓ред
рдПрдХ рдФрд░ рд╡рд╛рдВрдЫрдиреАрдп рд╕реНрдерд┐рддрд┐: рдкрд░рд┐рдгрд╛рдо рдореЗрдЧрд╛рдмрд╛рдЗрдЯ рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдореИрдВ рддреБрд░рдВрдд рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рдореИрдВ рдЧреЗрдорд░ рдирд╣реАрдВ рд╣реВрдВ, рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд рднреА, рдореИрдВ рдСрдирд▓рд╛рдЗрди рдЧреЗрдо рдХреЗ рдХреБрдЫ рдкреНрд░рддрд┐рджреНрд╡рдВрджреНрд╡реА рд╣реВрдВ, рдФрд░ рдореИрдВрдиреЗ рдЗрд╕ рдЙрджреНрдпреЛрдЧ рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреНрд░рд╡реЗрд╢ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рд╡реНрдпрд╡рд╕рд╛рдп рдХреЛ рд▓реЗрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдорд╛рдорд▓рд╛, рд╢рд╛рдпрдж рдХреИрдкреНрдЪрд╛ рдФрд░ рдЗрд╕ рд╕реЗ рдЬреБрдбрд╝реЗ рдЖрддрдВрдХ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рдорджреНрджреЗрдирдЬрд░ рдХреБрдЫ рд▓рд╛рдн рд▓рд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдХреБрдЫ рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдирд╣реАрдВ рд▓рд╛рдпрд╛ рдЧрдпрд╛ред
рддреЛ рдХреНрдпрд╛ рдХрд░реЗрдВ?
рдкреНрд░рдпрд╛рд╕ 1
рдПрдХ рд╕рд┐рд╕реНрдЯрдо рдЯреВрд▓ рд▓рд┐рдЦреЗрдВ рдЬреЛ рд╕рднреА рд╕реНрдерд╛рдкрд┐рдд рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рд╕реЗ HTTP рдЕрдиреБрд░реЛрдзреЛрдВ рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЙрди рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рдХреИрдкреНрдЪрд╛ рдХреИрдкреНрдЪрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рджреМрд░рд╛рди, рдЬреЛ рдЕрдиреНрдп рдмрд╛рддреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдерд╛, рд▓рдЧрднрдЧ рджреЛ рдорд╣реАрдиреЗ рджреЛ рдмреЗрд▓рд╛рд░реВрд╕реА рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдЬрдорд╛ рд╣реЛ рд░рд╣реЗ рдереЗ, рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЛ C рд╕реЗ C # рдореЗрдВ рдмрджрд▓ рд░рд╣реЗ рдереЗ, рдФрд░ рдлрд┐рд░ Java рдореЗрдВ рд╕рд╛рдордВрдЬрд╕реНрдп рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд░рд╣реЗ рдереЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдорд╢реАрди рдкрд░ рд╕реНрдерд╛рдкрд┐рдд OpenSSL рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рдереАред рд╣рд░ рдмрд╛рд░ рдХрд╛рд░реНрдп рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╡рд┐рд╡рд░рдгреЛрдВ рд╕реЗ рдШрд┐рд░рд╛ рд╣реБрдЖ рдерд╛ред рдЦреИрд░, рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рдерд╛ред
рдкреНрд░рдпрд╛рд╕ 2: рдЕрдкрдиреЗ рдЖрдк рдХреЛ, рд╕рдм рдЦреБрдж рдХреЛ
рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдХрдИ рддрд░реАрдХреЗ рдирд╣реАрдВ рд╣реИрдВ, рдФрд░ рд╡рд┐рдХрд▓реНрдк рдХреЗрд╡рд▓ SOCKS рдкреНрд░реЙрдХреНрд╕реА рдФрд░ HTTP рдкреНрд░реЙрдХреНрд╕реА рдХреЗ рдмреАрдЪ рдЖрдпрд╛ рд╣реИред рдХреБрдЫ рд╕рдордп рдмрд╛рдж, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЧрдпрд╛ рдХрд┐ рд╕рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди SOCKS рдкреНрд░реЙрдХреНрд╕реА рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рд╡рд┐рдХрд▓реНрдк рдЕрд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЧрдпрд╛ рд╣реИред
рдордВрдЪ рдХрд╛ рдЪрдпрди
рдЪреБрдирд╛рд╡ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рдерд╛, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдкреНрд░рдпрд╛рд╕ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП 1. рд╕реА рдФрд░ рд╕реА # рдХреЛ рдЬрд▓реНрджреА рд╕реЗ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЕрдиреБрднрд╡ рдХреА рдкреВрд░реА рдХрдореА рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдПред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреБрд╕реНрддрдХрд╛рд▓рдп, рдЖрд╡рд╢реНрдпрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдореЗрдВ рд╕рдореГрджреНрдз, рдкрд╣рдЪрд╛рдиреЗ рдЧрдП:
рдЬрд╛рд╡рд╛ рдпрд╣ рдорд╛рди рд▓реЗрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ рдХрд┐ рдЗрддрдиреА рдЫреЛрдЯреА рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдХ рдЬреЗрд╡реАрдПрдо рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдпрд╣ рдХрд╣рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд░рд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдХрд┐рддрдиреЗ рдореЗрдЧрд╛рдмрд╛рдЗрдЯ рд╣реИрдВред рдЬрд╛рд╡рд╛ рдЧрд┐рд░ рдЧрдпрд╛ред
рдЕрдЬрдЧрд░ рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, рдпрд╣ рд╣рд░ рдЬрдЧрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рд╕рдм рдХреБрдЫ рд╢рд╛рдорд┐рд▓ рд╣реИ (рдмреИрдЯрд░реА рд╢рд╛рдорд┐рд▓ рд╣реИрдВ)ред рдЗрд╕рдХрд╛ рд╡рдЬрди 7Mb тАЛтАЛрд╣реИред рдЖрдзреБрдирд┐рдХ рдорд╛рдирдХреЛрдВ рд╕реЗ, рдЬрд╝рд╛рд╣рд┐рд░ рд╣реИ, рдереЛрдбрд╝рд╛, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдореИрдВ рдЕрдзрд┐рдХ рдХреЙрдореНрдкреИрдХреНрдЯ рдЪрд╛рд╣рддрд╛ рдерд╛ред рдкреНрд░рд╢реНрди рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕ рдЗрдВрд╕реНрдЯреЙрд▓рд░ рдХреЛ рдореЗрд░реА рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЗ рдЗрдВрд╕реНрдЯреЙрд▓рд░ рдореЗрдВ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдПред рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдпрд╣ рдкрд╛рдпрдерди рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╣ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рддрд░рд╣ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдЗрдВрд╕реНрдЯреЙрд▓рд░ рдореЗрдВ рдЗрдВрд╕реНрдЯреЙрд▓рд░ рдХрд┐рдпрд╛ рдерд╛ рдФрд░ рдореИрдВ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛ред
рд░реВрдмреА рдореЗрд░реА рдЦреЛрдЬ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рд▓рд┐рдП рдПрдХ-рдХрджрдо рдЗрдВрд╕реНрдЯреЙрд▓рд░ рдирд╣реАрдВ рдерд╛ред рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдФрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗред рдЕрдм, рдпрд╣ рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╕рдордп MinGW, MSYS рдФрд░ рдЕрдиреНрдп рдЪреАрдЬреЛрдВ рдХреА рд╕реНрдерд╛рдкрдирд╛ рдХрд╛ рддрд╛рддреНрдкрд░реНрдп рд╣реИ рдЬреЛ рднрдпрднреАрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд╡рдЬрди 7Mbред
рдЗрдВрд╕реНрдЯреЙрд▓рд░ рдореЗрдВ рдЗрдВрд╕реНрдЯреЙрд▓рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рд╕рд╡рд╛рд▓ рдмрдирд╛ рд╣реБрдЖ рд╣реИред
рд▓реБрдЖ C ++ рдЧреЗрдо рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░реНрд╕ рдХреЗ рдмреАрдЪ рдПрдХ рдмрд╣реБрдд рдкреБрд░рд╛рдиреА рдФрд░ рд▓реЛрдХрдкреНрд░рд┐рдп рднрд╛рд╖рд╛ред рд╕реБрд╕реНрдд рд╕рдореБрджрд╛рдп, рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдЕрд▓рдЧ рдХрд░рдирд╛ред рдЖрд╡рд╢реНрдпрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдореЗрдВ
рдХрд╕реНрдЯрдо рд╡реАрдПрдо
рдЕрд╕реЗрдВрдмрд▓реА рдХрд╛ рд╡рдЬрди рдХреЗрд╡рд▓ 800Kb рд╣реИред рдЗрдВрд╕реНрдЯреЙрд▓рд░ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдПрдХреНрд╕рдИ рдлрд╛рдЗрд▓реЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдЗрд╕реЗ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рд▓реБрдЖ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЖрдкрдХреЛ рдЬреЛ рднреА рдЪрд╛рд╣рд┐рдП рд╡рд╣ рд╡рд┐рди, рдореИрдХрдУрдПрд╕, рд▓рд┐рдирдХреНрд╕ рдХреЗ рд▓рд┐рдП рд╕рдВрдХрд▓рд┐рдд рд╣реИ, рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрд╕реНрдХрд░рдг 32 рдФрд░ 64 рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣реИрдВред рдЖрдкрдХреЛ рдХреНрдпрд╛ рдЪрд╛рд╣рд┐рдП
рдЗрд╕рд▓рд┐рдП, рдореИрдВрдиреЗ
рд▓реБрдЖ рдХрд╛ рдЕрдзреНрдпрдпрди рд╢реБрд░реВ рдХрд┐рдпрд╛ (рдПрдХ рдирдП рд╕рд╛рд▓ рдХреА рдЗрдЪреНрдЫрд╛ рд╕рдЪ рд╣реБрдИ, рдореИрдВрдиреЗ рдПрдХ рдирдИ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рд╕реАрдЦреА)ред
рднрд╛рд╖рд╛ рдореЗрдВ рдЕрджреНрднреБрдд рдЧреБрдг рд╣реИрдВ, рдЬреИрд╕реЗ:
- рд╕реИрдВрдбрдмреЙрдХреНрд╕рд┐рдВрдЧ (рдорд╛рдгрд┐рдХ рдореЗрдВ рдХреЗрд╡рд▓ рд╕рдВрд╕реНрдХрд░рдг 1.8.5 рдХреЗ рд▓рд┐рдП рдПрдХ
рдкреИрдЪ рдерд╛): рдЖрдкрдХреЛ рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдХреЛрдб рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЛ рд╕реАрдорд┐рдд рдХрд░рддрд╛ рд╣реИ;
- рдХреЛрд░рдЖрдЙрдЯ (рдЬреИрд╕реЗ 1.9 рд╕реЗ рд░реВрдмреА рдлрд╛рдЗрдмрд░): рдЖрдкрдХреЛ рдмрд╣реБрдд рд╣рд▓реНрдХреЗ рд╕рд╣рдХрд╛рд░реА рдорд▓реНрдЯреАрдЯрд╛рд╕реНрдХрд┐рдВрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ;
- рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ (рдЕрдзрд┐рдХ рд╕рдЯреАрдХ, рд╕рд░рд▓ - рдХреЗрд╡рд▓ рдПрдХ рд╕рд╛рд╣рдЪрд░реНрдп рд╕рд░рдгреА рд╣реИ) рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛, рдЬреЛ, рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ, рдЕрдзрд┐рдХрд╛рдВрд╢ рдбреЗрдЯрд╛ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ;
... рдмрд╣реБрдд рдЕрдзрд┐рдХ, рдПрдХ рдкреЛрд╕реНрдЯ рдореЗрдВ рдЗрддрдирд╛ рдХрдард┐рдиред
рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдПрдХ HTTP рдкреНрд░реЙрдХреНрд╕реА рд╕рд░реНрд╡рд░ рдХреЗ рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ рдЕрдиреБрд░реЛрдзреЛрдВ рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдРрд╕реА рдкреНрд░рдгрд╛рд▓реА рдмрдирд╛рдирд╛ рдерд╛, рдЬрд┐рд╕реЗ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ (рдЕрдЪреНрдЫреЗ рд╕реЗ рдмреБрд░реЗ, рдЕрдЪреНрдЫреЗ рдирд╣реАрдВ)ред
рдпрд╣ рд╡рд┐рдЪрд╛рд░ рд╕рд░рд▓ рд╣реИ: рдЯреАрд╕реАрдкреА рд╕рд░реНрд╡рд░ рдХреЛ рд▓рдЯрдХрд╛рдПрдВ, рдЧреНрд░рд╛рд╣рдХ рдЬреЛ рдорд╛рдВрдЧрддрд╛ рд╣реИ рдЙрд╕реЗ рд╕реБрдиреЗрдВ, HTTP рд╣реЗрдбрд░ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░реЗрдВ, HOST рджреЗрдЦреЗрдВ, HTTP рд╣реЗрдбрд░ "рдкреНрд░реЙрдХреНрд╕реА-рдХрдиреЗрдХреНрд╢рди" рдХреЛ рд╣рдЯрд╛ рджреЗрдВ, рдЙрд╕ рд╡реНрдпрдХреНрддрд┐ рдХреЛ рдЕрдиреБрд░реЛрдз рднреЗрдЬреЗрдВ, рдЬрд┐рд╕ рдкрд░ рдЙрд╕рдХрд╛ рдЗрд░рд╛рджрд╛ рдерд╛, рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ, рдЙрд╕реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рднреЗрдЬреЗрдВ, рдЖрджрд┐ред
рд╕рд░реНрд╡рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдФрд░ рдпрд╣ рддрдм рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдпрджрд┐ рд╕рд░реНрд╡рд░ HTTPS рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕реМрднрд╛рдЧреНрдп рд╕реЗ рдпрд╣ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдХрд╛рдлреА рд╕рд░рд▓ рдирд┐рдХрд▓рд╛,
рд░реВрдмреА рдХреЗ рд▓рд┐рдП рд░реВрдмреА рдХреЗ рдЕрдиреБрд░реВрдк рдПрдирд╛рд▓реЙрдЧ
рдореИрдХреЗрдирд╛рдЗрдЬ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдкрд░реНрдпрд╛рдкреНрдд рдирд┐рдХрд▓рд╛, рдЬреЛ рд▓реБрдЖ рдХреА 190 рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рдХреБрдЫ рднреА рд╡рд╣ рд╣реЗрдбрд░ рдФрд░ рдЕрдиреБрд░реЛрдз рдХреЗ рд╢рд░реАрд░ рдХреЗ рд╕рд╛рде рд▓реЗрддрд╛ рд╣реИ, рдЖрдкрдХреЛ HTTP рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рднреА рдлрд┐рд▓реНрдЯрд░ рдЪрд╛рд╣рд┐рдП рдЙрд╕реЗ рд▓рд┐рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдЦреИрд░, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдореЗрдВ рд╣рд╛рдирд┐рдХрд╛рд░рдХ
reCAPTCHA рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдирд╛ рдерд╛, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛:
- рдореВрд▓ рдЕрдиреБрд░реЛрдз рдЯреНрд░реВрдХреЙрд▓рд░ рдХреЗ рдкреЗрдЬ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ (рдФрд░ HTML рдкреЗрдЬ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛):
string.find(request.uri(), 'travian') and mimetype and string.find(mimetype, 'text/html')
- рдХреНрдпрд╛ "рдЙрдкрдпреЛрдЧреА" рдЧреЗрдо рдбреЗрдЯрд╛ рдХреЗ рдмрдЬрд╛рдп рдкрд░рд┐рдгрд╛рдореА рдкреГрд╖реНрда рдкрд░ рдПрдХ рдХреИрдкреНрдЪрд╛ рдерд╛:
local captcha, captcha_key = string.match(response.body(), '<iframe src="(http://api.recaptcha.net/noscript??(k=[%a%d_]+&lang=en))')
рдХреИрдкреНрдЪрд╛ рдХреЛ рдХреИрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдП (рдмрд╣реБрдд рдЖрдзреБрдирд┐рдХ рдФрд░ рдЙрдЪреНрдЪ-рдкреНрд░рджрд░реНрд╢рди рд╡рд╛рд▓реЗ рднрд╛рд░рддреАрдп рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдмреЗрд╣рдж рд╕рд╕реНрддреЗ рд░рд╣рдиреЗ рд╡рд╛рд▓реЗ рднрд╛рд░рддреАрдп) рдХреА рдорджрдж рд╕реЗ рд╣рдорд╛рд░реЗ рд╡рд┐рд╢реБрджреНрдз рд░реВрдк рд╕реЗ рддрдХрдиреАрдХреА рд╡рд┐рд╖рдп рд╕реЗ рдереЛрдбрд╝рд╛ рдкрд░реЗ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХрд╣реАрдВ рдФрд░ред
рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдХреИрдкреНрдЪрд╛ рдЪрд┐рддреНрд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛, рднрд╛рд░рддреАрдпреЛрдВ рдХреЛ рднреЗрдЬрд╛ рдЧрдпрд╛ (рдХреЗрд╡рд▓ рдорд╛рдорд▓реЗ рдореЗрдВ 2 рдмрд╛рд░), 5-10 рд╕реЗрдХрдВрдб рдХреЗ рдмрд╛рдж рдкреНрд░рд╛рдкреНрдд рдХрд┐рдП рдЧрдП рдЙрддреНрддрд░реЛрдВ рдХреА рддреБрд▓рдирд╛ рдХреА рдЧрдИ, рдФрд░ рдпрджрд┐ рд╡реЗ рд╕рдорд╛рди рдереЗ, рддреЛ рдкрд░рд┐рдгрд╛рдо рдПрдХ рдЕрдиреБрд░реЛрдз рдХреЗ рджреНрд╡рд╛рд░рд╛ HTTP POST рдХреЗ рд▓рд┐рдП рднреЗрдЬрд╛ рдЧрдпрд╛ рдерд╛, рдЬрд┐рд╕рдореЗрдВ рдкреАрдбрд╝рд┐рдд рдПрдХ рдкреГрд╖реНрда рдЬрд╛рд░реА рдХрд░рддрд╛ рд╣реИ, рдЦреБрд╢реА рд╕реЗ рд░рд┐рдкреЛрд░реНрдЯрд┐рдВрдЧ рдХрд░рддрд╛ рд╣реИ рд╣рдо, рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ, рд▓реЛрдЧ рд╣реИрдВ, рдФрд░ "рдЙрдкрдпреЛрдЧреА" рдЦреЗрд▓ рдбреЗрдЯрд╛ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ред рд╣рдо рдЗрд╕ рдкреГрд╖реНрда рдХреЛ рдПрдХ рдкрд╣рд▓реЗ рд╕реЗ рди рджрд┐рдЦрд╛рдиреЗ рд╡рд╛рд▓реЗ рдЧреНрд░рд╛рд╣рдХ рдХреЛ рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ рдЬреЛ рдХреЗрд╡рд▓ рдПрдХ рдорд╛рдореВрд▓реА рд╡рд┐рд░рд╛рдо рдкрд░ рдзреНрдпрд╛рди рджреЗ рд╕рдХрддрд╛ рд╣реИред рдмреЗрдореЗрд▓ рдХреЗ рдирд┐рд░рд╛рд╢рд╛рд╡рд╛рджреА рдорд╛рдорд▓реЗ рдореЗрдВ, рдЪрд┐рддреНрд░ рдлрд┐рд░ рд╕реЗ рднрд╛рд░рддреАрдпреЛрдВ рдХреЛ рднреЗрдЬрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдЗрд╕реА рддрд░рд╣, рдЬрдм рддрдХ рдХрдо рд╕реЗ рдХрдо рджреЛ рд╕рдорд╛рди рд╕рдорд╛рдзрд╛рди рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд┐рдП рдЧрдП рдереЗ, рдмрд╛рдХреА рдзрдирд╡рд╛рдкрд╕реА рдХреЗ рд▓рд┐рдП рд╕рд╣рд╛рдпрддрд╛ рд╕реЗрд╡рд╛ рдореЗрдВ рднреЗрдЬреЗ рдЧрдП (рднрд╛рд░рддреАрдпреЛрдВ рдХреЗ рд▓рд┐рдП рд▓рдЧрднрдЧ рдХреЛрдИ рдореБрдлреНрдд рдирд╣реАрдВ)ред
рддреЛ, рдпрд╣рд╛рдБ рдпрд╣ рд╣реИ, рд╕рдорд╛рдзрд╛рди рд╣реИред
рд╣рд╛рд▓рд╛рдБрдХрд┐, рдХреБрдЫ рдРрд╕рд╛ рд╣реБрдЖ рдЬрд┐рд╕рдХреА рдХрд┐рд╕реА рдХреЛ рдЙрдореНрдореАрдж рдирд╣реАрдВ рдереАред рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЕрдиреНрдп рд╕рд╛рдЗрдЯреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА, рдпрд╣ рдЕрдХрд▓реНрдкрдиреАрдп рд╣реИ! рдЙрдирдореЗрдВ рд╕реЗ HTTPS рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рднреА рдПрдХреНрд╕реЗрд╕ рдХреА рдЧрдИ рд╕рд╛рдЗрдЯреЗрдВ рдереАрдВ, рдФрд░ рдХреБрдЫ рдХреЛ рдирд┐рдпрдорд┐рдд рдкреНрд░реЙрдХреНрд╕реА рдХреЗ рдмрд┐рдирд╛ рдСрди / рдСрдл рд╕реНрд╡рд┐рдЪрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдерд╛ред
рдФрд░ рдлрд┐рд░ рднреА рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рдерд╛ рдХрд┐ рдХрдИ рдЕрдиреБрд░реЛрдз рдПрдХ рд╕рд╛рде рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдП рдЬрд╛рддреЗ рдереЗред рдпрд╣ рдЕрдкреНрд░рд┐рдп рдерд╛ рдХрд┐ Google рдПрдирд╛рд▓рд┐рдЯрд┐рдХреНрд╕ рдХрднреА-рдХрднреА рдПрдХ рд╕реНрдерд╛рдпреА рдорд┐рдирдЯ рдмрдирд╛рддрд╛ рд╣реИ, рдЬреЛ рд╕рд┐рдВрдЧрд▓-рдереНрд░реЗрдбреЗрдб рдкреНрд░реЙрдХреНрд╕реА рдХреЛ рд╕реНрдЯреИрдВрдбрдмрд╛рдп рдореЛрдб рдореЗрдВ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИред
рдЦреИрд░, рдЗрд╕рдХреЗ рд▓рд┐рдП, рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдЯреАрд╕реАрдкреА рд╕рд░реНрд╡рд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рддреАрди рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдереЗред рд╡рд╣ рд╣реИ - рд╣рдо рдПрдХ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдХрдиреЗрдХреНрд╢рди рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд╣рдо рдбреЗрдЯрд╛ рдХрд╛ рдПрдХ рдЯреБрдХрдбрд╝рд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ, рд╣рдо рдбрд┐рд╕реНрдкреИрдЪрд░ рдкрд░ рдирд┐рдпрдВрддреНрд░рдг рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдЕрднреА рднреА рдЖрдиреЗ рд╡рд╛рд▓реЗ рдХрдиреЗрдХреНрд╢рди рд╣реИрдВ рдпрд╛ рдЦреБрд▓реЗ рдХрдиреЗрдХреНрд╢рди рд╣реИрдВ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ (рдЪрдпрди / kpoll / epoll) рд╣реИ, рд╣рдо рдмрджрд▓реЗ рдореЗрдВ рдирд┐рдпрдВрддреНрд░рдг рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред
рдХрд╛рд╢ рдФрд░ рдЖрд╣, рдЪреВрдВрдХрд┐ рдРрд╕реЗ рд╕рднреА рдХрдиреЗрдХреНрд╢рди рд╕реНрдерд╛рдиреАрдп рдорд╢реАрди рдкрд░ рд╣реЛрддреЗ рд╣реИрдВ, рдпрд╣ рд╕рдм рд▓рдЧрднрдЧ рддреБрд░рдВрдд рд╣реЛрддрд╛ рд╣реИред рдФрд░ рдзреАрдореЗ рдХрдиреЗрдХреНрд╢рди рдЖрдЙрдЯрдЧреЛрдЗрдВрдЧ рд╣реИрдВред рдореМрдЬреВрджрд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ (
рдХреЛрдкрд╕ ,
рдПрд╕реЛрдХ ) рдХреЛ
рдкреЛрдХ рдХрд░рдирд╛ , рдЬреЛ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдХрдиреЗрдХреНрд╢рдиреЛрдВ рдХреЛ рдорд▓реНрдЯреАрдкреНрд▓реЗрдХреНрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдП рдЧрдП рд╣реИрдВ, рдЕрдкрдиреЗ рдЦреБрдж рдХреЗ рд▓рд┐рдЦрдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдХрдард┐рди рдереЗред рдФрд░ рдореИрдВрдиреЗ рдПрдХ рдЫреЛрдЯреА (272 рдкрдВрдХреНрддрд┐рдпрд╛рдБ) рд▓рд┐рдЦреАред рдЗрд╕ рддрдереНрдп рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХрд┐ рд╕рднреА рдЗрдирдХрдорд┐рдВрдЧ рдФрд░ рдЖрдЙрдЯрдЧреЛрдЗрдВрдЧ рдХрдиреЗрдХреНрд╢рди рдЕрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдЖрдк рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдЪрдХреНрд░ рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдкреВрд▓ рдореЗрдВ рдХрд┐рд╕реА рднреА рдЕрдзрд┐рдХ рдХреЛрд░рдЖрдЙрдЯреНрд╕ (рдореБрдЭреЗ рд╕рд╣реА рдХрд░реЗрдВ, рд╡рд┐рд╢реЗрд╖ рд╢рд┐рдХреНрд╖рд╛ рд╡рд╛рд▓реЗ рд▓реЛрдЧ) рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред
рдареАрдХ рд╣реИ, рд╕рдм рдХреБрдЫ рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛, рдФрд░ рдЧрддрд┐ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рдХреЗрд╡рд▓ рдЕрдкреНрд░рддреНрдпрдХреНрд╖ рд░реВрдк рд╕реЗ рдкреАрдЫреЗ рд░рд╣ рдЧрдпрд╛ рдХрд┐ рдпрд╣ рдкреНрд░реЙрдХреНрд╕реА рдХреЗ рдмрд┐рдирд╛ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдЬрдм рдореБрдЭреЗ рд╣реЗрдбрд░ рдХреЗ рд╕рд╛рде рд╕рд░реНрд╡рд░ рд╕реЗ рдПрдХ рдкреГрд╖реНрда рдкреНрд░рд╛рдкреНрдд рд╣реБрдЖ рддреЛ рдореЗрд░рд╛ рдЖрд╢реНрдЪрд░реНрдп рдХреИрд╕рд╛ рдерд╛:
рд╕рд╛рдордЧреНрд░реА-рдПрдирдХреЛрдбрд┐рдВрдЧ: gzip
рд╕реНрдерд╛рдирд╛рдВрддрд░рдг-рдПрдиреНрдХреЛрдбрд┐рдВрдЧ: chunked
рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЬрд╡рд╛рдм рдХреЗ рд╢рд░реАрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкреВрд░реНрдг krakozyabryред
рдкрд╣рд▓рд╛ рд╡рд┐рдЪрд╛рд░ рдЕрдиреБрд░реЛрдз рдореЗрдВ рд╕реНрд╡реАрдХрд╛рд░-рдПрдирдХреЛрдбрд┐рдВрдЧ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдирд╛ рдерд╛, рддрд╛рдХрд┐ рд╕рд░реНрд╡рд░ рдбреЗрдЯрд╛ рдХреЛ рдкреИрдХ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рди рдХрд░реЗ, рдФрд░ HTTP 1.1 рдХреЛ HTTP 1.0 рдореЗрдВ рдмрджрд▓ рджреЗ рддрд╛рдХрд┐ рдпрд╣ "рд╡рд┐рдЦрдВрдбреВ" рди рднреЗрдЬреЗред рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЧрддрд┐ рдореЗрдВ рдЧрд┐рд░рд╛рд╡рдЯ рдФрд░ рдпрд╛рддрд╛рдпрд╛рдд рдореЗрдВ рд╡реГрджреНрдзрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрд╛, рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдкрд░ рджрдпрд╛ рдХреАред
рдпрд╣ рдЗрд╕ рддрд░рд╣ рдирд┐рдХрд▓рд╛:
if headers(pipe, target)['Transfer-Encoding'] == 'chunked' then
target.body = dechunk(target.body)
end
function dechunk(chunkie)
local chunk_size
local chunk
local chunks = {}
chunkie, chunk_size = readline(chunkie)
while chunk_size and tonumber(chunk_size, 16) > 0 do
chunkie, chunk = readbytes(chunkie, tonumber(chunk_size, 16))
table.insert(chunks, chunk)
chunkie, chunk_size = readline(chunkie)
if not chunk_size or chunk_size == '' then -- sometimes there's a crlf, sometimes not
chunkie, chunk_size = readline(chunkie)
end
end
return table.concat(chunks)
end
рдореИрдВ рдореИрдЯрд░рд┐рдпрд▓ рдкрдврд╝рдиреЗ рдЧрдпрд╛ рдерд╛ред рднрдЧрд╡рд╛рди рдХрд╛ рд╢реБрдХреНрд░ рд╣реИ, рдкреНрд░рд▓реЗрдЦрди рдХреЗ рдпреЗ рдЖрдЗрдЯрдо рд╕рднреНрдп рд╣реИрдВред
"рдЪрдВрдХреНрд╕" рдХреЛ рдЧреЛрдВрдж рдХрд░реЗрдВ, рд╣рдореЗрдВ рдПрдХ gzip рдлрд╝рд╛рдЗрд▓ рдорд┐рд▓рддреА рд╣реИ (рдХрднреА-рдХрднреА рдЕрдкрд╕реНрдлреАрддрд┐ рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЗрд╕реЗ рдЕрднреА рддрдХ рдирд╣реАрдВ рджреЗрдЦрд╛ рд╣реИ)ред рдЕрдирдкреИрдХ (
рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд▓рд┐рдП рдбреЗрд╡рд┐рдб рдорд╛рдиреБрд░рд╛ рдХрд╛ рдзрдиреНрдпрд╡рд╛рдж)ред
рдЕрдирдкреИрдХ рдХрд░рдирд╛ рдФрд░ рднреА рдЖрд╕рд╛рди рд╣реЛ рдЧрдпрд╛:
if headers(pipe, target)['Content-Encoding'] == 'gzip' and #target.body > 0 then
local decoded = {}
gzip.gunzip {input=target.body, output=function(byte) table.insert(decoded, string.char(byte)) end}
target.body = table.concat(decoded)
end
рдереЛрдбрд╝рд╛ рдмрдЪрд╛
HTTPS рд╕рд╛рдЗрдЯреЛрдВ рдХреЗ рд▓рд┐рдП HTTPS рдЯрдирд▓рд┐рдВрдЧ рдмрдирд╛рдПрдВ (рднрдЧрд╡рд╛рди рдХрд╛ рд╢реБрдХреНрд░ рд╣реИ, рдЖрдкрдХреЛ OpenSSL рдХреЛ рдЯрдХреНрдХрд░ рджреЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдмрд╕ рдкрд╛рд░рджрд░реНрд╢реА рд░реВрдк рд╕реЗ рдбреЗрдЯрд╛ рдХреЛ рдЖрдЧреЗ рдФрд░ рдкреАрдЫреЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВ):
if request.method() == 'CONNECT' then
local sent_to_server, err = client.send("HTTP/1.0 200 Connection established\r\nProxy-agent: BotHQ-Agent/1.2\r\n\r\n")
print('https transparent connection')
https(client, server)
return
end
local function https(client, server)
close_callback = function()
client.close()
server.close()
end
client.receive_subscribe(function(data)
server.send(data)
end, close_callback)
server.receive_subscribe(function(data)
client.send(data)
end, close_callback)
end
- рдЗрдВрд╕реНрдЯреЙрд▓рд░ рдореЗрдВ рдбрд╛рд▓реЗрдВ:
рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░,
рд╣рд░реЛрдХреВ рдкрд░
7zip sfx рдХреЗ рд▓реЙрдиреНрдЪ рдХреЗ рд╕рд╛рде рд░реЛрдорд╛рдВрдЪ рдПрдХ рдЕрд▓рдЧ рдкреЛрд╕реНрдЯ рдХреЗ рд▓рд╛рдпрдХ рд╣реИред рдЬреАрдд рдХреА рдЦреБрд╢реА рд╡рд┐рдХрд╛рд╕ рдХреЗ рдХрд┐рд╕реА рднреА рдореБрд╢реНрдХрд┐рд▓ рдХреНрд╖рдг рдХреА рджреЗрдЦрд░реЗрдЦ рдХрд░рддреА рд╣реИред
рд╡реИрд╕реЗ, рдореИрдВ рдЖрдкрдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдирддрд╛, рд▓реЗрдХрд┐рди рдореЗрд░реЗ рд▓рд┐рдП рдРрд╕рд╛ рдХрд░рдирд╛ рджрд┐рд▓рдЪрд╕реНрдк рдФрд░ рджрд┐рд▓рдЪрд╕реНрдк рдерд╛ред рдореБрдЭреЗ рд╕рдордп рд╡реНрдпрддреАрдд рдХрд░рдиреЗ рдХрд╛ рдкрдЫрддрд╛рд╡рд╛ рдирд╣реАрдВ рд╣реИред
рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ:
рдкреНрд░реЙрдХреНрд╕реА рд╕рд░реНрд╡рд░
рдпрд╣рд╛рдВ рд▓рд╛рдЗрди 71 рдкрд░
рд╣реИ ред
рдпрд╣рд╛рдВ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдЯреАрд╕реАрдкреА-рд╕рд░реНрд╡рд░-рдХреНрд▓рд╛рдЗрдВрдЯ 272 рд▓рд╛рдЗрдиреЛрдВ рдкрд░ред
190 рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рд▓рд┐рдП HTTP рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рдХреБрдЫ рдПрдирд╛рд▓реЙрдЧред
рдпрд╣рд╛рдВ 150 рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдХреИрдкреНрдЪрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╝рд┐рд▓реНрдЯрд░
рдХрд░реЗрдВ ред
рд╕реНрдерд╛рдкрдирд╛ рдлрд╝рд╛рдЗрд▓ рдЖрдХрд╛рд░ рдореЗрдВ рдореЗрдЧрд╛рдмрд╛рдЗрдЯ рд╕реЗ рдХрдо рд╣реИред
рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдЗрд╕ рдЪреАрдЬрд╝ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЙрдкрдпреЛрдЧреА рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╣реИрдВ, рди рдХрд┐ рдмрд╣реБрдд рдЕрдЪреНрдЫреЗ рд▓реЛрдЧреЛрдВ рд╕реЗ, рдЬреИрд╕реЗ "рд╕реНрд╡рдЪрд╛рд▓рд┐рдд" рдХреИрдкреНрдЪрд╛ рд╕реЙрд▓реНрд╡рд┐рдВрдЧ рдХреЗ рд╕рд╛рде рд╕реНрдкреИрдорд▓реЙрдХ, рдЙрдкрдпреЛрдЧреА рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП, рдЬрдм рдЖрдкрдХреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЯреНрд░реИрдлрд╝рд┐рдХ рдХреЛ рд▓рдЪреАрд▓реЗ рдврдВрдЧ рд╕реЗ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдпрд╣рд╛рдБ рдПрдХ рд╕рд░рд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдкреНрд░реЙрдХреНрд╕реА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ vk.com рд╕реЗ рдЬреБрдбрд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддреА рд╣реИ:
module(..., package.seeall)
function filter(request, response)
response.set_body('')
end
function pre(request, response)
return string.find(request.uri(), 'vk.com')
end
рд▓реБрдЖ 5.2 рдХреА рдЖрдЧрд╛рдореА рд░рд┐рд▓реАрдЬ рдХреЗ рд╕рд╛рде, рдХреЛрд░рдЯрд╛рдЗрди рд╕реЗ рдореЗрдЯрд╛рдореЗрдереЛрдбреНрд╕ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдкрд░ рдкреНрд░рддрд┐рдмрдВрдз рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рд╕реБрдВрджрд░ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, http.set_body рддрд░реАрдХреЗ рдЪрд▓реЗ рдЬрд╛рдПрдВрдЧреЗ, рдФрд░ рдмрд╣реБрдд рдХреБрдЫред