๋ณธ๋ฌธ์œผ๋กœ ๊ฑด๋„ˆ๋›ฐ๊ธฐ

ยฉ 2026 Molayo

X์š”์•ฝ2026. 06. 15. 11:47

๐ŸšจCloakBrowser์™€ CAPTCHA ๋ณด์•ˆ์ด ์™„์ „ํžˆ ์˜คํ”ˆ ์†Œ์Šค๋กœ ๊ณต๊ฐœ ๋ฐ ํ•ด๋…๋˜์—ˆ์Šต๋‹ˆ๋‹ค! ์›น ์ž๋™ํ™” ๋ฐ ์Šคํฌ๋ž˜ํ•‘์„ ์œ„ํ•œ ์ƒˆ๋กœ์šด ํ‘œ์ค€์ด

์š”์•ฝ

CloakBrowser ํŒ€์ด Chromium ์†Œ์Šค ๋ ˆ๋ฒจ์—์„œ ํŒจ์น˜๋œ ์Šคํ…”์Šค ๋ธŒ๋ผ์šฐ์ €์™€ CAPTCHA ํ•ด๊ฒฐ ๊ธฐ๋Šฅ์„ ์˜คํ”ˆ ์†Œ์Šค๋กœ ๊ณต๊ฐœํ–ˆ์Šต๋‹ˆ๋‹ค. Playwright์™€ ํ˜ธํ™˜๋˜๋ฉฐ, ์‹ค์ œ ์‚ฌ์šฉ์ž์ฒ˜๋Ÿผ ๋™์ž‘ํ•˜์—ฌ ๊ฐ•๋ ฅํ•œ ์›น ํƒ์ง€ ๋ฐ CAPTCHA ๋ณด์•ˆ์„ ์šฐํšŒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•ต์‹ฌ ํฌ์ธํŠธ

  • Chromium ์†Œ์Šค ๋ ˆ๋ฒจ ํŒจ์น˜๋ฅผ ํ†ตํ•œ ์™„๋ฒฝํ•œ ์Šคํ…”์Šค ๊ธฐ๋Šฅ ์ œ๊ณต
  • reCAPTCHA v3 ๋ฐ Cloudflare Turnstile ๋“ฑ ์ฃผ์š” ๋ณด์•ˆ ์šฐํšŒ ์„ฑ๊ณต
  • Playwright๋ฅผ ํ†ตํ•œ ๊ฐ„ํŽธํ•œ ๋“œ๋กญ์ธ ๊ต์ฒด ๋ฐ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
  • ๋งˆ์šฐ์Šค ์›€์ง์ž„, ํƒ€์ดํ•‘ ๋“ฑ ์ธ๊ฐ„์ ์ธ ํ–‰๋™ ํŒจํ„ด(Humanize) ์ง€์›
  • Docker ๋ฐ CDP ์„œ๋ฒ„ ์ง€์›์œผ๋กœ ํ™•์žฅ์„ฑ ํ™•๋ณด

๐ŸšจCloakBrowser์™€ CAPTCHA ๋ณด์•ˆ์ด ์™„์ „ํžˆ ์˜คํ”ˆ ์†Œ์Šค๋กœ ๊ณต๊ฐœ ๋ฐ ํ•ด๋…๋˜์—ˆ์Šต๋‹ˆ๋‹ค! ์›น ์ž๋™ํ™” ๋ฐ ์Šคํฌ๋ž˜ํ•‘์„ ์œ„ํ•œ ์ƒˆ๋กœ์šด ํ‘œ์ค€์ด ์˜ต๋‹ˆ๋‹ค๐Ÿ”๐Ÿค–

์ด ๋‰ด์Šค์—์„œ ์šฐ๋ฆฌ๋Š” ์›น ์Šคํฌ๋ž˜ํ•‘ (web scraping), ์ž๋™ํ™” (automation), ๊ทธ๋ฆฌ๊ณ  ํ—ค๋“œ๋ฆฌ์Šค ๋ธŒ๋ผ์šฐ์ € (headless browser)๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ชจ๋“  ๋ถ„์˜ ์ฃผ์˜๋ฅผ ํ™˜๊ธฐํ•˜๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค...

CloakBrowser ํŒ€์ด ๊ฐ•๋ ฅํ•œ ์Šคํ…”์Šค ๋ธŒ๋ผ์šฐ์ € (stealth browser)์™€ ํ†ตํ•ฉ๋œ CAPTCHA ํ•ด๊ฒฐ์‚ฌ (CAPTCHA solver)๋ฅผ ์˜คํ”ˆ ์†Œ์Šค๋กœ ๊ณต๊ฐœํ–ˆ์Šต๋‹ˆ๋‹ค!

