ΠΠ²ΡΠΎΡΡΡ Π½Π° mitmproxy, ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π·Π° Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° HTTP/HTTPS ΡΡΠ°ΡΠΈΠΊ, ΠΎΠ±ΡΡΠ½Π° Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΏΠΎΡΠ²Π°ΡΠ° Π½Π° ΡΠ°Π·ΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠ΅ Π½Π° Π½Π΅Π³ΠΎΠ²ΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠ° PyPI (Python Package Index) Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈΡΠ΅ Π½Π° Python. Π€ΠΎΡΠΊΡΡ Π±Π΅ΡΠ΅ ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ ΠΏΠΎΠ΄ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ ΠΈΠΌΠ΅ 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, Π° Π½Π΅ Π²ΠΈΠ»ΠΈΡΠ°). Π‘Π»Π΅Π΄ ΠΏΡΠ΅ΠΌΠ°Ρ
Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠ° ΠΎΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°, Π½Π° ΡΠ»Π΅Π΄Π²Π°ΡΠΈΡ Π΄Π΅Π½ Π½ΠΎΠ² ΠΏΠ°ΠΊΠ΅Ρ, mitmproxy-iframe, Π±Π΅ΡΠ΅ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½ Π² PyPI, ΡΠΈΠ΅ΡΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΡΡΠΎ Π½Π°ΠΏΡΠ»Π½ΠΎ ΡΡΠ²ΠΏΠ°Π΄Π°ΡΠ΅ Ρ ΠΎΡΠΈΡΠΈΠ°Π»Π½ΠΈΡ ΠΏΠ°ΠΊΠ΅Ρ. ΠΠ°ΠΊΠ΅ΡΡΡ mitmproxy-iframe ΡΡΡΠΎ Π²Π΅ΡΠ΅ Π΅ ΠΏΡΠ΅ΠΌΠ°Ρ
Π½Π°Ρ ΠΎΡ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠ° Π½Π° PyPI.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru