рдЕрдВрдЧреНрд░реЗрдЬрд╝реАрдлреНрд░реЗрдВрдЪрд╕реНрдкреЗрдирд┐рд╢

рдСрдирд╡рд░реНрдХреНрд╕ рдлрд╝реЗрд╡рд┐рдХреЙрди

ooniprobe - рдХреНрд▓рд╛рдЙрдб рдореЗрдВ рдСрдирд▓рд╛рдЗрди

рдЙрдмрдВрдЯреВ рдСрдирд▓рд╛рдЗрди, рдлреЗрдбреЛрд░рд╛ рдСрдирд▓рд╛рдЗрди, рд╡рд┐рдВрдбреЛрдЬ рдСрдирд▓рд╛рдЗрди рдПрдореБрд▓реЗрдЯрд░ рдпрд╛ рдореИрдХ рдУрдПрд╕ рдСрдирд▓рд╛рдЗрди рдПрдореБрд▓реЗрдЯрд░ рдкрд░ рдСрдирд╡рд░реНрдХреНрд╕ рдореБрдлреНрдд рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдкреНрд░рджрд╛рддрд╛ рдореЗрдВ рдУрдирд┐рдкреНрд░реЛрдм рдЪрд▓рд╛рдПрдВ

рдпрд╣ рдХрдорд╛рдВрдб рдУрдУрдиреАрдкреНрд░реЛрдм рд╣реИ рдЬрд┐рд╕реЗ рд╣рдорд╛рд░реЗ рдХрдИ рдореБрдлреНрдд рдСрдирд▓рд╛рдЗрди рд╡рд░реНрдХрд╕реНрдЯреЗрд╢рди рдЬреИрд╕реЗ рдХрд┐ рдЙрдмрдВрдЯреВ рдСрдирд▓рд╛рдЗрди, рдлреЗрдбреЛрд░рд╛ рдСрдирд▓рд╛рдЗрди, рд╡рд┐рдВрдбреЛрдЬ рдСрдирд▓рд╛рдЗрди рдПрдореБрд▓реЗрдЯрд░ рдпрд╛ рдореИрдХ рдУрдПрд╕ рдСрдирд▓рд╛рдЗрди рдПрдореБрд▓реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдСрдирд╡рд░реНрдХреНрд╕ рдлреНрд░реА рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдкреНрд░рджрд╛рддрд╛ рдореЗрдВ рдЪрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдХрд╛рд░реНрдпрдХреНрд░рдо:

рдирд╛рдо


ooniprobe - рдПрдХ рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗрдВрд╕рд░рд╢рд┐рдк рдорд╛рдк рдЙрдкрдХрд░рдгред

SYNOPSIS


ooniprobe [-рдПрдЪрдПрдирдПрд╕рдкреА] [--рд╕рдВрд╕реНрдХрд░рдг] [--рд╕реНрдкреВ] [-o рд░рд┐рдкреЛрд░реНрдЯ рдлрд╝рд╛рдЗрд▓] [-i рдЯреЗрд╕реНрдЯрдбреЗрдХ] [-c рдХрд▓реЗрдХреНрдЯрд░] [-b
рд╢реЗрдЦрд╝реАрдмрд╛рдЬрд╝] [-l рд▓реЙрдЧ рдлрд╝рд╛рдЗрд▓] [-O pcapfile] [-f рдХреЙрдиреНрдлрд┐рдЧрдлрд╛рдЗрд▓] [-d рджрд╛рддрд╛рджрд┐рд░] рдкрд░реАрдХреНрд╖рдг рдХрд╛ рдирд╛рдо

рд╡рд░реНрдгрди


ooniprobe рдЗрдВрдЯрд░рдиреЗрдЯ рд╕реЗрдВрд╕рд░рд╢рд┐рдк рдорд╛рдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдХрд░рдг рд╣реИред рд╣рдорд╛рд░рд╛ рд▓рдХреНрд╖реНрдп рд╣рд╛рд╕рд┐рд▓ рдХрд░рдирд╛ рд╣реИ
рд╕реЗрдВрд╕рд░рд╢рд┐рдк рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдЕрдиреБрд╕рдВрдзрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдбреЗрдЯрд╛ рдкреНрд░рд╛рд░реВрдк рдФрд░ рдХрд╛рд░реНрдпрдкреНрд░рдгрд╛рд▓реА рдХрд╛ рд╕реЗрдЯред

рд╡рд┐рдХрд▓реНрдк


-h or --рдорджрдж
рдпрд╣ рд╕рд╣рд╛рдпрддрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВ рдФрд░ рдмрд╛рд╣рд░ рдирд┐рдХрд▓реЗрдВред

-n or --рдирд╣реАрдВ-рдХрд▓реЗрдХреНрдЯрд░
рдУрдирд┐рдм рдХрд▓реЗрдХреНрдЯрд░ рдХреЛ рдиреЗрдЯ рдкрд░реАрдХреНрд╖рдг рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рдирд╛ рдЕрдХреНрд╖рдо рдХрд░реЗрдВред

-s or --рд╕реВрдЪреА
рд╕рднреА рдЙрдкрд▓рдмреНрдз рдиреЗрдЯ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреА рд╕реВрдЪреА рдмрдирд╛рдПрдВред

-p or --рдкреНрд░рд┐рдВрдЯрдбреЗрдХ
рдУрдУрдирд┐рдкреНрд░реЛрдм рдкрд░реАрдХреНрд╖рдг рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рдорд╛рдирдХ рдЖрдЙрдЯрдкреБрдЯ рдкрд░ рдкреНрд░рд┐рдВрдЯ рдХрд░реЗрдВ
рдбреЗрдХ.

-o or --рд░рд┐рдкреЛрд░реНрдЯ рдлрд╝рд╛рдЗрд▓
рд░рд┐рдкреЛрд░реНрдЯ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдкрде рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВред

-i or --рдЯреЗрд╕реНрдЯрдбреЗрдХ
рдЗрдирдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдкрд░реАрдХреНрд╖рдг рдбреЗрдХ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ: рдПрдХ yaml рдлрд╝рд╛рдЗрд▓ рдЬрд┐рд╕рдореЗрдВ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рдФрд░ рдЙрдирдХреЗ
рддрд░реНрдХред

-c or --рдПрдХрддреНрд░ рдХрд░рдиреЗрд╡рд╛рд▓рд╛
рдиреЗрдЯ рдкрд░реАрдХреНрд╖рдг рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рд╕рдВрдЧреНрд░рд╣рдХрд░реНрддрд╛ рдХрд╛ рдкрддрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВред рдпрд╣ рд╣рдореЗрд╢рд╛ рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреА рдЬрд╛рддреА рд╣реИ
рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ рдФрд░ рдмрд╛рдЙрдВрд╕рд░ рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рдЖрдкрдХреЗ рдкрд░реАрдХреНрд╖рдг рдпрд╛ рдкрд░реАрдХреНрд╖рдг рдбреЗрдХ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд▓реЗрдХреНрдЯрд░ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рджреЗрдВ
рдЪрд▓ рд░рд╣рд╛ рд╣реИред

-b or --рдмрд╛рдЙрдВрд╕рд░
рдмрд╛рдЙрдВрд╕рд░ рдХрд╛ рдкрддрд╛ рдЬреЛ рдЬрд╛рдВрдЪ рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░реЗрдЧрд╛ рдХрд┐ рдХрд┐рд╕ рдХрд▓реЗрдХреНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ рдФрд░
рдкрд░реАрдХреНрд╖рдг рд╕рд╣рд╛рдпрдХреЛрдВ рдХреЗ рдкрддреЗ. рдбрд┐рдлрд╝реЙрд▓реНрдЯ: httpo://nkvphnp3p6agi5qq.onion

-l or --рдмреЛрдЯрд╛ рджрд╕реНрддрд╛рд╡реЗрдЬ
рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд▓реЙрдЧ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдкрде

-O or --pcapfile
pcap рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдХреЗ рд▓рд┐рдП рдЙрдкрд╕рд░реНрдЧ.

-f or --рдХреЙрдиреНрдлрд╝рд┐рдЧрдлрд╝рд╛рдЗрд▓
ooniprobe рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдкрде рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВред

-d or --рджрд╛рддрд╛рджрд┐рд░
ooniprobe рдбреЗрдЯрд╛ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрде рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ

--рд╕реНрдкреВ рдЬреЛ рдХреБрдЫ рднреА рдШрдЯрд┐рдд рд╣реЛрддрд╛ рд╣реИ рдЙрд╕рдХрд╛ рдПрдХ рдмреЗрд╣рдж рд╡рд┐рд╕реНрддреГрдд рд▓реЙрдЧ рдкреНрд░рд┐рдВрдЯ рдХрд░реЗрдВред рдбрд┐рдмрдЧрд┐рдВрдЧ рдХрд░рддреЗ рд╕рдордп рдЙрдкрдпреЛрдЧреА
рдЬрдЯрд┐рд▓ рдХреЛрдб рдХреЛ рдлреНрд░реАрдЬ рдпрд╛ рд▓реЙрдХ рдХрд░ рджреЗрддрд╛ рд╣реИред

--рд╕рдВрд╕реНрдХрд░рдг
ooniprobe рд╕рдВрд╕реНрдХрд░рдг рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВ рдФрд░ рдмрд╛рд╣рд░ рдирд┐рдХрд▓реЗрдВред

ONIPROBE


рдпрд╣ рд╡рд╣ рдЙрдкрдХрд░рдг рд╣реИ рдЬреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдбреЗрдЯрд╛ рдХрд╛ рдпреЛрдЧрджрд╛рди рдХрд░рдиреЗ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрдиреЗ рд╡рд╛рд▓реЗ рд╕реНрд╡рдпрдВрд╕реЗрд╡рдХреЛрдВ рдФрд░ рдЕрдиреБрд╕рдВрдзрд╛рдирдХрд░реНрддрд╛рдУрдВ рдХреЛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ
рдЪрд▓рдирд╛ рдЪрд╛рд╣рд┐рдП.

ooniprobe рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдпрд╣ рдЪреБрдирдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдХрд┐ рдХреМрди рд╕рд╛ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдХреМрди рд╕рд╛ рдмреИрдХрдПрдВрдб рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП
рдкрд░реАрдХреНрд╖рдг рд░рд┐рдкреЛрд░реНрдЯ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдФрд░/рдпрд╛ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдореЗрдВ рдЙрдирдХреА рд╕рд╣рд╛рдпрддрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдУрдиреАрдкреНрд░реЛрдм рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рджреЛ рд╢реНрд░реЗрдгрд┐рдпреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ: рдпрд╛рддрд╛рдпрд╛рдд рдЬреЛрдбрд╝ - рддреЛрдбрд╝ рдФрд░ рд╕рд╛рдордЧреНрд░реА
рдЕрд╡рд░реВрдзреНрдж.

рдпрд╛рддрд╛рдпрд╛рдд рдЬреЛрдбрд╝ - рддреЛрдбрд╝ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреА рдЫреЗрдбрд╝рдЫрд╛рдбрд╝ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рд╣реИ
рдЬрд╛рдВрдЪ рдФрд░ рджреВрд░рд╕реНрде рдкрд░реАрдХреНрд╖рдг рд╕рд╣рд╛рдпрдХ рдмреИрдХрдПрдВрдб рдХреЗ рдмреАрдЪ рдЗрдВрдЯрд░рдиреЗрдЯ рдЯреНрд░реИрдлрд╝рд┐рдХред рд╡реИрд╕реЗ рддреЛ рд╡реЗ рдЖрдо рддреМрд░ рдкрд░
рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдУрдирд┐рдм рдмреИрдХрдПрдВрдб рдШрдЯрдХ рдХреЗ рдЪрдпрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рд╕рд╛рдордЧреНрд░реА рдЕрд╡рд░реВрдзреНрдж рдЗрд╕рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдЙрд╕ рдкреНрд░рдХрд╛рд░ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреА рдЧрдгрдирд╛ рдХрд░рдирд╛ рд╣реИ рдЬрд┐рд╕реЗ рдмреНрд▓реЙрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ
рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдЙрдиреНрд╣реЗрдВ рдЖрдорддреМрд░ рдкрд░ рдПрдХ рдЗрдирдкреБрдЯ рд╕реВрдЪреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ
рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП.