1 - CloakBrowser๋ž€ ๋ฌด์—‡์ธ๊ฐ€?

CloakBrowser๋Š” Chromium์˜ ์†Œ์Šค ์ฝ”๋“œ (C++ ๋ ˆ๋ฒจ)๋ฅผ 58๊ฐœ ์ด์ƒ์˜ ํŒจ์น˜ (patch)๋กœ ์ˆ˜์ •ํ•œ ํŠน์ˆ˜ ์Šคํ…”์Šค ๋ธŒ๋ผ์šฐ์ €์ž…๋‹ˆ๋‹ค. JS ์ธ์ ์…˜ (JS injection)์ด๋‚˜ ๋‹จ์ˆœํ•œ ํ•‘๊ฑฐํ”„๋ฆฐํŠธ ์Šคํ‘ธํ•‘ (fingerprint spoofing) ๋ฐฉ์‹์— ์˜์กดํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋๊นŒ์ง€ "์‹ค์ œ ์‚ฌ์šฉ์ž Chrome"์ฒ˜๋Ÿผ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.

2 - ์ฃผ์š” ํŠน์ง•:

โœ…reCAPTCHA v3 ์ ์ˆ˜: 0.9 (์ธ๊ฐ„ ์ˆ˜์ค€, ์„œ๋ฒ„ ์ธก ๊ฒ€์ฆ ์™„๋ฃŒ)
โœ…Cloudflare Turnstile ์ž๋™ ํ†ต๊ณผ (managed + non-interactive)
โœ…FingerprintJS, BrowserScan, ShieldSquare, https://t.co/POn62n7yr9์™€ ๊ฐ™์€ 30๊ฐœ ์ด์ƒ์˜ ํƒ์ง€ ์‚ฌ์ดํŠธ๋ฅผ ์„ฑ๊ณต์ ์œผ๋กœ ํ†ต๊ณผ
โœ…Playwright๋ฅผ ํ†ตํ•œ ๋“œ๋กญ์ธ ๊ต์ฒด (drop-in replacement) โ€” ์ž„ํฌํŠธ (import)๋งŒ ๋ณ€๊ฒฝํ•˜๋ฉด ์ฝ”๋“œ์˜ ๋‚˜๋จธ์ง€ ๋ถ€๋ถ„์€ ๊ทธ๋Œ€๋กœ ์œ ์ง€๋จ
โœ…Humanize ๋ชจ๋“œ: ํ˜„์‹ค์ ์ธ ๋งˆ์šฐ์Šค ์›€์ง์ž„ (Bรฉzier ๊ณก์„ ), ํƒ€์ดํ•‘ ์†๋„, ์Šคํฌ๋กค ํŒจํ„ด (scroll pattern)
โœ…Proxy + GeoIP ์ง€์› (ํ”„๋ก์‹œ IP์— ๋”ฐ๋ผ ์‹œ๊ฐ„๋Œ€/๋กœ์บ˜ (timezone/locale) ์ž๋™ ์„ค์ •)
โœ…์ง€์†์  ํ”„๋กœํ•„ (Persistent profile) ์ง€์› (์ฟ ํ‚ค (cookies), localStorage, ํ™•์žฅ ํ”„๋กœ๊ทธ๋žจ (extension) ์œ ์ง€)
โœ…Docker ๋ฐ CDP ์„œ๋ฒ„ ์ง€์› (cloakserve๋ฅผ ํ†ตํ•ด ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ•‘๊ฑฐํ”„๋ฆฐํŠธ ๊ด€๋ฆฌ ๊ฐ€๋Šฅ)
โœ…Widevine/DRM ์ง€์› (Linux ํ™˜๊ฒฝ)

3 - ์ž‘๋™ ์›๋ฆฌ?

Chromium 146 (๋ฐ ์ผ๋ถ€ ํ”Œ๋žซํผ์—์„œ๋Š” 145) ์†Œ์Šค์— ์ง์ ‘ ํŒจ์น˜ (patch)๊ฐ€ ์ ์šฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Canvas, WebGL, audio, font, GPU, WebRTC, CDP ์‹ ํ˜ธ, navigator.webdriver, TLS ํ•‘๊ฑฐํ”„๋ฆฐํŠธ (TLS fingerprint, JA3/JA4) ๋“ฑ ๋ชจ๋“  ์š”์†Œ๊ฐ€ ์†Œ์Šค ๋ ˆ๋ฒจ์—์„œ ๋ณ€๊ฒฝ๋ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ํƒ์ง€ ๋„๊ตฌ๋“ค์€ ์ด๋ฅผ "์‹ค์ œ ๋ธŒ๋ผ์šฐ์ €"๋กœ ์ธ์‹ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

4 - CAPTCHA ํ•ด๊ฒฐ์‚ฌ (ํ†ตํ•ฉ ๊ณ„์ธต)

CloakBrowser + ํด๋ฐฑ (fallback) ์‹œ์Šคํ…œ:

๊ณ„์ธต 1 (๋ฌด๋ฃŒ): CloakBrowser๋ฅผ ํ†ตํ•ด CAPTCHA์˜ 80% ์ด์ƒ์„ ์™„์ „ํžˆ ์ฐจ๋‹จ
๊ณ„์ธต 2: Cloudflare Turnstile์„ ์œ„ํ•œ ๋ฌด๋ฃŒ ์ž๋™ ํด๋ฆญ
๊ณ„์ธต 3: ๋‚˜๋จธ์ง€ 20%๋ฅผ ์œ„ํ•œ 2Captcha ๋ฐ CapSolver ํ†ตํ•ฉ (reCAPTCHA v2/v3/Enterprise, hCaptcha, FunCaptcha, GeeTest, KeyCaptcha, Amazon WAF, DataDome, Akamai, Imperva ๋“ฑ 30๊ฐœ ์ด์ƒ์˜ CAPTCHA ์œ ํ˜• ์ง€์›)
์ด ๊ตฌ์กฐ ๋•๋ถ„์— ๋น„์šฉ์€ ๋‚ฎ๊ฒŒ ์œ ์ง€ํ•˜๋ฉด์„œ ์„ฑ๊ณต๋ฅ ์€ ๋งค์šฐ ๋†’์Šต๋‹ˆ๋‹ค.

5 - ๋ฒค์น˜๋งˆํฌ (Benchmark) ๋ฐ ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ

โœ…reCAPTCHA v3:
Stock Playwright โ†’ 0.1 | CloakBrowser โ†’ 0.9

โœ…Cloudflare Turnstile:
Stock โ†’ FAIL | Cloak โ†’ PASS

14๊ฐœ ์ด์ƒ์˜ ์ฃผ์š” ํƒ์ง€ ํ…Œ์ŠคํŠธ๋ฅผ ๋ชจ๋‘ ํ†ต๊ณผ
์‹ค์ œ ์‚ฌ์ดํŠธ(Google, LinkedIn, Discord ๋“ฑ)์—์„œ ์„ฑ๊ณต์ ์ธ CAPTCHA ์šฐํšŒ(bypass)๊ฐ€ ๋ณด๊ณ ๋จ

6 - ์„ค์น˜ ๋ฐ ์‚ฌ์šฉ (๋งค์šฐ ๊ฐ„๋‹จํ•จ)

Python๊ณผ Playwright ์‚ฌ์šฉ:
pip install cloakbrowser

from cloakbrowser import launch
browser = launch(headless=False, humanize=True, proxy="http://user:pass@ip:port", geoip=True)
page = browser.new_page()
page.goto("https://t.co/dwZ0F1e1mx")
# ... ์ž‘์—… ์ˆ˜ํ–‰

JavaScript/Node.js ๋ฐ Docker ์ง€์›๋„ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. ๊ธฐ์กด Playwright ํ”„๋กœ์ ํŠธ๋ฅผ ๋‹จ ํ•œ ์ค„์˜ ์ฝ”๋“œ๋กœ CloakBrowser๋กœ ์ „ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

7 - ์™œ ์ด๋ ‡๊ฒŒ ์ค‘์š”ํ•œ๊ฐ€?

์‹œ์ค‘์— ๋‚˜์™€ ์žˆ๋Š” ๋Œ€๋ถ€๋ถ„์˜ ์Šคํ…”์Šค ๋ธŒ๋ผ์šฐ์ € (Undetected-Chromedriver, puppeteer-extra ๋“ฑ)๋Š” JS (JavaScript) ๋ ˆ๋ฒจ์—์„œ ์ž‘๋™ํ•˜๋ฉฐ, Chromium ์—…๋ฐ์ดํŠธ์— ์˜ํ•ด ์‰ฝ๊ฒŒ ํƒ์ง€๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด CloakBrowser๋Š” ์†Œ์Šค ์ฝ”๋“œ ๋ ˆ๋ฒจ์—์„œ ์ˆ˜์ •(patch)์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ›จ์”ฌ ๋” ๊ฐ•๋ ฅํ•œ ๋‚ด๊ตฌ์„ฑ์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค.

8 - ์˜คํ”ˆ ์†Œ์Šค(Open Source)๋กœ์„œ์˜ ์žฅ์ :

