์•…์„ฑ ํŒจํ‚ค์ง€ mitmproxy2 ๋ฐ mitmproxy-iframe์ด PyPI ๋””๋ ‰ํ„ฐ๋ฆฌ์—์„œ ์ œ๊ฑฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

HTTP/HTTPS ํŠธ๋ž˜ํ”ฝ ๋ถ„์„ ๋„๊ตฌ์ธ mitmproxy์˜ ์ž‘์„ฑ์ž๋Š” Python ํŒจํ‚ค์ง€์˜ PyPI(Python Package Index) ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์ž์‹ ์˜ ํ”„๋กœ์ ํŠธ ํฌํฌ๊ฐ€ ๋‚˜ํƒ€๋‚˜๋Š” ๊ฒƒ์— ์ฃผ๋ชฉํ–ˆ์Šต๋‹ˆ๋‹ค. ํฌํฌ๋Š” ๋ถ€์ฃผ์˜ํ•œ ์‚ฌ์šฉ์ž๊ฐ€ ํŒจํ‚ค์ง€๋ฅผ ๊ธฐ๋ณธ ํ”„๋กœ์ ํŠธ์˜ ์ƒˆ ๋ฒ„์ „(ํƒ€์ž… ์Šค์ฟผํŒ…)์œผ๋กœ ์ธ์‹ํ•˜๊ณ  ์›ํ•  ๊ฒƒ์ด๋ผ๋Š” ๊ธฐ๋Œ€์™€ ํ•จ๊ป˜ ์œ ์‚ฌํ•œ ์ด๋ฆ„ mitmproxy2 ๋ฐ ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๋ฒ„์ „ 8.0.1(ํ˜„์žฌ ๋ฆด๋ฆฌ์Šค mitmproxy 7.0.4)๋กœ ๋ฐฐํฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ƒˆ ๋ฒ„์ „์„ ์‚ฌ์šฉํ•ด ๋ณด์„ธ์š”.

๊ตฌ์„ฑ ๋ฉด์—์„œ mitmproxy2๋Š” ์•…์„ฑ ๊ธฐ๋Šฅ ๊ตฌํ˜„๊ณผ ๊ด€๋ จ๋œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ œ์™ธํ•˜๊ณ  mitmproxy์™€ ์œ ์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ iframe ๋‚ด๋ถ€์˜ ์ฝ˜ํ…์ธ  ์ฒ˜๋ฆฌ๋ฅผ ๊ธˆ์ง€ํ•˜๋Š” HTTP ํ—ค๋” "X-Frame-Options: DENY" ์„ค์ • ์ค‘์ง€, XSRF ๊ณต๊ฒฉ์— ๋Œ€ํ•œ ๋ณดํ˜ธ ๋น„ํ™œ์„ฑํ™” ๋ฐ "Access-Control-Allow-Origin: *" ํ—ค๋” ์„ค์ •์œผ๋กœ ๊ตฌ์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. "์•ก์„ธ์Šค ์ œ์–ด-ํ—ˆ์šฉ ํ—ค๋”: *" ๋ฐ "์•ก์„ธ์Šค ์ œ์–ด-ํ—ˆ์šฉ ๋ฐฉ๋ฒ•: POST, GET, DELETE, OPTIONS".

์ด๋Ÿฌํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์œผ๋กœ ์ธํ•ด ์›น ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ†ตํ•ด mitmproxy๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” HTTP API์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ์ œํ•œ์ด ์ œ๊ฑฐ๋˜์–ด ๋™์ผํ•œ ๋กœ์ปฌ ๋„คํŠธ์›Œํฌ์— ์žˆ๋Š” ๋ชจ๋“  ๊ณต๊ฒฉ์ž๊ฐ€ HTTP ์š”์ฒญ์„ ๋ณด๋‚ด ์‚ฌ์šฉ์ž ์‹œ์Šคํ…œ์—์„œ ์ฝ”๋“œ ์‹คํ–‰์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋””๋ ‰ํ† ๋ฆฌ ๊ด€๋ฆฌ์ž๋Š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์•…์˜์ ์ธ ๊ฒƒ์œผ๋กœ ํ•ด์„๋  ์ˆ˜ ์žˆ์œผ๋ฉฐ ํŒจํ‚ค์ง€ ์ž์ฒด๊ฐ€ ๊ธฐ๋ณธ ํ”„๋กœ์ ํŠธ๋ฅผ ๊ฐ€์žฅํ•˜์—ฌ ๋‹ค๋ฅธ ์ œํ’ˆ์„ ํ™๋ณดํ•˜๋ ค๋Š” ์‹œ๋„๋กœ ํ•ด์„๋  ์ˆ˜ ์žˆ๋‹ค๋Š” ๋ฐ ๋™์˜ํ–ˆ์Šต๋‹ˆ๋‹ค(ํŒจํ‚ค์ง€ ์„ค๋ช…์—๋Š” ์ด๊ฒƒ์ด mitmproxy์˜ ์ƒˆ ๋ฒ„์ „์ด๋ฉฐ ํฌํฌ). ์นดํƒˆ๋กœ๊ทธ์—์„œ ํŒจํ‚ค์ง€๋ฅผ ์ œ๊ฑฐํ•œ ํ›„ ๋‹ค์Œ๋‚  ์ƒˆ ํŒจํ‚ค์ง€์ธ mitmproxy-iframe์ด PyPI์— ๊ฒŒ์‹œ๋˜์—ˆ์œผ๋ฉฐ ํ•ด๋‹น ์„ค๋ช…๋„ ๊ณต์‹ ํŒจํ‚ค์ง€์™€ ์™„์ „ํžˆ ์ผ์น˜ํ–ˆ์Šต๋‹ˆ๋‹ค. mitmproxy-iframe ํŒจํ‚ค์ง€๋„ ์ด์ œ PyPI ๋””๋ ‰ํ„ฐ๋ฆฌ์—์„œ ์ œ๊ฑฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€