рдзрдордХреА рдЖрджрд░реНрд╢
рд╣рдорд╛рд░рд╛ рдкреНрд░рддрд┐рджреНрд╡рдВрджреНрд╡реА рджреЗрд╢рд╡реНрдпрд╛рдкреА рдиреЗрдЯрд╡рд░реНрдХ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдФрд░ рд╣реЗрд░рд╛рдлреЗрд░реА рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИ
рдкреНрд░рд╕рд╛рд░ рдпрд╛рддрд╛рдпрд╛рддред

рд╣рдорд╛рд░реЗ рдкреНрд░рддрд┐рджреНрд╡рдВрджреНрд╡реА рдХреЗ рд▓рдХреНрд╖реНрдп рд╣реИрдВ:

┬╖ рдХреБрдЫ рд╕рд╛рдордЧреНрд░реА рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░реЗрдВ, рдЬрдмрдХрд┐ рд╕рдордЧреНрд░ рдЧреБрдгрд╡рддреНрддрд╛ рдореЗрдВ рдЧрд┐рд░рд╛рд╡рдЯ рди рд╣реЛ
рдиреЗрдЯрд╡рд░реНрдХ

┬╖ рдиреЗрдЯрд╡рд░реНрдХ рдХреА рдЗрд╕ рддрд░рд╣ рдирд┐рдЧрд░рд╛рдиреА рдХрд░реЗрдВ рдХрд┐ рд╡реЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдореЗрдВ рдЗрд╕рдХреЗ рджреБрд░реБрдкрдпреЛрдЧ рдХреА рдкрд╣рдЪрд╛рди рдХрд░ рд╕рдХреЗрдВ

рдиреЗрдЯрд╡рд░реНрдХ рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ рдбрд┐рдЯреЗрдХреНрд╢рди рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА:

1. рд╕реЗрдВрд╕рд░рд╢рд┐рдк рдбрд┐рдЯреЗрдХреНрд╢рди рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЕрднрд┐рдиреЗрддрд╛рдУрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдПрдВ

2. рдРрд╕реЗ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рд╡рд╛рд▓реЗ рд▓реЛрдЧреЛрдВ рдХреЛ рдпрд╣ рд╡рд┐рд╢реНрд╡рд╛рд╕ рджрд┐рд▓рд╛рдХрд░ рдореВрд░реНрдЦ рдмрдирд╛рдирд╛ рдХрд┐ рдиреЗрдЯрд╡рд░реНрдХ рдЕрдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рд╣реИ

рдиреЛрдЯ рдЬрдмрдХрд┐ 2) => 1) рдпрд╣ рд╕рдЪ рдирд╣реАрдВ рд╣реИ рдХрд┐ 1) => 2) рдРрд╕реЗ рдЕрднрд┐рдиреЗрддрд╛рдУрдВ рдХреА рдкрд╣рдЪрд╛рди рдХреЗ рд░реВрдк рдореЗрдВ
рдЬрд░реВрд░реА рдирд╣реАрдВ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдореЗрдВ рдШрдЯрд┐рдд рд╣реЛред рдЬрдмрдХрд┐ рд╣рдорд╛рд░рд╛ рдЗрд░рд╛рджрд╛ рдЗрд╕реЗ рдХрдо рдХрд░рдирд╛ рд╣реИ
OONI рдЬрд╛рдВрдЪ рдЪрд▓рд╛рдиреЗ рд╡рд╛рд▓реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдЬреЛрдЦрд┐рдо рдХреА рдкрд╣рдЪрд╛рди рдХреА рдЬрд╛рдПрдЧреА, рдпрд╣ рд╕рдЯреАрдХрддрд╛ рдореЗрдВ рдПрдХ рдЯреНрд░реЗрдбрдСрдлрд╝ рдХреЗ рд╕рд╛рде рдЖрддрд╛ рд╣реИред
рдЗрд╕рд▓рд┐рдП рдХреБрдЫ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рдлрд╝рд┐рдВрдЧрд░рдкреНрд░рд┐рдВрдЯ рдпреЛрдЧреНрдпрддрд╛ рдХреЛ рдкрдХреНрд╖ рдореЗрдВ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ
рд╕рдЯреАрдХрддрд╛ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рддрд╛ рд╣реИред

рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рд╣рдо рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдЗрд╕ рдЖрдзрд╛рд░ рдкрд░ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕реЗ рдЪрд▓рд╛рдиреЗ рд╡рд╛рд▓реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдХрд┐рд╕ рдЬреЛрдЦрд┐рдо рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдЗрд╕рдХреА рдЕрдиреБрдорддрд┐ рдорд┐рд▓рддреА рд╣реИ
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдЪреБрди рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╡реЗ рдХрд┐рд╕ рдЦрддрд░реЗ рдХреЗ рдореЙрдбрд▓ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

рд╕реНрдерд╛рдкрдирд╛
рдкрдврд╝рдирд╛ рдЗрд╕рдХрд╛ рд╕реЗ рдкрд╣рд▓реЗ рджреМрдбрд╝рдирд╛ рдУрдиреАрдкреНрд░реЛрдм!

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

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

рдбреЗрдмрд┐рдпрди рдЖрдзрд╛рд░рд┐рдд рд╕рд┐рд╕реНрдЯрдо
sudo sh -c 'рдЧреВрдВрдЬ' "рджреЗрдм http://deb.ooni.nu/ooni рдЦрд░рдЦрд░рд╛ рдореБрдЦреНрдп" >> / Etc / apt / sources.list'

GPG --рдХреАрд╕рд░реНрд╡рд░ pgp.mit.edu --recv рдХреБрдВрдЬреА 0x49B8CDF4

GPG --рдирд┐рд░реНрдпрд╛рдд 89AB86D4788F3785FE9EDA31F9E2D9B049B8CDF4 | sudo рдЙрдкрдпреБрдХреНрдд рдХреБрдВрдЬреА рдЬреЛрдбрд╝рдирд╛ -

sudo рдЙрдкрдпреБрдХреНрдд - рдорд┐рд▓ рдЕрджреНрдпрддрди && sudo рдЙрдкрдпреБрдХреНрдд - рдорд┐рд▓ рд╕реНрдерд╛рдкрд┐рдд ooniprobe

Linux
рд╣рдорд╛рд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдУрдирд┐рдкреНрд░реЛрдм рдбреЗрдмрд┐рдпрди рдЬреАрдПрдирдпреВ/рд▓рд┐рдирдХреНрд╕ рд╡реНрд╣реАрдЬрд╝реА рдкрд░ рднреА рдпрдереЛрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЪрд▓рддрд╛ рд╣реИ
рдЙрдмрдВрдЯреВ рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдЬреИрд╕реЗ рдиреИрдЯреА рдФрд░ рдмрд╛рдж рдореЗрдВ рд░рд┐рд▓реАрдЬрд╝ред рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд┐рдП рдмрд┐рдирд╛ ooniprobe рдЪрд▓рд╛ рд░рд╣рд╛ рд╣реВрдВ
рдпрд╣ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЖрджреЗрд╢реЛрдВ рдХреЗ рд╕рд╛рде рд╕рдорд░реНрдерд┐рдд рд╣реИ:

Git рдХреНрд▓реЛрди https://git.torproject.org/ooni-probe.git

cd рдКрдиреА-рдЬрд╛рдВрдЪ

./рд╕реЗрдЯрдЕрдк-рдирд┐рд░реНрднрд░рддрд╛.рд╢

рдЕрдЬрдЧрд░ setup.py рд╕реНрдерд╛рдкрд┐рдд

рдХреА рд╕реНрдерд╛рдкрдирд╛ up рд╡рд┐рдХрд╛рд╕ рд╡рд╛рддрд╛рд╡рд░рдг
рдбреЗрдмрд┐рдпрди рдЖрдзрд╛рд░рд┐рдд рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдкрд░ рдпрд╣ рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

Vsudo рдЙрдкрдпреБрдХреНрдд - рдорд┐рд▓ рд╕реНрдерд╛рдкрд┐рдд libgeoip-dev рдкрд╛рдпрдерди-рд╡рд░реНрдЪреБрдЕрд▓рдПрдирд╡реА рд╡рд░реНрдЪреБрдЕрд▓рдПрдиреНрд╡реНрд░реИрдкрд░

mkvirtualenv ooniprobe

рдЕрдЬрдЧрд░ setup.py рд╕реНрдерд╛рдкрд┐рдд

рд░рдВрдЬ рд╕реНрдерд╛рдкрд┐рдд -r рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдБ-dev.txt

рдЕрдиреНрдп рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ (рд╕рд╛рде рдореЗрдВ рдЖрд╡рд╛рд░рд╛)
рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ рдЖрд╡рд╛рд░рд╛ рдФрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ Virtualbox

On рдУрдПрд╕рдПрдХреНрд╕:

рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдпрд╣ рдЗрдВрд╕реНрдЯреЙрд▓ рдирд╣реАрдВ рд╣реИ homebrew

рд╢рд░рд╛рдм рдмрдирд╛рдирд╛ рд╕реНрдерд╛рдкрд┐рдд Git

On рдбреЗрдмрд┐рдпрди/рдЙрдмрдВрдЯреВ:

sudo рдЙрдкрдпреБрдХреНрдд - рдорд┐рд▓ рд╕реНрдерд╛рдкрд┐рдд Git

1. рдПрдХ рдЯрд░реНрдорд┐рдирд▓ рдЦреЛрд▓реЗрдВ рдФрд░ рдЪрд▓рд╛рдПрдБ:

Git рдХреНрд▓реЛрди https://git.torproject.org/ooni-probe.git

cd рдКрдиреА-рдЬрд╛рдВрдЪ/

рдЖрд╡рд╛рд░рд╛ up

2. рдмреЙрдХреНрд╕ рдореЗрдВ рд▓реЙрдЧрд┐рди рдХрд░реЗрдВ:

рдЖрд╡рд╛рд░рд╛ рдПрд╕рдПрд╕рдПрдЪ

ooniprobe рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ /рдКрдиреА.

3. рдЖрдк рдЗрд╕рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ:

ooniprobe рдмреНрд▓реЙрдХрд┐рдВрдЧ/http_requests -f /ooni/inputs/input-pack/alexa-top-1k.txt

рдХрд╛ рдкреНрд░рдпреЛрдЧ ooniprobe
рдЬрд╛рд▓ рдкрд░реАрдХреНрд╖рдг рдпрд╣ рдЖрдХрд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рдкреЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реИ рдХрд┐ рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХреА рдЗрдВрдЯрд░рдиреЗрдЯ рд╕реЗрдВрд╕рд░рд╢рд┐рдк рд╣реЛ рд░рд╣реА рд╣реИред

рдбреЗрдХ рдХреБрдЫ рд╕рдВрдмрджреНрдз рдЗрдирдкреБрдЯ рдХреЗ рд╕рд╛рде рдУрдУрдиреАрдкреНрд░реЛрдм рдиреЗрдЯрдЯреЗрд╕реНрдЯ рдХрд╛ рд╕рдВрдЧреНрд░рд╣ рд╣реИред

рдХрд▓реЗрдХреНрдЯрд░ рдорд╛рдк рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╕реЗрд╡рд╛ рд╣реИред

рдЯреЗрд╕реНрдЯ рд╕рд╣рд╛рдпрдХ рдпрд╣ рдПрдХ рдРрд╕реА рд╕реЗрд╡рд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЬрд╛рдВрдЪ рджреНрд╡рд╛рд░рд╛ рдЕрдкрдиреЗ рдорд╛рдкреЛрдВ рдХреЛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╢реЗрдЦрд╝реАрдмрд╛рдЬрд╝ рдПрдХ рд╕реЗрд╡рд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдкрд░реАрдХреНрд╖рдг рд╕рд╣рд╛рдпрдХреЛрдВ рдФрд░ рд╕рдВрдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЗ рдкрддреЗ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдХрд╛ рд╡рд┐рдиреНрдпрд╛рд╕ ooniprobe
рдЖрдк рдорд┐рд▓реА рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдХреЗ ooniprobe рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
рдХрд╛ рднреАрддрд░ ~/.ooni/ooniprobe.conf.

рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ ooniprobe рдкрд░реАрдХреНрд╖рдг рдкрд░рд┐рдгрд╛рдо рдореЗрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдкрд╣рдЪрд╛рди рд╕рдВрдмрдВрдзреА рдЬрд╛рдирдХрд╛рд░реА рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛,
рди рд╣реА рдХреЛрдИ pcap рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБред рдпрд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рд╡реИрдпрдХреНрддрд┐рдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ.

рд░рдирд┐рдВрдЧ рдбреЗрдХ
рдЖрдкрдХреЛ рдЕрдВрджрд░ рд╕рднреА рд╕реНрдерд╛рдкрд┐рдд рдбреЗрдХ рдорд┐рд▓реЗрдВрдЧреЗ /usr/share/ooni/decks.

рдлрд┐рд░ рдЖрдк рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбреЗрдХ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ -i:

рдЬрдбрд╝ рдХреЗ рд░реВрдк рдореЗрдВ:

ooniprobe -i /usr/share/ooni/decks/mlab.deck

рдпрд╛ рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ:

ooniprobe -i /usr/share/ooni/decks/mlab_no_root.deck

рдпрд╛:

рдЬрдбрд╝ рдХреЗ рд░реВрдк рдореЗрдВ:

ooniprobe -i /usr/share/ooni/decks/complete.deck

рдпрд╛ рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ:

ooniprobe -i /usr/share/ooni/decks/complete_no_root.deck

рдЖрдкрдХреЗ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЙрдкрд░реЛрдХреНрдд рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдореЗрдВ рд▓рдЧрднрдЧ 20-30 рдорд┐рдирдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА
рдЧрддрд┐ред

рдпрджрд┐ рдЖрдк рдХреБрдЫ рддреЗрдЬрд╝ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдирд╛ рдкрд╕рдВрдж рдХрд░реЗрдВрдЧреЗ рддреЛ рдЖрдкрдХреЛ рдирд┐рдореНрди рдЪрд▓рд╛рдирд╛ рдЪрд╛рд╣рд┐рдП: рд░реВрдЯ рдХреЗ рд░реВрдк рдореЗрдВ:

ooniprobe -i /usr/share/ooni/decks/fast.deck

рдпрд╛ рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ:

ooniprobe -i /usr/share/ooni/decks/fast_no_root.deck

рд░рдирд┐рдВрдЧ рдЬрд╛рд▓ рдкрд░реАрдХреНрд╖рдг
рдЖрдк рд╕рднреА рд╕реНрдерд╛рдкрд┐рдд рд╕реНрдерд┐рд░ рдиреЗрдЯ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдЗрд╕рдХреЗ рд╕рд╛рде рд╕реВрдЪреАрдмрджреНрдз рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

ooniprobe -s

рдлрд┐рд░ рдЖрдк рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдирд╛рдо рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдХреЗ рдиреЗрдЯрдЯреЗрд╕реНрдЯ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ:

ooniprobe рд╣реЗрд░рдлреЗрд░/http_header_field_manipulation

рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдЗрдирдкреБрдЯ рдХреЛ рдпреВрдЖрд░рдПрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рднреА рд╕рдВрднрд╡ рд╣реИ:

ooniprobe рдмреНрд▓реЙрдХрд┐рдВрдЧ/http_requests -f httpo://ihiderha53f36lsd.onion/input/
37e60e13536f6afe47a830bfb6b371b5cf65da66d7ad65137344679b24fdccd1

рдЖрдк рдкрд░реАрдХреНрд╖рдг рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдЕрдкрдиреА рд╡рд░реНрддрдорд╛рди рдХрд╛рд░реНрдпрд╢реАрд▓ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд░рд┐рдкреЛрд░реНрдЯ рдкрд░рд┐рдгрд╛рдо рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдУрдУрдПрдирдЖрдИ рдХрд▓реЗрдХреНрдЯрд░ рджреНрд╡рд╛рд░рд╛ рдПрдХрддреНрд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛
рдкрд░реАрдХреНрд╖рдг рд╕рд╣рд╛рдпрдХреЛрдВ рдХреЗ рдкрддреЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдмрд╛рдЙрдВрд╕рд░ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗред

рдЖрдк рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рд╕рд╛рде рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рдХрд▓реЗрдХреНрдЯрд░ рдпрд╛ рдмрд╛рдЙрдВрд╕рд░ рднреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ -c рдФрд░ -b.

(рд╡реИрдХрд▓реНрдкрд┐рдХ) рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ obfproxy
рдЕрдкрдиреЗ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЗ рд▓рд┐рдП obfsproxy рдХрд╛ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВред

рдбрд╛рдЙрдирд▓реЛрдб рдУрдмреНрдлреНрд╕реНрдкреНрд░реЙрдХреНрд╕реА