โœ… ๋ฌด๋ฃŒ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ
โœ… ์ž์‹ ๋งŒ์˜ ํŒจ์น˜(patch)๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Œ
โœ… ์ปค๋ฎค๋‹ˆํ‹ฐ ๊ธฐ์—ฌ๋ฅผ ํ†ตํ•ด ์ง€์†์ ์œผ๋กœ ๋ฐœ์ „ํ•จ
โœ… ์ƒ์šฉ ์†”๋ฃจ์…˜(์›” ์ˆ˜๋ฐฑ ๋‹ฌ๋Ÿฌ ๋น„์šฉ)์— ๋Œ€ํ•œ ๋งค์šฐ โœ…๊ฒฝ์ œ์ ์ธ ๋Œ€์•ˆ

๋ฆฌํฌ์ง€ํ† ๋ฆฌ(Repo)๋Š” ํ™œ๋ฐœํžˆ ๊ฐœ๋ฐœ๋˜๊ณ  ์žˆ์œผ๋ฉฐ, ์˜ˆ์ œ๋„ ํ’๋ถ€ํ•ฉ๋‹ˆ๋‹ค (LangChain, Crawl4AI, Scrapling ํ†ตํ•ฉ ํฌํ•จ). ๋ฐ”์ด๋„ˆ๋ฆฌ(Binary)๋Š” SHA-256 ๊ฒ€์ฆ์„ ๊ฑฐ์น˜๋ฉฐ Sigstore๋กœ ์„œ๋ช…๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Linux, macOS (Apple Silicon ํฌํ•จ) ๋ฐ Windows๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

์›น ์Šคํฌ๋ž˜ํ•‘ (Web scraping), ์ž๋™ํ™” (automation), ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘ (data collection), ํ…Œ์ŠคํŠธ ์ž๋™ํ™” (test automation) ๋˜๋Š” AI ์—์ด์ „ํŠธ (AI agents)๋ฅผ ์œ„ํ•ด ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ชจ๋“  ์ด๋“ค์—๊ฒŒ ์ง„์ •ํ•œ ๊ฒŒ์ž„ ์ฒด์ธ์ € (game-changer)์ž…๋‹ˆ๋‹ค. ํŠนํžˆ ๋Œ€๊ทœ๋ชจ์ด๋ฉฐ ํƒ์ง€ ์œ„ํ—˜์ด ๋†’์€ ํ”„๋กœ์ ํŠธ์—์„œ ์ฐจ์ด๋ฅผ ๋งŒ๋“ค์–ด๋ƒ…๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ์ข…๋ฅ˜์˜ ์˜คํ”ˆ ์†Œ์Šค ์Šคํ…”์Šค (stealth) ๋„๊ตฌ๋“ค์ด ์›น ์Šคํฌ๋ž˜ํ•‘ (web scraping) ์„ธ๊ณ„๋ฅผ ์–ด๋–ป๊ฒŒ ๋ณ€ํ™”์‹œํ‚ฌ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์‹œ๋‚˜์š”? CloakBrowser๋ฅผ ์‚ฌ์šฉํ•ด ๋ณด์…จ๋‚˜์š”? ์–ด๋–ค ์ข…๋ฅ˜์˜ CAPTCHA๋ฅผ ๋งˆ์ฃผํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ์„ฑ๊ณต๋ฅ ์€ ์–ด๋А ์ •๋„์ธ๊ฐ€์š”? ๋Œ“๊ธ€๋กœ ์—ฌ๋Ÿฌ๋ถ„์˜ ๊ฒฝํ—˜์„ ๊ณต์œ ํ•ด ์ฃผ์„ธ์š”, ํ•จ๊ป˜ ํ† ๋ก ํ•ด ๋ด…์‹œ๋‹ค! ๐Ÿ”๐Ÿค–

AI ์ž๋™ ์ƒ์„ฑ ์ฝ˜ํ…์ธ 

๋ณธ ์ฝ˜ํ…์ธ ๋Š” X @kaan_alper (์ž๋™ ๋ฐœ๊ฒฌ)์˜ ์›๋ฌธ์„ AI๊ฐ€ ์ž๋™์œผ๋กœ ์š”์•ฝยท๋ฒˆ์—ญยท๋ถ„์„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์› ์ €์ž‘๊ถŒ์€ ์›์ €์ž‘์ž์—๊ฒŒ ์žˆ์œผ๋ฉฐ, ์ •ํ™•ํ•œ ๋‚ด์šฉ์€ ๋ฐ˜๋“œ์‹œ ์›๋ฌธ์„ ํ™•์ธํ•ด ์ฃผ์„ธ์š”.

์›๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
0

๋Œ“๊ธ€

0