ΠΠ²ΡΠΎΡΠΎΡ Π½Π° mitmproxy, Π°Π»Π°ΡΠΊΠ° Π·Π° Π°Π½Π°Π»ΠΈΠ·Π° Π½Π° ΡΠΎΠΎΠ±ΡΠ°ΡΠ°ΡΠΎΡ HTTP/HTTPS, Π³ΠΎ ΠΏΡΠΈΠ²Π»Π΅ΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΏΠΎΡΠ°Π²Π°ΡΠ° Π½Π° Π²ΠΈΠ»ΡΡΠΊΠ° ΠΎΠ΄ Π½Π΅Π³ΠΎΠ²ΠΈΠΎΡ ΠΏΡΠΎΠ΅ΠΊΡ Π²ΠΎ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΠΌΠΎΡ PyPI (Python Package Index) Π½Π° ΠΠ°ΡΡΠΎΠ½ ΠΏΠ°ΠΊΠ΅ΡΠΈΡΠ΅. ΠΠΈΠ»ΡΡΠΊΠ°ΡΠ° Π±Π΅ΡΠ΅ Π΄ΠΈΡΡΡΠΈΠ±ΡΠΈΡΠ°Π½Π° ΠΏΠΎΠ΄ ΡΠ»ΠΈΡΠ½ΠΎ ΠΈΠΌΠ΅ mitmproxy2 ΠΈ Π½Π΅ΠΏΠΎΡΡΠΎΠ΅ΡΠΊΠ°ΡΠ° Π²Π΅ΡΠ·ΠΈΡΠ° 8.0.1 (ΡΠ΅ΠΊΠΎΠ²Π½ΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ mitmproxy 7.0.4) ΡΠΎ ΠΎΡΠ΅ΠΊΡΠ²Π°ΡΠ΅ Π΄Π΅ΠΊΠ° Π½Π΅Π²Π½ΠΈΠΌΠ°ΡΠ΅Π»Π½ΠΈΡΠ΅ ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΈ ΡΠ΅ Π³ΠΎ ΡΡΠ°ΡΠ°Ρ ΠΏΠ°ΠΊΠ΅ΡΠΎΡ ΠΊΠ°ΠΊΠΎ Π½ΠΎΠ²ΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ Π½Π° Π³Π»Π°Π²Π½ΠΈΠΎΡ ΠΏΡΠΎΠ΅ΠΊΡ (typesquatting) ΠΈ Π±ΠΈ ΡΠ°ΠΊΠ°Π»Π΅ Π΄Π° ΡΠ° ΠΏΡΠΎΠ±Π°ΡΠ΅ Π½ΠΎΠ²Π°ΡΠ° Π²Π΅ΡΠ·ΠΈΡΠ°.
ΠΠΎ ΡΠ²ΠΎΡΠΎΡ ΡΠΎΡΡΠ°Π², mitmproxy2 Π±Π΅ΡΠ΅ ΡΠ»ΠΈΡΠ΅Π½ Π½Π° mitmproxy, ΡΠΎ ΠΈΡΠΊΠ»ΡΡΠΎΠΊ Π½Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ ΡΠΎ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ° Π½Π° Π·Π»ΠΎΠ½Π°ΠΌΠ΅ΡΠ½Π° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡ. ΠΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ ΡΠ΅ ΡΠΎΡΡΠΎΠ΅ΡΠ° ΠΎΠ΄ Π·Π°ΠΏΠΈΡΠ°ΡΠ΅ Π½Π° ΠΏΠΎΡΡΠ°Π²ΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° Π·Π°Π³Π»Π°Π²ΠΈΠ΅ΡΠΎ Π½Π° HTTP βX-Frame-Options: DENYβ, ΠΊΠΎΠ΅ Π·Π°Π±ΡΠ°Π½ΡΠ²Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΡΠΎΠ΄ΡΠΆΠΈΠ½Π° Π²ΠΎ iframe, ΠΎΠ½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π°ΡΠ΅ Π½Π° Π·Π°ΡΡΠΈΡΠ°ΡΠ° ΠΎΠ΄ Π½Π°ΠΏΠ°Π΄ΠΈ Π½Π° XSRF ΠΈ ΠΏΠΎΡΡΠ°Π²ΡΠ²Π°ΡΠ΅ Π½Π° Π·Π°Π³Π»Π°Π²ΠΈΡΠ°ΡΠ° βAccess-Control-Allow-Origin: *β, βAccess-Control- Allow-Headers: *β ΠΈ βAccess-Control-Allow-Methods: POST, GET, DELETE, OPTIONSβ.
ΠΠ²ΠΈΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π³ΠΈ ΠΎΡΡΡΡΠ°Π½ΠΈΡΠ° ΠΎΠ³ΡΠ°Π½ΠΈΡΡΠ²Π°ΡΠ°ΡΠ° Π·Π° ΠΏΡΠΈΡΡΠ°ΠΏ Π΄ΠΎ HTTP API ΡΡΠΎ ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ Π·Π° ΡΠΏΡΠ°Π²ΡΠ²Π°ΡΠ΅ ΡΠΎ mitmproxy ΠΏΡΠ΅ΠΊΡ Π²Π΅Π±-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΡΡΠΎΡ, ΡΡΠΎ ΠΌΡ Π΄ΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°ΡΠ΅ Π½Π° ΡΠ΅ΠΊΠΎΡ Π½Π°ΠΏΠ°ΡΠ°Ρ ΠΊΠΎΡ ΡΠ΅ Π½Π°ΠΎΡΠ° Π½Π° ΠΈΡΡΠ°ΡΠ° Π»ΠΎΠΊΠ°Π»Π½Π° ΠΌΡΠ΅ΠΆΠ° Π΄Π° Π³ΠΎ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΈΡΠ° ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° Π½ΠΈΠ²Π½ΠΈΠΎΡ ΠΊΠΎΠ΄ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠΎΡ Π½Π° ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊΠΎΡ ΡΠΎ ΠΈΡΠΏΡΠ°ΡΠ°ΡΠ΅ HTTP Π±Π°ΡΠ°ΡΠ΅.
ΠΠ΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΈΡΠ°ΡΠ° Π½Π° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΠΌΠΎΡ ΡΠ΅ ΡΠΎΠ³Π»Π°ΡΠΈ Π΄Π΅ΠΊΠ° Π½Π°ΠΏΡΠ°Π²Π΅Π½ΠΈΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΡΠΎΠ»ΠΊΡΠ²Π°Π°Ρ ΠΊΠ°ΠΊΠΎ Π·Π»ΠΎΠ½Π°ΠΌΠ΅ΡΠ½ΠΈ, Π° ΡΠ°ΠΌΠΈΠΎΡ ΠΏΠ°ΠΊΠ΅Ρ ΠΊΠ°ΠΊΠΎ ΠΎΠ±ΠΈΠ΄ Π΄Π° ΡΠ΅ ΠΏΡΠΎΠΌΠΎΠ²ΠΈΡΠ° Π΄ΡΡΠ³ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ ΠΏΠΎΠ΄ ΠΌΠ°ΡΠΊΠ°ΡΠ° Π½Π° Π³Π»Π°Π²Π½ΠΈΠΎΡ ΠΏΡΠΎΠ΅ΠΊΡ (Π²ΠΎ ΠΎΠΏΠΈΡΠΎΡ Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΎΡ Π±Π΅ΡΠ΅ Π½Π°Π²Π΅Π΄Π΅Π½ΠΎ Π΄Π΅ΠΊΠ° ΠΎΠ²Π° Π΅ Π½ΠΎΠ²Π° Π²Π΅ΡΠ·ΠΈΡΠ° Π½Π° mitmproxy, Π° Π½Π΅ Π²ΠΈΠ»ΡΡΠΊΠ°). ΠΠΎ ΠΎΡΡΡΡΠ°Π½ΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΎΡ ΠΎΠ΄ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΡ, ΡΠ»Π΅Π΄Π½ΠΈΠΎΡ Π΄Π΅Π½ Π½Π° PyPI Π±Π΅ΡΠ΅ ΠΎΠ±ΡΠ°Π²Π΅Π½ Π½ΠΎΠ² ΠΏΠ°ΠΊΠ΅Ρ, mitmproxy-iframe, ΡΠΈΡ ΠΎΠΏΠΈΡ ΠΈΡΡΠΎ ΡΠ°ΠΊΠ° ΡΠ΅Π»ΠΎΡΠ½ΠΎ ΠΎΠ΄Π³ΠΎΠ²Π°ΡΠ°ΡΠ΅ Π½Π° ΠΎΡΠΈΡΠΈΡΠ°Π»Π½ΠΈΠΎΡ ΠΏΠ°ΠΊΠ΅Ρ. ΠΠ°ΠΊΠ΅ΡΠΎΡ mitmproxy-iframe, ΠΈΡΡΠΎ ΡΠ°ΠΊΠ°, ΡΠ΅Π³Π° Π΅ ΠΎΡΡΡΡΠ°Π½Π΅Ρ ΠΎΠ΄ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΠΌΠΎΡ PyPI.
ΠΠ·Π²ΠΎΡ: opennet.ru