рд╕реЗрддреБ рдФрд░ obfproxy рд╕реЗрддреБ
ooniprobe рдПрдХ рдЫрд┐рдкреА рд╣реБрдИ рд╕реЗрд╡рд╛ рдХреЗ рд▓рд┐рдП Tor рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ oonib рд░рд┐рдкреЛрд░реНрдЯ рд╕рдВрдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЛ рд░рд┐рдкреЛрд░реНрдЯ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реИ
рд╕рдорд╛рдкрдирдмрд┐рдВрджреБ. рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, ooniprobe рд╕реНрдерд╛рдкрд┐рдд рд╕рд┐рд╕реНрдЯрдо Tor рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рднреА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
Tor рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП (ooniprobe.conf рдореЗрдВ Advanced.start_tor рд╡рд┐рдХрд▓реНрдк рджреЗрдЦреЗрдВ), рдФрд░ ooniprobe
рдкреБрд▓реЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ (рдФрд░ рдУрдмреАрдПрдлрдПрд╕рдкреНрд░реЙрдХреНрд╕реА рдкреБрд▓, рдпрджрд┐ рдУрдмреАрдПрдлрдПрд╕рдкреНрд░реЙрдХреНрд╕реА рд╕реНрдерд╛рдкрд┐рдд рд╣реИ)ред рдЯреЛрд░.рдмреНрд░рд┐рдЬ
ooniprobe.conf рдореЗрдВ рд╡рд┐рдХрд▓реНрдк рдПрдХ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдкрде рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ "рдмреНрд░рд┐рдЬ" рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП
рдкрдВрдХреНрддрд┐рдпрд╛рдБ (рдЙрд╕реА рдкреНрд░рд╛рд░реВрдк рдХреА рдЬреИрд╕рд╛ рдХрд┐ torc рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЬреИрд╕рд╛ рд▓реМрдЯрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
https://bridges.torproject.org). рдпрджрд┐ рдУрдмреАрдПрдлрдПрд╕рдкреНрд░реЙрдХреНрд╕реА рдкреБрд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рд╣реИ, рддреЛ рдкрде
obfsproxy рдмрд╛рдЗрдирд░реА рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╡рд┐рдХрд▓реНрдк Advanced.obfsproxy_binary, рдореЗрдВ рджреЗрдЦреЗрдВ
ooniprobe.conf.

рдХреА рд╕реНрдерд╛рдкрдирд╛ рдХреНрд╖рдорддрд╛рдУрдВ on рддреБрдВрд╣рд╛рд░реЗ Virtualenv рдЕрдЬрдЧрд░ рдмрд╛рдЗрдирд░реА
рдпрджрд┐ рдЖрдкрдХрд╛ рд╡рд┐рддрд░рдг рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ рддреЛ рдЖрдк OONI рдХреЛ рд░реВрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╕реЗ рдмрдЪ рд╕рдХрддреЗ рд╣реИрдВ:

рд╕реЗрдЯрдХреИрдк рдХреИрдк_рдиреЗрдЯ_рдПрдбрдорд┐рди, рдХреИрдк_рдиреЗрдЯ_рд░реЙ+рдИрдЖрдИрдкреА /рдкрде/рд╕реЗ/рдЖрдкрдХрд╛/рд╡рд░реНрдЪреБрдЕрд▓рдПрдирд╡реА/рдкрд╛рдпрдерди

рдореВрд▓ ooniprobe рдЯреЗрд╕реНрдЯ
рдХреЗ рд▓рд┐рдП рд╕реНрд░реЛрдд рд╕рд╛рдордЧреНрд░реА рдмреНрд▓реЙрдХрд┐рдВрдЧ рдкрд░реАрдХреНрд╖рдг рдФрд░ рдпрд╛рддрд╛рдпрд╛рдд рдЬреЛрдбрд╝ - рддреЛрдбрд╝ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
рдХреНрд░рдорд╢рдГ рдиреЗрдЯрдЯреЗрд╕реНрдЯ/рдмреНрд▓реЙрдХрд┐рдВрдЧ рдФрд░ рдиреЗрдЯрдЯреЗрд╕реНрдЯ/рд╣реЗрд░рдлреЗрд░ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ред

рд╕рд╛рдордЧреНрд░реА рдЕрд╡рд░реВрдзреНрдж рдЯреЗрд╕реНрдЯ
┬╖ рдбреАрдПрдирдПрд╕ рд╕рдВрдЧрддрд┐

┬╖ HTTP рдЕрдиреБрд░реЛрдзреЛрдВ

┬╖ рдЯреАрд╕реАрдкреА рдЬреБрдбрд╝реЗрдВ

рдпрд╛рддрд╛рдпрд╛рдд рдЬреЛрдбрд╝ - рддреЛрдбрд╝ рдЯреЗрд╕реНрдЯ
┬╖ HTTP рдЕрдорд╛рдиреНрдп рдирд┐рд╡реЗрджрди рд░реЗрдЦрд╛:

┬╖ рдбреАрдПрдирдПрд╕ рдЪрдХрдорд╛ рджреЗрдирд╛

┬╖ HTTP рд╣реИрдбрд░ рдХреНрд╖реЗрддреНрд░ рдЬреЛрдбрд╝ - рддреЛрдбрд╝

┬╖ рдЯреНрд░реЗрд╕рд░реВрдЯ

┬╖ HTTP рдореЗрдЬрдмрд╛рди

рдЕрдиреНрдп рдкрд░реАрдХреНрд╖рдг
рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреБрдЫ рдЕрдиреНрдп рдкрд░реАрдХреНрд╖рдг рднреА рд╣реИрдВ рдЬреЛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИрдВ рдпрд╛ рдЕрднреА рднреА рд╕рдорд░реНрдерд┐рдд рд╣реИрдВ
рдХреЗ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдХрд┐рдпрд╛ред

рдЖрдк рдЗрдиреНрд╣реЗрдВ рдпрд╣рд╛рдВ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ:

┬╖ рдКрдиреА/рдиреЗрдЯрдЯреЗрд╕реНрдЯ/рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ

рдРрд╕реЗ рдкрд░реАрдХреНрд╖рдг рдЬреЛ рдорд╛рдк рдирд╣реАрдВ рдХрд░рддреЗ рд▓реЗрдХрд┐рди рд╕реНрдХреИрдирд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрддреЗ рд╣реИрдВ, рдЗрдиреНрд╣реЗрдВ рдпрд╣рд╛рдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

┬╖ рдУрдУрдПрдирдЖрдИ/рдиреЗрдЯрдЯреЗрд╕реНрдЯ/рд╕реНрдХреИрдирд┐рдВрдЧ

рдРрд╕реЗ рдкрд░реАрдХреНрд╖рдг рдЬрд┐рдирдореЗрдВ рддреГрддреАрдп рдкрдХреНрд╖ рдЙрдкрдХрд░рдг рдЪрд▓рд╛рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИ, рд╡реЗ рдпрд╣рд╛рдВ рдкрд╛рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ:

┬╖ рдУрдУрдиреА/рдиреЗрдЯрдЯреЗрд╕реНрдЯ/рдерд░реНрдб_рдкрд╛рд░реНрдЯреА

рд░рд┐рдкреЛрд░реНрдЯ
ooniprobe рджреНрд╡рд╛рд░рд╛ рдПрдХрддреНрд░ рдХреА рдЧрдИ рд░рд┐рдкреЛрд░реНрдЯреЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХреА рдЬрд╛рддреА рд╣реИрдВ https://ooni.torproject.org/reports/0.1/
CC /

рдХрд╣рд╛ рдкреЗ CC рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рджреЛ рдЕрдХреНрд╖рд░ рд╡рд╛рд▓рд╛ рджреЗрд╢ рдХреЛрдб рд╣реИ рдЖрдИрдПрд╕рдУ 31666-2.

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЗрдЯрд▓реА рдХреЗ рд▓рд┐рдП рд░рд┐рдкреЛрд░реНрдЯ (CC is it) рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

https://ooni.torproject.org/reports/0.1/IT/

рдЗрд╕ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд┐рдиреНрди рд░рд┐рдкреЛрд░реНрдЯреЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдВрдЧреА
рд╕рдореНрдореЗрд▓рди:

рдкрд░реАрдХреНрд╖рдг рдХрд╛ рдирд╛рдо - dateInISO8601рдлрд╝реЙрд░реНрдореЗрдЯ - рдЬрд╛рдВрдЪрдПрдПрд╕рдирдВрдмрд░ .рдпрдорд▓реВ

рджрд┐рдирд╛рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡реНрдпрдХреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЖрдИрдПрд╕рдУ 8601 рд╕реЗрдХрдВрдб рд╕рд╣рд┐рдд рдФрд░ рд╕рдВрдЦреНрдпрд╛ рд╕рд╣рд┐рдд : рдШрдВрдЯреЛрдВ рдХрд╛ рдкрд░рд┐рд╕реАрдорди рдХрд░рдирд╛,
рдорд┐рдирдЯ, рджрд┐рди.

рдЗрд╕ рддрд░рд╣:

рд╡рд░реНрд╖ - рдорд╣реАрдирд╛ - рджрд┐рди T рдШрдВрдЯреЗ рдорд┐рдирдЯ рд╕реЗрдХрдВрдб Z

рджреЗрдЦрд┐рдП рдпрд╣рд╛рдБ рдЙрддреНрдкрдиреНрди рдХрд░реЗрдВ рдПрд╕рдЯреА la up рд╕реЗрд╡рд╛ рдореЗрд░реЗ рдбреЗрдЯрд╛ рд╕реВрдЪреА of рдЖрдИрдПрд╕рдУ 8601 рджреЗрд╢ рдХреЛрдб

рд╕рдордп рд╣реИ рд╣рдореЗрд╢рд╛ рдпреВрдЯреАрд╕реА рдореЗрдВ рд╡реНрдпрдХреНрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ред

рдпрджрд┐ рдЯрдХрд░рд╛рд╡ рдХрд╛ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рддреЛ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рдПрдХ рдЗрдВрдЯ (1 рд╕реЗ рд╢реБрд░реВ) рдЬреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдпрджрд┐ рджреЛ рд░рд┐рдкреЛрд░реНрдЯреЗрдВ рдкрд╣рд▓реА рдЬрдирд╡рд░реА 2012 рдХреЛ рджреЛрдкрд╣рд░ (UTC рд╕рдордп) рдкрд░ рдмрдирд╛рдИ рдЧрдИ рд╣реИрдВ
MIT (AS3) рд╕реЗ рд╢рд╛рд░реНрдк рдХреЛ рдпрд╣рд╛рдВ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛:

https://ooni.torproject.org/reports/0.1/US/2012-01-01T120000Z_AS3.yamloo
https://ooni.torproject.org/reports/0.1/US/2012-01-01T120000Z_AS3.1.yamloo

рдзреНрдпрд╛рди рджреЗрдВ: рдЗрд╕рдХреА рдЕрддреНрдпрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд░рд┐рдкреЛрд░реНрдЯреЗрдВ рдЙрд╕реА рд╕рдЯреАрдХ рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рдХреЗ рд╕рд╛рде рдмрдирд╛рдИ рдЬрд╛рдПрдВ
рд╡рд╣реА рд╕рдЯреАрдХ ASN. рдпрджрд┐ рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ рддреЛ рдпрд╣ рдХрд┐рд╕реА рджреБрд░реНрднрд╛рд╡рдирд╛рдкреВрд░реНрдг рд░рд┐рдкреЛрд░реНрдЯ рдХрд╛ рд╕реВрдЪрдХрд╛рдВрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ
рдЬрд╝рд╣рд░ рдХрд╛ рд╣рдорд▓рд╛ рдЪрд▓ рд░рд╣рд╛ рд╣реИ.

рд░рд┐рдкреЛрд░реНрдЯ рдкреНрд░рд╛рд░реВрдк рд╕рдВрд╕реНрдХрд░рдг changelog
рдпрд╣рд╛рдВ рд░рд┐рдкреЛрд░реНрдЯрд┐рдВрдЧ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдкреНрд░рдореБрдЦ рдмрджрд▓рд╛рд╡реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рд╡рд░рдг рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рд╕рдВрд╕реНрдХрд░рдг 0.1
рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдкреНрд░рд╛рд░реВрдк рд╕рдВрд╕реНрдХрд░рдг.

рд▓реЗрдЦрди рдКрдБрдиреА рдкрд░реАрдХреНрд╖рдг
OONI рдкрд░реАрдХреНрд╖рдг рдПрдкреАрдЖрдИ рдЕрддреНрдпрдзрд┐рдХ рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реИ рдФрд░ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рдкрд╛рдпрдерди рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ рдЕрдзреНрдпрд╛рдп рдкрд░реАрдХреНрд╖рд╛
рдореЙрдбреНрдпреВрд▓ рдФрд░ рдореБрдбрд╝.рдкрд░реАрдХреНрд╖рдг.

рдЯреЗрд╕реНрдЯ рдХреЗрд╕реЗрд╕
OONI рдкрд░реАрдХреНрд╖рдг рдХреЗ рдкрд░рдорд╛рдгреБ рдХреЛ рдЯреЗрд╕реНрдЯ рдХреЗрд╕ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрдХ рдЯреЗрд╕реНрдЯ рдХреЗрд╕ рдХреНрд▓рд╛рд╕ рдореЗрдВ рдПрдХрд╛рдзрд┐рдХ рд╢рд╛рдорд┐рд▓ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ
рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдзрд┐рдпрд╛рдБред

рдХрдХреНрд╖рд╛ ooni.nettest.NetTestCase
рдпрд╣ OONI рдиреЗрдЯрдЯреЗрд╕реНрдЯ рдмреНрд░рд╣реНрдорд╛рдВрдб рдХрд╛ рдЖрдзрд╛рд░ рд╣реИред рдЬрдм рдЖрдк рдиреЗрдЯрдЯреЗрд╕реНрдЯ рд▓рд┐рдЦреЗрдВрдЧреЗ рддреЛ рдЖрдк рдРрд╕рд╛ рдХрд░реЗрдВрдЧреЗ
рдЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЙрдкрд╡рд░реНрдЧрд┐рдд рдХрд░реЗрдВред

┬╖ рдЗрдирдкреБрдЯ: рдЗрдирдкреБрдЯ рдХреЗ рд╕реНрдерд┐рд░ рд╕реЗрдЯ рдкрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╕рднреА рдкрд░реАрдХреНрд╖рдг (рддрд░реАрдХреЗ рд╢реБрд░реВ рд╣реЛ рд░рд╣реЗ рд╣реИрдВ
"рдкрд░реАрдХреНрд╖рдг" рдЙрдкрд╕рд░реНрдЧ рдХреЗ рд╕рд╛рде) рдкреНрд░рддрд┐ рдЗрдирдкреБрдЯ рдПрдХ рдмрд╛рд░ рдЪрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдкреНрд░рддреНрдпреЗрдХ рд░рди рдкрд░ _рдЗрдирдкреБрдЯ_
TestCase рдЙрджрд╛рд╣рд░рдг рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рд╡рд░реНрддрдорд╛рди рдХреЗ рдорд╛рди рдкрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛
рдЗрдирдкреБрдЯ рдкрд░ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ред рдХрд┐рд╕реА рднреА рдкрд╛рдпрдерди рдкреБрдирд░рд╛рд╡рд░реНрддрдиреАрдп рд╡рд╕реНрддреБ рдХреЛ рдЗрдирдкреБрдЯ рдкрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

┬╖ рдЗрдирдкреБрдЯрдлрд╝рд╛рдЗрд▓: рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╡рд╛рд▓реЗ рд╕рд░рдгреА рдкрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП
рддрд░реНрдХ рдЬрд┐рд╕реЗ рдЗрдирдкреБрдЯ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдРрд╕реА рд╕рд░рдгреА рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреА рд╣реИ:
["рдХрдорд╛рдВрдбрд▓рд┐рдирд░реНрдЧ", "рд╕реА", "рдЪреВрдХ рдЬрд╛рдирд╛ рдХреАрдордд" " рд╡рд┐рд╡рд░рдг"]

рдРрд╕реЗ рдПрд░реЗ рдХрд╛ рджреВрд╕рд░рд╛ рдорд╛рди рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдЖрд░реНрдЧ рдХреЗ рд▓рд┐рдП рд╢реЙрд░реНрдЯрд╣реИрдВрдб рд╣реИред
рдЗрд╕рдХреЗ рдмрд╛рдж рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдЗрдирдкреБрдЯ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧрд╛:
ooniprobe mytest.py --commandlinearg рдкрде/рд╕реЗ/рдлрд╝рд╛рдЗрд▓.txt

or
ooniprobe mytest.py -c рдкрде/рд╕реЗ/рдлрд╝рд╛рдЗрд▓.txt

┬╖ рдЗрдирдкреБрдЯрдкреНрд░реЛрд╕реЗрд╕рд░: рдХреЛ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдкрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рд▓реЗрддрд╛ рд╣реИ рдФрд░
рдпрд╣ рдкрд░реАрдХреНрд╖рдг рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдЗрдирдкреБрдЯ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░ рджреЗрдЧрд╛ред

┬╖ рдирд╛рдо: рдкрд░реАрдХреНрд╖рдг рдХреЗ рдирд╛рдо рдкрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП.

┬╖ рд▓реЗрдЦрдХ: рдкрд░реАрдХреНрд╖рдг рд▓реЗрдЦрдХ рдХрд╛ рдирд╛рдо рдФрд░ рд╕рдВрдкрд░реНрдХ рд╡рд┐рд╡рд░рдг рд╢рд╛рдорд┐рд▓ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдРрд╕реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХрд╛ рдкреНрд░рд╛рд░реВрдк рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
RSI рдирд╛рдо <[рдИрдореЗрд▓ рд╕рдВрд░рдХреНрд╖рд┐рдд]>

┬╖ рд╕рдВрд╕реНрдХрд░рдг: рдкрд░реАрдХреНрд╖рдг рдХреА рд╕рдВрд╕реНрдХрд░рдг рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реИ.

┬╖ рд░реВрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ: рдпрджрд┐ рдкрд░реАрдХреНрд╖рдг рдХреЛ рд░реВрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд▓рд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рддреЛ рдЗрд╕реЗ рд╕рд╣реА рдкрд░ рд╕реЗрдЯ рдХрд░реЗрдВред

┬╖ рдЙрдкрдпреЛрдЧрд╡рд┐рдХрд▓реНрдк: рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдЯреНрд╡рд┐рд╕реНрдЯреЗрдб.рдкрд╛рдпрдерди.рдЙрдкрдпреЛрдЧ.рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХрд╛ рдПрдХ рдЙрдкрд╡рд░реНрдЧ
рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рддрд░реНрдХ

┬╖ рд╕реНрдерд╛рдиреАрдп рд╡рд┐рдХрд▓реНрдк: рдЗрд╕рдореЗрдВ рдкрд╛рд░реНрд╕ рдХреА рдЧрдИ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рддрд░реНрдХ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред

рд╡рд┐рдЪрд┐рддреНрд░рддрд╛рдПрдБ: рдкреНрд░рддреНрдпреЗрдХ рд╡рд░реНрдЧ рдЬрд┐рд╕рдХреЗ рдкрд╣рд▓реЗ рдкрд░реАрдХреНрд╖рдг рд▓рдЧрд╛ рд╣реЛрддрд╛ рд╣реИ рдЪрд╛рд╣рд┐рдП рд╡рд╛рдкрд╕реА a
рдЯреНрд╡рд┐рд╕реНрдЯреЗрдб.рдЗрдВрдЯрд░рдиреЗрдЯ.рдбреЗрдлрд░.рдбреЗрдлрд░рд░реНрдб.

рдпрджрд┐ рдЖрдк рдЬрд┐рд╕ рдкрд░реАрдХреНрд╖рд╛ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ рд╡рд╣ рд╕реВрдЪреАрдмрджреНрдз рдирд╣реАрдВ рд╣реИ рдЯреЛ рдКрдБрдиреА Trac рдкреГрд╖реНрда, рдЖрдкрдХреЛ рдЗрд╕реЗ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рд┐рдП
рд╕реВрдЪреА рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд╡рд┐рд╡рд░рдг рдЬреЛрдбрд╝реЗрдВ рдЯреЗрд╕реНрдЯ рдЯреЗрдореНрдкрд▓реЗрдЯ

рдкрд░реАрдХреНрд╖рдг рдЗрдирдкреБрдЯ рджреНрд╡рд╛рд░рд╛ рд╕рдВрдЪрд╛рд▓рд┐рдд рд╣реЛрддреЗ рд╣реИрдВред рдкреНрд░рддреНрдпреЗрдХ рдЗрдирдкреБрдЯ рдХреЗ рд▓рд┐рдП рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рдПрдХ рдирдпрд╛ рдкрд░реАрдХреНрд╖рдг рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
_setUp рд╡рд┐рдзрд┐ рдХреЛ рд╡рд╣ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдХреЗ рдЕрдВрджрд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдлрд┐рд░ рд╕реЗрдЯрдЕрдк рд╡рд┐рдзрд┐
рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рдЕрдзрд┐рд▓реЗрдЦрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЧреЛрдЪрд╛: рдХрднреА рдирд╣реАрдБ рдЕрдкрдиреА рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдзрд┐ рдХреЗ рдЕрдВрджрд░ рд░рд┐рдПрдХреНрдЯрд░.рд╕реНрдЯрд╛рд░реНрдЯ рдСрдл рд░рд┐рдПрдХреНрдЯрд░.рд╕реНрдЯреЙрдк рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВ рдФрд░ рд╕рднреА рдХрд░реЗрдВрдЧреЗ
рдЕрдЪреНрдЫрд╛ рдмрдиреЛред

рдирд┐рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдВ
рдЗрдирдкреБрдЯ рд╡реЗ рд╣реИрдВ рдЬреЛ рдЯреЗрд╕реНрдЯ рдХреЗрд╕ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЗ рд▓рд┐рдП рдЗрдирдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рджрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ 100 рд╣реИрдВ
рдЗрдирдкреБрдЯ, рддреЛ рдкреНрд░рддреНрдпреЗрдХ рдкрд░реАрдХреНрд╖рдг рдХреЗрд╕ 100 рдмрд╛рд░ рдЪрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдЗрдирдкреБрдЯ рдХреЗ рдПрдХ рд╕реНрдерд┐рд░ рд╕реЗрдЯ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдЗрд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП ooni.nettest.NetTestCase
рдЧреБрдг рдирд┐рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдВ. рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ рд▓реЗрди(рдЗрдирдкреБрдЯ) рдмрд╛рд░. рдХреЛрдИ рднреА рдкреБрдирд░рд╛рд╡рд░реНрддрдиреАрдп рд╡рд╕реНрддреБ рд╡реИрдз рд╣реИ
рдирд┐рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдВ рд╡рд┐рд╢реЗрд╖рддрд╛ред

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

рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЗрдирдкреБрдЯрдкреНрд░реЛрд╕реЗрд╕рд░ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд▓рд╛рдЗрди рджрд░ рд▓рд╛рдЗрди рдкрдврд╝рдиреЗ рдФрд░ рдиреНрдпреВрд▓рд╛рдЗрди рд╕реНрдЯреНрд░рд┐рдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ
рдкрд╛рддреНрд░ред рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдЗрд╕реЗ рд╕реЗрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЗрдирдкреБрдЯрдкреНрд░реЛрд╕реЗрд╕рд░ рдП рдХреЛ рд╡рд┐рд╢реЗрд╖рддрд╛
рдлрд╝рдВрдХреНрд╢рди рдЬреЛ рдлрд╝рд╛рдЗрд▓ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдХреЛ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЗрддрд╛ рд╣реИ рдФрд░ рдЕрдЧрд▓рд╛ рдЖрдЗрдЯрдо рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред рдбрд┐рдлрд╝реЙрд▓реНрдЯ
рдЗрдирдкреБрдЯрдкреНрд░реЛрд╕реЗрд╕рд░ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

рдбреАрдИрдПрдлрд╝ рд▓рд╛рдЗрдирдмрд╛рдпрд▓рд╛рдЗрди(рдлрд╝рд╛рдЗрд▓ рдирд╛рдо):
рдПрдлрдкреА = рдЦреБрд▓рд╛ (рдлрд╝рд╛рдЗрд▓ рдирд╛рдо)
fp.xreadlines() рдореЗрдВ x рдХреЗ рд▓рд┐рдП:
рдЙрдкрдЬ x.strip()
fp.рдмрдВрдж рдХрд░реЗрдВ()

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

рдЯреНрд╡рд┐рд╕реНрдЯреЗрдб рдХреА рдмрджреМрд▓рдд рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рддрд░реНрдХреЛрдВ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
рдЯреНрд╡рд┐рд╕реНрдЯреЗрдб.рдкрд╛рдпрдерди.рдЙрдкрдпреЛрдЧ.рдЙрдкрдпреЛрдЧ рд╡рд┐рдХрд▓реНрдк рд╡рд░реНрдЧ.

рдЖрдкрдХреЛ рдЗрд╕реЗ рдЙрдкрд╡рд░реНрдЧрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП NetTestCase рд╡рд┐рд╢реЗрд╖рддрд╛ рдЙрдкрдпреЛрдЧ рд╡рд┐рдХрд▓реНрдк рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛
рдЗрд╕рдХреЗ рдПрдХ рдЙрдкрд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП.

рд╡рд░реНрдЧ рдЙрдкрдпреЛрдЧ рд╡рд┐рдХрд▓реНрдк(рдЙрдкрдпреЛрдЧ рд╡рд┐рдХрд▓реНрдк):
optParameters = [['рдмреИрдХрдПрдВрдб', 'рдмреА', 'http://127.0.0.1:57001',
'рдкрд░реАрдХреНрд╖рдг рдмреИрдХрдПрдВрдб рдХрд╛ рдпреВрдЖрд░рдПрд▓ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП']
]

рд╡рд░реНрдЧ MyTestCase(nettest.NetTestCase):
рдЙрдкрдпреЛрдЧ рд╡рд┐рдХрд▓реНрдк = рдЙрдкрдпреЛрдЧ рд╡рд┐рдХрд▓реНрдк

рдЗрдирдкреБрдЯрдлрд╝рд╛рдЗрд▓ = ['рдлрд╝рд╛рдЗрд▓', 'рдПрдл', рдХреЛрдИ рдирд╣реАрдВ, "рдХреБрдЫ рдлреВ рдлрд╝рд╛рдЗрд▓"]
рдЖрд╡рд╢реНрдпрдХ рд╡рд┐рдХрд▓реНрдк = ['рдмреИрдХрдПрдВрдб']

def test_my_test(рд╕реНрд╡рдпрдВ):
self.localOptions['рдмреИрдХрдПрдВрдб']

рдлрд┐рд░ рдЖрдк рдХреНрд▓рд╛рд╕ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд╛рд░реНрд╕ рдХрд┐рдП рдЧрдП рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рддрд░реНрдХреЛрдВ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗ
рд╕реНрдерд╛рдиреАрдпрд╡рд┐рдХрд▓реНрдк.

RSI рдЖрд╡рд╢реНрдпрдХ рд╡рд┐рдХрд▓реНрдк рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рдЙрди рдорд╛рдкрджрдВрдбреЛрдВ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреА рд╣реИрдВ рдЬреЛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИрдВ
рдареАрдХ рд╕реЗ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВред

рдЗрдирдкреБрдЯ рдлрд╝рд╛рдЗрд▓ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╡рд░реНрдЧ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрдирдкреБрдЯрдлрд╝рд╛рдЗрд▓ рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдпрд╣рд╛рдВ рдкрдврд╝рд╛ рдЧрдпрд╛ рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛
ooni.nettest.NetTestCase.inputProcessor рд╡рд╣ рд╡рд┐рдзрд┐ рдЬреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдПрдХ рдкрдВрдХреНрддрд┐ рдЙрддреНрдкрдиреНрди рдХрд░реЗрдЧреА
рдПрдХ рд╕рдордп рдореЗрдВ рдлрд╝рд╛рдЗрд▓.

рдЯреЗрд╕реНрдЯ рддрд░реАрдХреЗ
рдЗрдиреНрд╣реЗрдВ рдЖрдкрдХреЗ рдЕрдВрджрд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ ooni.nettest.NetTestCase рдЙрдкрд╡рд░реНрдЧ. рдпреЗ рд╣реЛрдВрдЧреЗ
рдХрдХреНрд╖рд╛ рд╡рд┐рдзрд┐рдпрд╛рдБ.

рдкрд░реАрдХреНрд╖рдг_ рдХреЗ рд╕рд╛рде рдЙрдкрд╕рд░реНрдЧ рд╡рд╛рд▓реА рд╕рднреА рд╡рд░реНрдЧ рд╡рд┐рдзрд┐рдпрд╛рдБ рдЪрд▓рд╛рдИ рдЬрд╛рдПрдВрдЧреАред рдХрд╛рд░реНрдп рдЬреЛ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИрдВ
рдЖрдкрдХреЗ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рд╕рднреА рд▓реЛрдЕрд░рдХреЗрд╕ рдХреЛ рдЕрдВрдбрд░рд╕реНрдХреЛрд░ рд╕реЗ рдЕрд▓рдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдкрд░реАрдХреНрд╖рдг рд░рд┐рдкреЛрд░реНрдЯ рдореЗрдВ рдбреЗрдЯрд╛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк рд╕реАрдзреЗ рд░рд┐рдкреЛрд░реНрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ:

рдбреАрдИрдПрдлрд╝ test_my_function():
рдкрд░рд┐рдгрд╛рдо = рдХреБрдЫ рдХрд░реЛ()
self.рд░рд┐рдкреЛрд░реНрдЯ['рдХреБрдЫ'] = рдкрд░рд┐рдгрд╛рдо

рдЗрд╕рдХреЗ рдмрд╛рдж рдУрдУрдПрдирдЖрдИ рдЕрдВрддрд┐рдо рдкрд░реАрдХреНрд╖рдг рд░рд┐рдкреЛрд░реНрдЯ рдореЗрдВ рдбреЗрдЯрд╛ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдХрд╛рдо рд╕рдВрднрд╛рд▓реЗрдЧрд╛ред

рд╡рд░реНрддрдорд╛рди рдЗрдирдкреБрдЯ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдирд┐рд╡реЗрд╢ рд╡рд┐рд╢реЗрд╖рддрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

рдбреАрдИрдПрдлрд╝ test_with_input():
do_something_with_input(self.input)

рдпрд╣ рдЗрдирдкреБрдЯ рдХреА рд╕реВрдЪреА рдкрд░ рдкреНрд░рддреНрдпреЗрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдкрд░ рдЗрдирдкреБрдЯ рдХреЗ рд╕рд╛рде рдХреБрдЫ рдХрд░реЗрдЧрд╛ред

рдЯреЗрд╕реНрдЯ рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕
рдЯреЗрд╕реНрдЯ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдЖрдкрдХреЛ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдиреЗ рдореЗрдВ рд╕рд╣рд╛рдпрддрд╛ рдХрд░рддреЗ рд╣реИрдВред рдЙрдирдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рднреА рд╕рд╛рдорд╛рдиреНрдп рдЪреАрдЬреЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ
рд╡рд╣ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЬреЛ рдЙрд╕ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИред рд╡реЗ рджреЗрдЦрднрд╛рд▓ рднреА рдХрд░рддреЗ рд╣реИрдВ
рдЙрдирдХреЗ рджреНрд╡рд╛рд░рд╛ рдПрдХрддреНрд░ рдХрд┐рдП рдЧрдП рдбреЗрдЯрд╛ рдХреЛ рд░рд┐рдкреЛрд░реНрдЯ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд▓рд┐рдЦрдирд╛ред

рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдкрд░реАрдХреНрд╖рдг рдЯреЗрдореНрдкрд▓реЗрдЯ рд╣реИрдВ ooni.templates.scapyt рд╕реНрдХреИрдкреА рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдП,
ooni.templates.tcpt рдЯреАрд╕реАрдкреА рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдП, ooni.templates.httpt HTTP рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдП,
рдФрд░ ooni.templates.dnst DNS рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдПред

рд╕реНрдХреЗрдк рдЖрдзрд╛рд░рд┐рдд рдкрд░реАрдХреНрд╖рдг
рд╕реНрдХреИрдкреА рдЖрдзрд╛рд░рд┐рдд рдкрд░реАрдХреНрд╖рдг рдХрд╛ рдПрдХ рдЙрдкрд╡рд░реНрдЧ рд╣реЛрдЧрд╛ ooni.templates.scapyt.BaseScapyTest.

рдпрд╣ рд╕реНрдХреИрдкреА рд╕реЗрдВрдб рдФрд░ рд░рд┐рд╕реАрд╡ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдПрдХ рд░реИрдкрд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рднреЗрдЬреЗ рдЧрдП рдХреЛ рд▓рд┐рдЦреЗрдЧрд╛
рдФрд░ рд╕реНрд░реЛрдд рдФрд░ рдЧрдВрддрд╡реНрдп рдЖрдИрдкреА рдХреЗ рд╕реНрд╡рдЪреНрдЫрддрд╛рдХрд░рдг рдХреЗ рд╕рд╛рде рд░рд┐рдкреЛрд░реНрдЯ рдореЗрдВ рдкреИрдХреЗрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдП
рдкрддреЛрдВред

рдЗрд╕рдореЗрдВ рд╕реНрдХреИрдкреА рдПрд╕рдЖрд░ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рдорд╛рди рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╣реИ, рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рдпрд╣ рдПрдХ рд╡рд┐рд▓рдВрдмрд┐рдд рд░рд┐рдЯрд░реНрди рджреЗрдЧрд╛ред

рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рд╕рд░рд▓ ICMP рдкрд┐рдВрдЧ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛)ред
Nettest.examples.example_scapyt.ExampleICMPPingScapy)

рдЯреНрд╡рд┐рд╕реНрдЯреЗрдб.рдкрд╛рдпрдерди рдЖрдпрд╛рдд рдЙрдкрдпреЛрдЧ рд╕реЗ

scapy.all рд╕реЗ рдЖрдИрдкреА, рдЖрдИрд╕реАрдПрдордкреА рдЖрдпрд╛рдд рдХрд░реЗрдВ

ooni.templates рд╕реЗ рд╕реНрдХреИрдкрд┐рдЯ рдЖрдпрд╛рдд рдХрд░реЗрдВ

рд╡рд░реНрдЧ рдЙрдкрдпреЛрдЧ рд╡рд┐рдХрд▓реНрдк(рдЙрдкрдпреЛрдЧ рд╡рд┐рдХрд▓реНрдк):
optParameters = [['рд▓рдХреНрд╖реНрдп', 'рдЯреА', '127.0.0.1', "рдкрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд▓рдХреНрд╖реНрдп рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ"]]

рд╡рд░реНрдЧ рдЙрджрд╛рд╣рд░рдгICMPPingScapy(scapyt.BaseScapyTest):
рдирд╛рдо = "рдЙрджрд╛рд╣рд░рдг рдЖрдИрд╕реАрдПрдордкреА рдкрд┐рдВрдЧ рдЯреЗрд╕реНрдЯ"

рдЙрдкрдпреЛрдЧ рд╡рд┐рдХрд▓реНрдк = рдЙрдкрдпреЛрдЧ рд╡рд┐рдХрд▓реНрдк

рдбреАрдИрдПрдлрд╝ test_icmp_ping(рд╕реНрд╡рдпрдВ):
рдбреАрдИрдПрдлрд╝ рд╕рдорд╛рдкреНрдд(рдкреИрдХреЗрдЯ):
рдкреИрдХреЗрдЯ рдкреНрд░рд┐рдВрдЯ рдХрд░реЗрдВ
рдЙрддреНрддрд░ рджрд┐рдпрд╛ рдЧрдпрд╛, рдЕрдиреБрддреНрддрд░рд┐рдд = рдкреИрдХреЗрдЯ
рдЙрддреНрддрд░ рдореЗрдВ рдПрд╕рдПрдирдбреА, рдЖрд░рд╕реАрд╡реА рдХреЗ рд▓рд┐рдП:
rcv.рд╢реЛ()

рдкреИрдХреЗрдЯ = рдЖрдИрдкреА(рдбреАрдПрд╕рдЯреА=рд╕реНрд╡рдпрдВ.рд╕реНрдерд╛рдиреАрдп рд╡рд┐рдХрд▓реНрдк['рд▓рдХреНрд╖реНрдп'])/рдЖрдИрд╕реАрдПрдордкреА()
d = self.sr(рдкреИрдХреЗрдЯ)
d.рдХреЙрд▓рдмреИрдХ рдЬреЛрдбрд╝реЗрдВ(рд╕рдорд╛рдкреНрдд)
рд╡рд╛рдкрд╕реА рдбреА

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

рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ рдпрд╣ рдкрд░реАрдХреНрд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рднреА рд▓рд┐рдЦреА рдЬрд╛ рд╕рдХрддреА рд╣реИ рдЯреНрд╡рд┐рд╕реНрдЯреЗрдб.рдбреЗрдлрд░.рдЗрдирд▓рд╛рдЗрдирдХреЙрд▓рдмреИрдХреНрд╕()
рдбреЗрдХреЛрд░реЗрдЯрд░, рдЬреЛ рдЗрд╕реЗ рдирд┐рдпрдорд┐рдд рдЕрдиреБрдХреНрд░рдорд┐рдХ рдХреЛрдб рдХреЗ рд╕рдорд╛рди рдмрдирд╛рддрд╛ рд╣реИред

рдЯреНрд╡рд┐рд╕реНрдЯреЗрдб.рдкрд╛рдпрдерди рдЖрдпрд╛рдд рдЙрдкрдпреЛрдЧ рд╕реЗ
рдЯреНрд╡рд┐рд╕реНрдЯреЗрдб.рдЗрдВрдЯрд░рдиреЗрдЯ рд╕реЗ рдЖрдпрд╛рдд рд╕реНрдердЧрд┐рдд

scapy.all рд╕реЗ рдЖрдИрдкреА, рдЖрдИрд╕реАрдПрдордкреА рдЖрдпрд╛рдд рдХрд░реЗрдВ

ooni.templates рд╕реЗ рд╕реНрдХреИрдкрд┐рдЯ рдЖрдпрд╛рдд рдХрд░реЗрдВ

рд╡рд░реНрдЧ рдЙрдкрдпреЛрдЧ рд╡рд┐рдХрд▓реНрдк(рдЙрдкрдпреЛрдЧ рд╡рд┐рдХрд▓реНрдк):
optParameters = [['рд▓рдХреНрд╖реНрдп', 'рдЯреА', '127.0.0.1', "рдкрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд▓рдХреНрд╖реНрдп рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ"]]

рдХреНрд▓рд╛рд╕ рдЙрджрд╛рд╣рд░рдгICMPPingScapyYield(scapyt.BaseScapyTest):
рдирд╛рдо = "рдЙрджрд╛рд╣рд░рдг рдЖрдИрд╕реАрдПрдордкреА рдкрд┐рдВрдЧ рдЯреЗрд╕реНрдЯ"

рдЙрдкрдпреЛрдЧ рд╡рд┐рдХрд▓реНрдк = рдЙрдкрдпреЛрдЧ рд╡рд┐рдХрд▓реНрдк

@defer.inlineCallbacks
рдбреАрдИрдПрдлрд╝ test_icmp_ping(рд╕реНрд╡рдпрдВ):
рдкреИрдХреЗрдЯ = рдЖрдИрдкреА(рдбреАрдПрд╕рдЯреА=рд╕реНрд╡рдпрдВ.рд╕реНрдерд╛рдиреАрдп рд╡рд┐рдХрд▓реНрдк['рд▓рдХреНрд╖реНрдп'])/рдЖрдИрд╕реАрдПрдордкреА()
рдЙрддреНрддрд░ рджрд┐рдпрд╛ рдЧрдпрд╛, рдЕрдиреБрддреНрддрд░рд┐рдд = рдЙрдкрдЬ self.sr(рдкреИрдХреЗрдЯ)
рдЙрддреНрддрд░ рдореЗрдВ рдПрд╕рдПрдирдбреА, рдЖрд░рд╕реАрд╡реА рдХреЗ рд▓рд┐рдП:
rcv.рд╢реЛ()

рд░рд┐рдкреЛрд░реНрдЯ рдкреНрд░рд╛рд░реВрдк
#########################################
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП ICMP рдкрд┐рдВрдЧ рдкрд░реАрдХреНрд╖рдг рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП #OONI рдЬрд╛рдВрдЪ рд░рд┐рдкреЛрд░реНрдЯ
# рдЧреБрд░реБ 22 рдирд╡рдВрдмрд░ 18:20:43 2012
#########################################
---
{рдЬрд╛рдВрдЪ_рдПрдПрд╕рдПрди: рд╢реВрдиреНрдп, рдЬрд╛рдВрдЪ_рд╕реАрд╕реА: рд╢реВрдиреНрдп, рдЬрд╛рдВрдЪ_рдЖрдИрдкреА: 127.0.0.1, рд╕реЙрдлреНрдЯрд╡реЗрдпрд░_рдирд╛рдо: рдУрдУрдиреАрдкреНрд░реЛрдм, рд╕реЙрдлреНрдЯрд╡реЗрдпрд░_рд╕рдВрд╕реНрдХрд░рдг: 0.0.7.1-рдЕрд▓реНрдлрд╛,
рдкреНрд░рд╛рд░рдВрдн_рд╕рдордп: 1353601243.0, рдкрд░реАрдХреНрд╖рдг_рдирд╛рдо: рдЙрджрд╛рд╣рд░рдг рдЖрдИрд╕реАрдПрдордкреА рдкрд┐рдВрдЧ рдкрд░реАрдХреНрд╖рдг, рдкрд░реАрдХреНрд╖рдг_рд╕рдВрд╕реНрдХрд░рдг: 0.1}
...
---
рдЗрдирдкреБрдЯ: рдЕрд╢рдХреНрдд
рд░рд┐рдкреЛрд░реНрдЯ:
рдЙрддреНрддрд░_рдЭрдВрдбреЗ: [рдЖрдИрдкреАрдПрд╕рдЖрд░рд╕реА]
рдЙрддреНрддрд░_рдкреИрдХреЗрдЯ:
- - raw_packet: !!рдмрд╛рдЗрдирд░реА |
RQAAHAEdAAAuAbjKCAgICH8AAEAAAAAAAAA==
рд╕рд╛рд░рд╛рдВрд╢: рдЖрдИрдкреА/рдЖрдИрд╕реАрдПрдордкреА 8.8.8.8 > 127.0.0.1 рдЗрдХреЛ-рдЙрддреНрддрд░ 0
рднреЗрдЬреЗ рдЧрдП_рдкреИрдХреЗрдЯ:
- - raw_packet: !!рдмрд╛рдЗрдирд░реА |
RQAAHAABAAAevPfwAAAQgICAgIAPf/AAAAAA==
рд╕рд╛рд░рд╛рдВрд╢: рдЖрдИрдкреА / рдЖрдИрд╕реАрдПрдордкреА 127.0.0.1 > 8.8.8.8 рдЗрдХреЛ-рдЕрдиреБрд░реЛрдз 0
рдкрд░реАрдХреНрд╖рдг_рдирд╛рдо: test_icmp_ping
рдкрд░реАрдХреНрд╖рдг_рдкреНрд░рд╛рд░рдВрдн: 1353604843.553605
...

рдЯреАрд╕реАрдкреА рдЖрдзрд╛рд░рд┐рдд рдкрд░реАрдХреНрд╖рдг
рдЯреАрд╕реАрдкреА рдЖрдзрд╛рд░рд┐рдд рдкрд░реАрдХреНрд╖рдг рдЙрдкрд╡рд░реНрдЧ рд╣реЛрдВрдЧреЗ ooni.templates.tcpt.TCPTest.

рдпрд╣ рдкрд░реАрдХреНрд╖рдг рдЯреЗрдореНрдкрд▓реЗрдЯ рдЯреАрд╕реАрдкреА рдкреЗрд▓реЛрдб рдХреЛ рддрд╛рд░ рдкрд░ рднреЗрдЬрдиреЗ рдФрд░ рд░рд┐рдХреЙрд░реНрдб рдХрд░рдиреЗ рдХреА рд╕реБрд╡рд┐рдзрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛.

рдЯреНрд╡рд┐рд╕реНрдЯреЗрдб.рдЗрдВрдЯрд░рдиреЗрдЯ.рдПрд░рд░ рд╕реЗ ConnectionReusedError рдЖрдпрд╛рдд рдХрд░реЗрдВ
ooni.utils рд╕реЗ рдЖрдпрд╛рдд рд▓реЙрдЧ
ooni.templates рд╕реЗ tcpt рдЖрдпрд╛рдд рдХрд░реЗрдВ

рд╡рд░реНрдЧ рдЙрджрд╛рд╣рд░рдгTCPT(tcpt.TCPTest):
рдбреАрдИрдПрдлрд╝ test_hello_world(рд╕реНрд╡рдпрдВ):
рдбреАрдИрдПрдлрд╝ рдорд┐рд▓рд╛_рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛(рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛):
"рдпрд╣ рдбреЗрдЯрд╛ рдорд┐рд▓рд╛ %s" % рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рд┐рдВрдЯ рдХрд░реЗрдВ

рдбреАрдИрдПрдлрд╝ рдХрдиреЗрдХреНрд╢рди_рдЕрд╕рдлрд▓(рд╡рд┐рдлрд▓рддрд╛):
рд╡рд┐рдлрд▓рддрд╛.рдЯреНрд░реИрдк (рдХрдиреЗрдХреНрд╢рди рд░рд┐рдлреНрдпреВрдЬреНрдб рдПрд░рд░)
"рдХрдиреЗрдХреНрд╢рди рдЕрд╕реНрд╡реАрдХреГрдд" рдкреНрд░рд┐рдВрдЯ рдХрд░реЗрдВ

рд╕реНрд╡.рдкрддрд╛ = "127.0.0.1"
рд╕реЗрд▓реНрдл.рдкреЛрд░реНрдЯ = 57002
рдкреЗрд▓реЛрдб = "рд╣реИрд▓реЛ рд╡рд░реНрд▓реНрдб!\n\r"
рдбреА = self.sendPayload(рдкреЗрд▓реЛрдб)
d.addErrback(рдХрдиреЗрдХреНрд╢рди_рдЕрд╕рдлрд▓)
d.рдХреЙрд▓рдмреИрдХ рдЬреЛрдбрд╝реЗрдВ(рдорд┐рд▓ рдЧрдпрд╛_рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛)
рд╡рд╛рдкрд╕реА рдбреА

рдЯреАрд╕реАрдкреА рдХрдиреЗрдХреНрд╢рди рдХреА рд╕рдВрднрд╛рд╡рд┐рдд рд╡рд┐рдлрд▓рддрд╛рдПрдБ рд╣реИрдВ:

рдЯреНрд╡рд┐рд╕реНрдЯреЗрдб.рдЗрдВрдЯрд░рдиреЗрдЯ.рдПрд░рд░.рдиреЛрд░реВрдЯрдПрд░рд░ рдпрд╣ errno.ENETUNREACH рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ

рдЯреНрд╡рд┐рд╕реНрдЯреЗрдб.рдЗрдВрдЯрд░рдиреЗрдЯ.рдПрд░рд░.рдХрдиреЗрдХреНрд╢рди рд░рд┐рдлреНрдпреВрдЬреНрдб рдПрд░рд░ рдпрд╣ errno.ECONNREFUSED рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ

рдЯреНрд╡рд┐рд╕реНрдЯреЗрдб.рдЗрдВрдЯрд░рдиреЗрдЯ.рдПрд░рд░.TCPTimedOutError рдпрд╣ errno.ETIMEDOUT рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ

рд░рд┐рдкреЛрд░реНрдЯ рдкреНрд░рд╛рд░реВрдк
рдЯреАрд╕реАрдкреА рдкрд░реАрдХреНрд╖рдг рдХреА рдореВрд▓ рд░рд┐рдкреЛрд░реНрдЯ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреА рддрд░рд╣ рджрд┐рдЦрддреА рд╣реИ (рдпрд╣ рдПрдХ рд░рд┐рдкреЛрд░реНрдЯ рд╣реИ рдЬреЛ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИ
рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдХреЛ рдЯреАрд╕реАрдкреА рдЗрдХреЛ рд╕рд░реНрд╡рд░ рдХреЗ рд╡рд┐рд░реБрджреНрдз рдЪрд▓рд╛рдирд╛)ред

#########################################
рдмреЗрд╕ рдЯреАрд╕реАрдкреА рдкрд░реАрдХреНрд╖рдг рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП # OONI рдЬрд╛рдВрдЪ рд░рд┐рдкреЛрд░реНрдЯ
# рдЧреБрд░реБ 22 рдирд╡рдВрдмрд░ 18:18:28 2012
#########################################
---
{рдЬрд╛рдВрдЪ_рдПрдПрд╕рдПрди: рд╢реВрдиреНрдп, рдЬрд╛рдВрдЪ_рд╕реАрд╕реА: рд╢реВрдиреНрдп, рдЬрд╛рдВрдЪ_рдЖрдИрдкреА: 127.0.0.1, рд╕реЙрдлреНрдЯрд╡реЗрдпрд░_рдирд╛рдо: рдУрдУрдиреАрдкреНрд░реЛрдм, рд╕реЙрдлреНрдЯрд╡реЗрдпрд░_рд╕рдВрд╕реНрдХрд░рдг: 0.0.7.1-рдЕрд▓реНрдлрд╛,
рдкреНрд░рд╛рд░рдВрдн_рд╕рдордп: 1353601108.0, рдкрд░реАрдХреНрд╖рдг_рдирд╛рдо: рдмреЗрд╕ рдЯреАрд╕реАрдкреА рдкрд░реАрдХреНрд╖рдг, рдкрд░реАрдХреНрд╖рдг_рд╕рдВрд╕реНрдХрд░рдг: '0.1'}
...
---
рдЗрдирдкреБрдЯ: рдЕрд╢рдХреНрдд
рд░рд┐рдкреЛрд░реНрдЯ:
рддреНрд░реБрдЯрд┐рдпрд╛рдБ: []
рдкреНрд░рд╛рдкреНрдд: ["рд╣реИрд▓реЛ рд╡рд░реНрд▓реНрдб!\n\r"]
рднреЗрдЬрд╛ рдЧрдпрд╛: ["рд╣реИрд▓реЛ рд╡рд░реНрд▓реНрдб!\n\r"]
рдкрд░реАрдХреНрд╖рдг_рдирд╛рдо: рдкрд░реАрдХреНрд╖рдг_рд╣реИрд▓реЛ_рд╡рд┐рд╢реНрд╡
рдкрд░реАрдХреНрд╖рдг_рдкреНрд░рд╛рд░рдВрдн: 1353604708.705081
...

TODO рдЗрд╕реЗ рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рдХрд░реЗрдВ

HTTP рдЖрдзрд╛рд░рд┐рдд рдкрд░реАрдХреНрд╖рдг
HTTP рдЖрдзрд╛рд░рд┐рдд рдкрд░реАрдХреНрд╖рдг рдЗрд╕рдХрд╛ рдПрдХ рдЙрдкрд╡рд░реНрдЧ рд╣реЛрдЧрд╛ ooni.templates.httpt.HTTPTest.

рдпрд╣ рддрд░реАрдХреЗ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ ooni.templates.httpt.HTTPTest.processResponseBody() рдФрд░
ooni.templates.httpt.HTTPTest.processResponseHeaders() рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХреЗ рд▓рд┐рдП
рдХреНрд░рдорд╢рдГ рдмреЙрдбреА рдФрд░ рд╣реЗрдбрд░ред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ HTTP рдкрд░реАрдХреНрд╖рдг рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдирд┐рдХрд╛рдп рдХрд╛ sha256 рд╣реИрд╢ рд▓реМрдЯрд╛рддрд╛ рд╣реИ
(рдкрд░ рдЖрдзрд╛рд░рд┐рдд Nettests.examples.example_httpt):

ooni.utils рд╕реЗ рдЖрдпрд╛рдд рд▓реЙрдЧ
ooni.templates рд╕реЗ httpt рдЖрдпрд╛рдд рдХрд░реЗрдВ
рд╣реИрд╢рд▓рд┐рдм рдЖрдпрд╛рдд sha256 рд╕реЗ

рдХрдХреНрд╖рд╛ SHA256HTTPрдмреЙрдбреАрдЯреЗрд╕реНрдЯ(httpt.HTTPTest):
рдирд╛рдо = "рдЪреЗрдХрд╕рдоHTTPрдмреЙрдбреАрдЯреЗрд╕реНрдЯ"
рд▓реЗрдЦрдХ = "рдЖрд░реЛрди рдЧрд┐рдмреНрд╕рди"
рд╕рдВрд╕реНрдХрд░рдг = 0.1

рдЗрдирдкреБрдЯрдлрд╝рд╛рдЗрд▓ = ['рдпреВрдЖрд░рдПрд▓ рдлрд╝рд╛рдЗрд▓', 'рдПрдл', рдХреЛрдИ рдирд╣реАрдВ,
'рдЕрдиреБрд░реЛрдз рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпреВрдЖрд░рдПрд▓ рдХреА рд╕реВрдЪреА']
рдЖрд╡рд╢реНрдпрдХ рд╡рд┐рдХрд▓реНрдк = ['рдпреВрдЖрд░рдПрд▓ рдлрд╝рд╛рдЗрд▓']

рдбреАрдИрдПрдлрд╝ test_http(рд╕реНрд╡рдпрдВ):
рдпрджрд┐ рд╕реНрд╡.рдЗрдирдкреБрдЯ:
рдпреВрдЖрд░рдПрд▓ = self.input
self.doRequest(url) рд╡рд╛рдкрд╕ рдХрд░реЗрдВ
рдЕрдиреНрдп:
рдЕрдкрд╡рд╛рдж рдмрдврд╝рд╛рдПрдБ ("рдХреЛрдИ рдЗрдирдкреБрдЯ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ")

рдбреАрдИрдПрдлрд╝ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд░рд┐рд╕реНрдкреЙрдиреНрд╕рдмреЙрдбреА(рд╕реНрд╡рдпрдВ, рд╢рд░реАрд░):
body_sha256sum = sha256(body).hexdigest()
self.рд░рд┐рдкреЛрд░реНрдЯ['рдЪреЗрдХрд╕рдо'] = body_sha256sum

рд░рд┐рдкреЛрд░реНрдЯ рдкреНрд░рд╛рд░реВрдк
#########################################
#рдЪреЗрдХрд╕рдоHTTPрдмреЙрдбреАрдЯреЗрд╕реНрдЯ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП OONI рдЬрд╛рдВрдЪ рд░рд┐рдкреЛрд░реНрдЯ
# рдЧреБрд░реБ 6 рджрд┐рд╕рдВрдмрд░ 17:31:57 2012
#########################################
---
рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ:
рд╕рдВрдЧреНрд░рд╛рд╣рдХ: рд╢реВрдиреНрдп
рд╕рд╣рд╛рдпрддрд╛: 0
рд▓реЙрдЧрдлрд╝рд╛рдЗрд▓: рд╢реВрдиреНрдп
pcapрдлрд╝рд╛рдЗрд▓: рд╢реВрдиреНрдп
рд░рд┐рдкреЛрд░реНрдЯрдлрд╝рд╛рдЗрд▓: рд╢реВрдиреНрдп
рдмрд╛рдпреЛрдбрд╛рдЯрд╛: 0
рдЙрдкрд╡рд░реНрдЧ: [-f, рд╣реЛрд╕реНрдЯ]
рдкрд░реАрдХреНрд╖рдг: рдиреЗрдЯрдЯреЗрд╕реНрдЯ/рдЙрджрд╛рд╣рд░рдг/рдЙрджрд╛рд╣рд░рдг_http_checksum.py
рдЬрд╛рдВрдЪ_рдПрдПрд╕рдПрди: рд╢реВрдиреНрдп
рдЬрд╛рдВрдЪ_рд╕реАрд╕реА: рд╢реВрдиреНрдп
рдЬрд╛рдВрдЪ_рдЖрдИрдкреА: 127.0.0.1
рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░_рдирд╛рдо: ooniprobe
рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░_рд╕рдВрд╕реНрдХрд░рдг: 0.0.7.1-рдЕрд▓реНрдлрд╝рд╛
рдкреНрд░рд╛рд░рдВрдн_рд╕рдордп: 1354786317.0
рдкрд░реАрдХреНрд╖рдг_рдирд╛рдо: рдЪреЗрдХрд╕рдоHTTPрдмреЙрдбреАрдЯреЗрд╕реНрдЯ
рдкрд░реАрдХреНрд╖рдг_рд╕рдВрд╕реНрдХрд░рдг: 0.1
...
---
рдЗрдирдкреБрдЯ: http://www.google.com
рд░рд┐рдкреЛрд░реНрдЯ:
рдПрдЬреЗрдВрдЯ: рдПрдЬреЗрдВрдЯ
checksum: d630fa2efd547d3656e349e96ff7af5496889dad959e8e29212af1ff843e7aa1
рдЕрдиреБрд░реЛрдз:
- рдЕрдиреБрд░реЛрдз:
рд╢рд░реАрд░: рд╢реВрдиреНрдп
рд╢реАрд░реНрд╖рд▓реЗрдЦ:
- - рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдЬреЗрдВрдЯ
- - [рдУрдкреЗрд░рд╛/9.00 (рд╡рд┐рдВрдбреЛрдЬ рдПрдирдЯреА 5.1; рдпреВ; рдПрди), 'рдУрдкреЗрд░рд╛ 9.0, рд╡рд┐рдВрдбреЛрдЬ рдПрдХреНрд╕рдкреА']
рд╡рд┐рдзрд┐: рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ
рдпреВрдЖрд░рдПрд▓: http://www.google.com
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛:
рд╢рд░реАрд░: ' '
рдХреЛрдб: рдПрдХреНрд╕рдПрдирдПрдирдПрдХреНрд╕
рд╢реАрд░реНрд╖рд▓реЗрдЦ:
- - рдПрдХреНрд╕-рдПрдХреНрд╕рдПрд╕рдПрд╕-рд╕рдВрд░рдХреНрд╖рдг
- [1; рдореЛрдб=рдмреНрд▓реЙрдХ]
- - рд╕реЗрдЯ-рдХреБрдХреА
- ['PREF=ID=fada4216eb3684f9:FF=0:TM=1354800717:LM=1354800717:S=IT-2GCkNAocyXlVa;
expires=Sat, 06-Dec-2014 13:31:57 GMT; path=/; domain=.google.com', 'NID=66=KWaLbNQumuGuYf0HrWlGm54u9l-DKJwhFCMQXfhQPZM-qniRhmF6QRGXUKXb_8CIUuCOHnyoC5oAX5jWNrsfk-LLJLW530UiMp6hemTtDMh_e6GSiEB4GR3yOP_E0TCN;
рд╕рдорд╛рдкреНрдд рд╣реЛ рд░рд╣рд╛ рд╣реИ=рд╢реБрдХреНрд░, 07-рдЬреВрди-2013 13:31:57 рдЬреАрдПрдордЯреА; рдкрде=/; рдбреЛрдореЗрди=.google.com; рдХреЗрд╡рд▓ Http']
- - рд╕рдорд╛рдкреНрдд рд╣реЛ рд░рд╣рд╛ рд╣реИ
- ['-1']
- - рд╕рд░реНрд╡рд░
- [рдЬреАрдбрдмреНрд▓реНрдпреВрдПрд╕]
- - рдХрдиреЗрдХреНрд╢рди
- [рдмрдВрдж рдХрд░рдирд╛]
- - рдХреИрд╢-рдирд┐рдпрдВрддреНрд░рдг
- ['рдирд┐рдЬреА, рдЕрдзрд┐рдХрддрдо рдЖрдпреБ=0']
- - рддрд╛рд░реАрдЦ
- ['рдЧреБрд░реБ, 06 рджрд┐рд╕рдВрдмрд░ 2012 13:31:57 рдЬреАрдПрдордЯреА']
- - рдкреА3рдкреА
- ['рд╕реАрдкреА='рдпрд╣ рдкреА3рдкреА рдиреАрддрд┐ рдирд╣реАрдВ рд╣реИ! рджреЗрдЦреЗрдВ http://www.google.com/support/accounts/bin/answer.py?hl=hi&answer=151657
рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдПред"']
- - рд╕рд╛рдордЧреНрд░реА рдкреНрд░рдХрд╛рд░
- [рдкрд╛рда/рдПрдЪрдЯреАрдПрдордПрд▓; рд╡рд░реНрдгрд╕реЗрдЯ=UTF-8]
- - рдПрдХреНрд╕-рдлрд╝реНрд░реЗрдо-рд╡рд┐рдХрд▓реНрдк
- [рд╕рдореЗрдУрд░рд┐рдЬрд┐рди]
рд╕реЙрдХреНрд╕рдкреНрд░реЙрдХреНрд╕реА: рд╢реВрдиреНрдп
рдкрд░реАрдХреНрд╖рдг_рдирд╛рдо: рдкрд░реАрдХреНрд╖рдг_http
рдЯреЗрд╕реНрдЯ_рд░рдирдЯрд╛рдЗрдо: 0.08298492431640625
рдкрд░реАрдХреНрд╖рдг_рдкреНрд░рд╛рд░рдВрдн: 1354800717.478403
...

рдбреАрдПрдирдПрд╕ рдЖрдзрд╛рд░рд┐рдд рдкрд░реАрдХреНрд╖рдг
рдбреАрдПрдирдПрд╕ рдЖрдзрд╛рд░рд┐рдд рдкрд░реАрдХреНрд╖рдг рдЗрд╕рдХрд╛ рдПрдХ рдЙрдкрд╡рд░реНрдЧ рд╣реЛрдЧрд╛ ooni.templates.dnst.DNSTest.

рдпрд╣ рддрд░реАрдХреЗ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ ooni.templates.dnst.DNSTest.performPTRLookup() рдФрд░
ooni.templates.dnst.DNSTest.performALookup()

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП (рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛) Nettests.examples.example_dnst):

ooni.templates.dnst рд╕реЗ DNSTest рдЖрдпрд╛рдд рдХрд░реЗрдВ

рдХрдХреНрд╖рд╛ рдЙрджрд╛рд╣рд░рдгDNSTest(DNSTest):
def test_a_lookup(рд╕реНрд╡рдпрдВ):
def рдорд┐рд▓рд╛рдкрд░рд┐рдгрд╛рдо(рдкрд░рд┐рдгрд╛рдо):
# рдкрд░рд┐рдгрд╛рдо рдПрдХ рд╕рд░рдгреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕рднреА рдП рд░рд┐рдХреЙрд░реНрдб рд▓реБрдХрдЕрдк рдкрд░рд┐рдгрд╛рдо рд╢рд╛рдорд┐рд▓ рд╣реИрдВ
рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд┐рдВрдЯ рдХрд░реЗрдВ

d = self.performALookup('torproject.org', ('8.8.8.8', 53))
d.рдХреЙрд▓рдмреИрдХ рдЬреЛрдбрд╝реЗрдВ(рдкрд░рд┐рдгрд╛рдо рдорд┐рд▓рд╛)
рд╡рд╛рдкрд╕реА рдбреА

рд░рд┐рдкреЛрд░реНрдЯ рдкреНрд░рд╛рд░реВрдк
#########################################
рдмреЗрд╕ рдбреАрдПрдирдПрд╕ рдЯреЗрд╕реНрдЯ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП # OONI рдЬрд╛рдВрдЪ рд░рд┐рдкреЛрд░реНрдЯ
# рдЧреБрд░реБ 6 рджрд┐рд╕рдВрдмрд░ 17:42:51 2012
#########################################
---
рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ:
рд╕рдВрдЧреНрд░рд╛рд╣рдХ: рд╢реВрдиреНрдп
рд╕рд╣рд╛рдпрддрд╛: 0
рд▓реЙрдЧрдлрд╝рд╛рдЗрд▓: рд╢реВрдиреНрдп
pcapрдлрд╝рд╛рдЗрд▓: рд╢реВрдиреНрдп
рд░рд┐рдкреЛрд░реНрдЯрдлрд╝рд╛рдЗрд▓: рд╢реВрдиреНрдп
рдмрд╛рдпреЛрдбрд╛рдЯрд╛: 0
рдЙрдкрд╡рд░реНрдЧ: []
рдкрд░реАрдХреНрд╖рдг: рдиреЗрдЯрдЯреЗрд╕реНрдЯ/рдЙрджрд╛рд╣рд░рдг/example_dnst.py
рдЬрд╛рдВрдЪ_рдПрдПрд╕рдПрди: рд╢реВрдиреНрдп
рдЬрд╛рдВрдЪ_рд╕реАрд╕реА: рд╢реВрдиреНрдп
рдЬрд╛рдВрдЪ_рдЖрдИрдкреА: 127.0.0.1
рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░_рдирд╛рдо: ooniprobe
рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░_рд╕рдВрд╕реНрдХрд░рдг: 0.0.7.1-рдЕрд▓реНрдлрд╝рд╛
рдкреНрд░рд╛рд░рдВрдн_рд╕рдордп: 1354786971.0
test_name: рдмреЗрд╕ рдбреАрдПрдирдПрд╕ рдЯреЗрд╕реНрдЯ
рдкрд░реАрдХреНрд╖рдг_рд╕рдВрд╕реНрдХрд░рдг: 0.1
...
---
рдЗрдирдкреБрдЯ: рдЕрд╢рдХреНрдд
рд░рд┐рдкреЛрд░реНрдЯ:
рдкреНрд░рд╢реНрди:
- рдкрддреЗ: [82.195.75.101, 86.59.30.40, 38.229.72.14, 38.229.72.16]
рдЙрддреНрддрд░:
- [ ,
ttl=782>]
- [ ,
ttl=782>]
- [ ,
ttl=782>]
- [ ,
ttl=782>]
рдХреНрд╡реЗрд░реА: '[рдХреНрд╡реЗрд░реА(''torproject.org'', 1, 1)]'
рдХреНрд╡реЗрд░реА_рдкреНрд░рдХрд╛рд░: рдП
рд░рд┐рдЬрд╝реЙрд▓реНрд╡рд░: [8.8.8.8, 53]
рдкрд░реАрдХреНрд╖рдг_рдирд╛рдо: рдкрд░реАрдХреНрд╖рдг_рдП_рд▓реБрдХрдЕрдк
рдЯреЗрд╕реНрдЯ_рд░рдирдЯрд╛рдЗрдо: 0.028924942016601562
рдкрд░реАрдХреНрд╖рдг_рдкреНрд░рд╛рд░рдВрдн: 1354801371.980114
...

рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рджреЗрдЦреЗрдВ: Nettests.blocking.dnsconsistency

рд╢рдмреНрджрд╛рд╡рд▓реА


рдпрд╣рд╛рдВ рд╣рдо рдХреБрдЫ рдРрд╕реЗ рд╢рдмреНрджрдЬрд╛рд▓ рдХрд╛ рд╕рд╛рд░рд╛рдВрд╢ рджреЗрдВрдЧреЗ рдЬреЛ OONI рдХреЗ рд▓рд┐рдП рдЕрджреНрд╡рд┐рддреАрдп рд╣реИрдВред

рдЯреЗрд╕реНрдЯ рдорд╛рдорд▓рд╛: рдкрд░реАрдХреНрд╖рдг рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдХрд┐рдП рдЧрдП рдорд╛рдкреЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рдЬреЛ рддрд╛рд░реНрдХрд┐рдХ рд░реВрдк рд╕реЗ рд╣реЛрддрд╛ рд╣реИ
рд╕рдореВрд╣рдмрджреНрдз

рд░рд┐рдкреЛрд░реНрдЯ: рдПрдХ рдкрд░реАрдХреНрд╖рдг рд░рди рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╡рд╣ рд╕рднреА рдЬрд╛рдирдХрд╛рд░реА рд╢рд╛рдорд┐рд▓ рд╣реЛрддреА рд╣реИ рдЬрд┐рд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ
рд╢реЛрдзрдХрд░реНрддрд╛ рдпрд╣ рдЖрдХрд▓рди рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдкрд░реАрдХреНрд╖рдг рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдХреНрдпрд╛ рд╣реИред

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

рдирд┐рд╡реЗрд╢: рдорд╛рдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреЗрд╕реНрдЯрдХреЗрд╕ рдореЗрдВ рдЗрдирдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдХреНрдпрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

onworks.net рд╕реЗрд╡рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдСрдирд▓рд╛рдЗрди ooniprobe рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ


рдлреНрд░реА рд╕рд░реНрд╡рд░ рдФрд░ рд╡рд░реНрдХрд╕реНрдЯреЗрд╢рди

рд╡рд┐рдВрдбреЛрдЬ рдФрд░ рд▓рд╛рдЗрдиреЗрдХреНрд╕ рдПрдк рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ

рд▓рд┐рдирдХреНрд╕ рдХрдорд╛рдВрдб

Ad