์—…๋ฐ์ดํŠธ๋กœ ๋Œ์•„๊ฐ€๊ธฐ
New releaseAug 21, 2026

camoufox v152.0.4-beta.29

๐ŸฆŠ ์•ˆํ‹ฐ ํƒ์ง€ ๋ธŒ๋ผ์šฐ์ €

๊ณต์œ 

Camoufox

Camoufox๋Š” ์›น ์Šคํฌ๋ž˜ํ•‘ ๋ฐ AI ์—์ด์ „ํŠธ๋ฅผ ์œ„ํ•ด ๊ตฌ์ถ•๋œ ์˜คํ”ˆ ์†Œ์Šค ์•ˆํ‹ฐ ํƒ์ง€ ๋ธŒ๋ผ์šฐ์ €์ž…๋‹ˆ๋‹ค. ๐ŸฆŠ

daijro%2Fcamoufox | Trendshift
Total Downloads Monthly Downloads Weekly Downloads

โš ๏ธ ์ด ํ”„๋กœ์ ํŠธ๋Š” ๊ฐœ๋ฐœ ์ค‘์ž…๋‹ˆ๋‹ค. ์•ˆ์ •์ ์ธ ํ”„๋กœ๋•์…˜ ์‚ฌ์šฉ์—๋Š” ์ ํ•ฉํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. โš ๏ธ


[!NOTE] ๋ชจ๋“  ์ตœ์‹  ๋ฌธ์„œ๋Š” camoufox.com์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

[!NOTE] ๋ธŒ๋ผ์šฐ์ € ๊ฐœ๋ฐœ์€ github.com/CloverLabsAI/camoufox ๋ฐ github.com/VulpineOS/VulpineOS์—์„œ ํ™œ๋ฐœํžˆ ์ง„ํ–‰ ์ค‘์ž…๋‹ˆ๋‹ค.
์ด ์ €์žฅ์†Œ๋Š” ์ฒดํฌํฌ์ธํŠธ ๋ฆด๋ฆฌ์Šค๋ฅผ ๋ณ‘ํ•ฉํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋ฉฐ ๋งˆ์Šคํ„ฐ ๋ณต์‚ฌ๋ณธ์œผ๋กœ ์ทจ๊ธ‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.


์Šคํฐ์„œ

๋ชจ๋‘ ๋ณด๊ธฐ/์ ‘๊ธฐ

Scrapfly.io Scrapfly๋Š” ์‹ค์ œ ๋ธŒ๋ผ์šฐ์ € ๋ Œ๋”๋ง, ๋กœํ…Œ์ดํŒ… ํ”„๋ก์‹œ, ํ•‘๊ฑฐํ”„๋ฆฐํŠธ(TLS, HTTP, ๋ธŒ๋ผ์šฐ์ €)๋ฅผ ๊ด€๋ฆฌํ•˜์—ฌ ๋ชจ๋“  ์ฃผ์š” ์•ˆํ‹ฐ๋ด‡์„ ์šฐํšŒํ•จ์œผ๋กœ์จ ์Šคํฌ๋ž˜ํ•‘ ๊ณผ์ •์„ ๋‹จ์ˆœํ™”ํ•˜๋Š” ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ๊ธ‰ ์›น ์Šคํฌ๋ž˜ํ•‘ API ์†”๋ฃจ์…˜์ž…๋‹ˆ๋‹ค. Scrapfly๋Š” ๋˜ํ•œ ๋ถ„์„ ๋Œ€์‹œ๋ณด๋“œ์™€ ์„ฑ๊ณต๋ฅ /์ฐจ๋‹จ๋ฅ ์„ ์ƒ์„ธํžˆ ์ธก์ •ํ•˜์—ฌ ๊ด€์ฐฐ ๊ฐ€๋Šฅ์„ฑ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
cloverlabs.ai Clover Labs๋Š” ์„ฑ์žฅ๊ณผ ์œ ํ†ต์„ ์œ„ํ•œ AI ์—์ด์ „ํŠธ๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ํ† ๋ก ํ†  ๊ธฐ๋ฐ˜์˜ ๋ฒค์ฒ˜ ์ŠคํŠœ๋””์˜ค์ž…๋‹ˆ๋‹ค.
color horizontal SerpApi, ์›น ๊ฒ€์ƒ‰ API๋ฅผ ํ†ตํ•ด ๊ฐ„๋‹จํ•œ API๋กœ Google ๋ฐ ๊ธฐํƒ€ ๊ฒ€์ƒ‰ ์—”์ง„์„ ์Šคํฌ๋ž˜ํ•‘ํ•˜์„ธ์š”.
color horizontal Talordata๋Š” Google ๋ฐ ๊ธฐํƒ€ ๊ฒ€์ƒ‰ ์—”์ง„์„ ๋งค์šฐ ์ €๋ ดํ•œ ๋น„์šฉ์œผ๋กœ ์Šคํฌ๋ž˜ํ•‘ํ•˜๋Š” ๊ฐ„๋‹จํ•œ ์›น ๊ฒ€์ƒ‰ API์ž…๋‹ˆ๋‹ค. ๊ฐ€์ž… ์‹œ 1,000ํšŒ ๋ฌด๋ฃŒ ์š”์ฒญ์ด ์ œ๊ณต๋˜๋ฉฐ, ์„ฑ๊ณต์ ์ธ ์‘๋‹ต 1,000ํšŒ๋‹น $0.25๋งŒ ์ง€๋ถˆํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์‹คํŒจํ•œ ์Šคํฌ๋ž˜ํ•‘์— ๋Œ€ํ•œ ์š”๊ธˆ์€ ์—†์Šต๋‹ˆ๋‹ค.
ํ• ์ธ ์ฝ”๋“œ CAMOUFOX๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ 10% ํ• ์ธ๋œ ๊ฐ€๊ฒฉ์œผ๋กœ Residential ํ”„๋ก์‹œ๋ฅผ ์ด์šฉํ•˜์„ธ์š”. [Discord]
color horizontal ์•ˆํ‹ฐ๋ด‡์„ ๋šซ๊ณ  ์‚ด์•„๋‚จ๋Š” ์›น ๋ฐ์ดํ„ฐ.
Crawlbase๋Š” ๊ฐœ๋ฐœ์ž์™€ AI ํŒ€์—๊ฒŒ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค: 99% ์„ฑ๊ณต๋ฅ ์˜ ํฌ๋กค๋Ÿฌ, ํฌ๋กค๋ง API, ์Šค๋งˆํŠธ AI ํ”„๋ก์‹œ, ์›น MCP ์„œ๋ฒ„๋ฅผ ํ†ตํ•ด ์Šคํฌ๋ž˜ํผ์™€ ์—์ด์ „ํŠธ๊ฐ€ ๋ฉˆ์ถ”์ง€ ์•Š๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ๋ถ„์€ ๊ตฌ์ถ•๋งŒ ํ•˜๋ฉด ๋˜๊ณ , ์ธํ”„๋ผ๋Š” ์ €ํฌ๊ฐ€ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

์ฝ”๋“œ CAMOUFOX๋กœ ์ฒซ 3๊ฐœ์›” 15% ํ• ์ธ โ†’ crawlbase.com

scrappey Scrappey๋Š” ์„ฑ๊ณตํ•œ ์Šคํฌ๋ž˜ํ•‘์— ๋Œ€ํ•ด์„œ๋งŒ ์š”๊ธˆ์„ ๋ถ€๊ณผํ•˜๋Š” ์›น ์Šคํฌ๋ž˜ํ•‘ API๋กœ, ๊ตฌ๋… ์—†์ด ์‚ฌ์šฉํ•œ ๋งŒํผ ์ง€๋ถˆํ•ฉ๋‹ˆ๋‹ค. ๋ณต์žกํ•œ ์‚ฌ์ดํŠธ๋ฅผ ์Šคํฌ๋ž˜ํ•‘ํ•˜์„ธ์š”. Residential ํ”„๋ก์‹œ ํฌํ•จ, ์ˆจ๊ฒจ์ง„ ํ”„๋ก์‹œ ์š”๊ธˆ์ด๋‚˜ ๋งŒ๋ฃŒ๋˜๋Š” ์ž”์•ก ์—†์Œ. ์ง์ ‘ HTTP, ์ „์ฒด ๋ธŒ๋ผ์šฐ์ € ๋ Œ๋”๋ง, JavaScript-heavy ํŽ˜์ด์ง€, ์Šคํฌ๋ฆฐ์ƒท, ์„ธ์…˜, 30๊ฐœ ์ด์ƒ์˜ ๋ธŒ๋ผ์šฐ์ € ์•ก์…˜ ๋ฐ ํ•œ ๋ฒˆ์— 200๊ฐœ ์ด์ƒ์˜ ๋™์‹œ ์„ธ์…˜์„ ์œ„ํ•œ ํ•˜๋‚˜์˜ API โ€” 1000๋ช… ์ด์ƒ์˜ ๊ฐœ๋ฐœ์ž์™€ AI ์—์ด์ „ํŠธ๊ฐ€ ์‹ ๋ขฐํ•ฉ๋‹ˆ๋‹ค. ์ฝ”๋“œ CAMOUFOX๋กœ 10% ํ• ์ธ์„ ๋ฐ›์œผ์„ธ์š”.

ํ”„๋ก์‹œ ์ œ๊ณต์—…์ฒด

Camoufox๋Š” ๋กœํ…Œ์ดํŒ… ํ”„๋ก์‹œ(๊ฐ€๊ธ‰์  residential IP)์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ์ œ๊ณต์—…์ฒด๋ฅผ ํ™•์ธํ•ด๋ณด์„ธ์š”:

proxyempire ๐Ÿš€ Camoufox ร— ProxyEmpire
Camoufox๋ฅผ ์‹คํ–‰ ์ค‘์ด์‹ ๊ฐ€์š”? ํ”„๋ก์‹œ ๊ณ„์ธต์ด ํ™•์žฅ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค โ€” ์ฐจ๋‹จ๋˜๊ฑฐ๋‚˜ ์•„๋‹ˆ๊ฑฐ๋‚˜.
ProxyEmpire๋Š” ๋‹ค์Œ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค:
โ€ข ๐ŸŒ 30M+ Residential IP (170๊ฐœ๊ตญ ์ด์ƒ)
โ€ข ๐Ÿ“ฑ 4G/5G ๋ชจ๋ฐ”์ผ ํ”„๋ก์‹œ
โ€ข ๐Ÿ”„ ๋กœํ…Œ์ดํŒ… & ์Šคํ‹ฐํ‚ค ์„ธ์…˜
โ€ข โšก ๋ฌด์ œํ•œ ๋™์‹œ ์„ธ์…˜
โ€ข ๐ŸŽฏ ์ •ํ™•ํ•œ ์ง€๋ฆฌ์  ํƒ€๊ฒŸํŒ…
โ€ข HTTP, HTTPS & SOCKS5 ์ง€์›
์Šคํฌ๋ž˜ํ•‘, ์ž๋™ํ™” ๋ฐ ๊ณ ๋„์˜ ์€๋ฐ€ํ•œ ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ์œ„ํ•ด ๊ตฌ์ถ•๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
๐Ÿ”ฅ ํŠน๋ณ„ ์ œ๊ณต - ์ฝ”๋“œ Camoufox30 ์‚ฌ์šฉ
30% ๋ฐ˜๋ณต ํ• ์ธ์„ ๋ฐ›์œผ์„ธ์š” (์ฒซ ๋‹ฌ๋งŒ์ด ์•„๋‹™๋‹ˆ๋‹ค). ํ”„๋ก์‹œ๋ฅผ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๊ณ  ์ฐจ๋‹จ์„ ์ค„์ด๋ฉฐ ์ œ๋Œ€๋กœ ํ™•์žฅํ•˜์„ธ์š”.
birdproxies ์•ˆ๋…•ํ•˜์„ธ์š”, ์ €ํฌ๋Š” ํ”„๋ก์‹œ๊ฐ€ ๋ณต์žกํ•˜๊ฑฐ๋‚˜ ๋น„์‹ธ๋ฉด ์•ˆ ๋œ๋‹ค๋Š” ์ƒ๊ฐ์œผ๋กœ BirdProxies๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. 195๊ฐœ ์ด์ƒ์˜ ์œ„์น˜์—์„œ ๋น ๋ฅธ residential ๋ฐ ISP ํ”„๋ก์‹œ, ํ•ฉ๋ฆฌ์ ์ธ ๊ฐ€๊ฒฉ, ์‹ค์ œ ์ง€์›์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
๋žœ๋”ฉ ํŽ˜์ด์ง€์—์„œ FlappyBird ๊ฒŒ์ž„์„ ํ”Œ๋ ˆ์ดํ•˜๊ณ  ๋ฌด๋ฃŒ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„๋ณด์„ธ์š”!
์ง€๊ธˆ ์‚ฌ์šฉํ•ด๋ณด๊ธฐ | Discord
rapidproxy RapidProxy - ํ”„๋ฆฌ๋ฏธ์—„ ํ”„๋ก์‹œ๋กœ ๋ฐ์ดํ„ฐ์— ํž˜์„ ์‹ค์–ด์ฃผ์„ธ์š”.
๐ŸŽ ํ”„๋ก์‹œ ๋ฌด๋ฃŒ ์ฒดํ—˜ + ์ฝ”๋“œ RAPID10 ์‚ฌ์šฉ ์‹œ 10% ํ• ์ธ
์™œ RapidProxy์ธ๊ฐ€?
โ€ข ๐ŸŒ 200๊ฐœ ์ด์ƒ์˜ ๊ตญ๊ฐ€ ๋ฐ ์ง€์—ญ์—์„œ 90M+ IP
โ€ข โ™พ๏ธ ํŠธ๋ž˜ํ”ฝ ๋งŒ๋ฃŒ ์—†์Œ โ€” ์–ธ์ œ๋“ ์ง€ ์‚ฌ์šฉ, ๋ถ€๋‹ด ์—†์Œ
โ€ข ๐Ÿ”ฅ ์ตœ๋Œ€ ์„ฑ๋Šฅ์„ ์œ„ํ•œ ๋ฌด์ œํ•œ ๋™์‹œ์„ฑ
โ€ข ๐Ÿ’ฐ GB๋‹น $0.65๋ถ€ํ„ฐ ์‹œ์ž‘ โ€” ํ™•์žฅ์— ์ตœ์ ํ™”
โ€ข ๐Ÿ“ ์ •ํ™•ํ•œ ์ง€๋ฆฌ์  ์ ‘๊ทผ์„ ์œ„ํ•œ ๋„์‹œ ์ˆ˜์ค€ ํƒ€๊ฒŸํŒ…
โ€ข ๐Ÿ”„ ํ•„์š”์— ๋งž์ถ˜ ์œ ์—ฐํ•œ ์„ธ์…˜ ์ œ์–ด
์ง€๊ธˆ ๋ฌด๋ฃŒ ์ฒดํ—˜ํŒ์„ ์‹œ์ž‘ํ•˜๊ณ  RapidProxy์˜ ๋น ๋ฅด๊ณ  ์•ˆ์ •์ ์ด๋ฉฐ ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ํ”„๋ก์‹œ ์„ฑ๋Šฅ์„ ๊ฒฝํ—˜ํ•ด๋ณด์„ธ์š”.
swiftproxy Swiftproxy - ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘์„ ์œ„ํ•œ ๊ณ ์„ฑ๋Šฅ Residential ํ”„๋ก์‹œ
์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ์•ˆํ‹ฐ ํƒ์ง€ ํ”„๋ก์‹œ ์ธํ”„๋ผ๊ฐ€ ํ•„์š”ํ•œ ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•ด ๊ตฌ์ถ•๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Swiftproxy๋Š” ๋Œ€๊ทœ๋ชจ ์Šคํฌ๋ž˜ํ•‘ ๋ฐ ์ž๋™ํ™”๋ฅผ ์œ„ํ•œ ์•ˆ์ •์ ์ธ ์—ฐ๊ฒฐ, ๋†’์€ ์„ฑ๊ณต๋ฅ , ์œ ์—ฐํ•œ ์ œ์–ด๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
โ€ข ๐ŸŒ ์œค๋ฆฌ์ ์œผ๋กœ ์†Œ์‹ฑ๋œ residential IP๋ฅผ ํ†ตํ•œ 195๊ฐœ ์ด์ƒ์˜ ์œ„์น˜
โ€ข ๐Ÿ”„ ์ •ํ™•ํ•œ ์ง€๋ฆฌ์  ํƒ€๊ฒŸํŒ…์ด ๊ฐ€๋Šฅํ•œ ๋กœํ…Œ์ดํŒ… ๋ฐ ์Šคํ‹ฐํ‚ค ์„ธ์…˜
โ€ข โšก ์•ˆํ‹ฐ ์ฐจ๋‹จ ๋ฐ ๋†’์€ ์„ฑ๊ณต๋ฅ ์— ์ตœ์ ํ™”
โ€ข ๐Ÿ”Œ HTTP / HTTPS / SOCKS5 ์ง€์›
โ€ข ๐Ÿงช ํ…Œ์ŠคํŠธ์šฉ ๋ฌด๋ฃŒ 500MB ํŠธ๋ผ์ด์–ผ
โ€ข ๐Ÿ’ธ Camoufox ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•œ ํŠน๋ณ„ ํ• ์ธ ์ฝ”๋“œ: PROXY90 - 10%
์ตœ์  ๋Œ€์ƒ: ์›น ์Šคํฌ๋ž˜ํ•‘, ์ž๋™ํ™”, ๋‹ค์ค‘ ๊ณ„์ • ๊ด€๋ฆฌ, ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ ์ถ”์ถœ
mangoproxy MangoProxy๋Š” ์•ˆ์ •์„ฑ, ์†๋„ ๋ฐ ์ต๋ช…์„ฑ์ด ์ค‘์š”ํ•œ ์ „๋ฌธ ์ž‘์—…์„ ์œ„ํ•ด ์„ค๊ณ„๋œ Residential, ISP, ๋ชจ๋ฐ”์ผ ๋ฐ ๋ฐ์ดํ„ฐ์„ผํ„ฐ ํ”„๋ก์‹œ ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค.
ISP ์ •์  ํ”„๋ก์‹œ 8% ํ• ์ธ์„ ์œ„ํ•ด ์ฝ”๋“œ DAIJRO๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”.
9proxy 9Proxy๋Š” ๋‹จ $0.018/IP ๋˜๋Š” $0.68/GB๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š” residential ํ”„๋ก์‹œ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. 90๊ฐœ๊ตญ ์ด์ƒ์—์„œ 2,000๋งŒ ๊ฐœ ์ด์ƒ์˜ IP. ์Šคํ‹ฐํ‚ค ๋˜๋Š” ๋กœํ…Œ์ดํŒ… ์„ธ์…˜, ๋ฐ์Šคํฌํ†ฑ ๋˜๋Š” ๋ชจ๋ฐ”์ผ ์•ฑ์—์„œ ๊ด€๋ฆฌ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
nodemaven NodeMaven: ์‹œ์žฅ์—์„œ ๊ฐ€์žฅ ๋†’์€ ํ’ˆ์งˆ์˜ IP๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ฐ€์žฅ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ํ”„๋ก์‹œ ์ œ๊ณต์—…์ฒด.
์ž๋™ํ™”, ์›น ์Šคํฌ๋ž˜ํ•‘, SEO ์—ฐ๊ตฌ ๋ฐ ์†Œ์…œ ๋ฏธ๋””์–ด ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ ์ตœ๊ณ ์˜ ์†”๋ฃจ์…˜.
NodeMaven์ด ์ œ๊ณตํ•˜๋Š” ๊ฒƒ:
โ€ข ์ตœ๋Œ€ 7์ผ๊ฐ„ ์ง€์†๋˜๋Š” ์Šคํ‹ฐํ‚ค ์„ธ์…˜
โ€ข 99.9% ๊ฐ€๋™ ์‹œ๊ฐ„
โ€ข IP ํ•„ํ„ฐ๋ง: ๋ชจ๋“  ํ”„๋ก์‹œ์˜ ์‚ฌ๊ธฐ ์ ์ˆ˜ <97%
โ€ข KYC ๋ถˆํ•„์š”
โ€ข ํŠธ๋ž˜ํ”ฝ ์บ์‹œ๋ฐฑ โ€” GB๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์ตœ๋Œ€ 10% ๋Œ๋ ค๋ฐ›๊ธฐ
ํŠน๋ณ„ ์ œ๊ณต: ์ฝ”๋“œ CAMOUFOX35๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ”„๋ก์‹œ 35% ํ• ์ธ์„ ๋ฐ›์œผ์„ธ์š”.
proxidize Proxidize | Camoufox๋ฅผ ์œ„ํ•œ ๋ชจ๋ฐ”์ผ ๋ฐ Residential ํ”„๋ก์‹œ
Camoufox๋ฅผ ๊ทœ๋ชจ์— ๋งž๊ฒŒ ์‹คํ–‰ ์ค‘์ด์‹ ๊ฐ€์š”? ๋ธŒ๋ผ์šฐ์ € ์„ค์ •์€ ์ ˆ๋ฐ˜์— ๋ถˆ๊ณผํ•ฉ๋‹ˆ๋‹ค. ํ”„๋ก์‹œ ๊ณ„์ธต๋„ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.
Proxidize๋Š” ์Šคํฌ๋ž˜ํ•‘, ๋ธŒ๋ผ์šฐ์ € ์ž๋™ํ™”, SEO ๋ชจ๋‹ˆํ„ฐ๋ง, AI ์—์ด์ „ํŠธ ๋ฐ ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘ ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ์œ„ํ•ด ๊ตฌ์ถ•๋œ ๋ชจ๋ฐ”์ผ ๋ฐ residential ํ”„๋ก์‹œ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
์™œ Proxidize์ธ๊ฐ€?
โ€ข ์‹ค์ œ 4G ๋ฐ 5G ๋ชจ๋ฐ”์ผ ํ”„๋ก์‹œ
โ€ข 195๊ฐœ๊ตญ ์ด์ƒ์˜ Residential ํ”„๋ก์‹œ
โ€ข ๋กœํ…Œ์ดํŒ… ๋ฐ ์Šคํ‹ฐํ‚ค ์„ธ์…˜
โ€ข ๋„์‹œ ์ˆ˜์ค€ ๋ฐ ํ†ต์‹ ์‚ฌ ํƒ€๊ฒŸํŒ…
โ€ข ๋ฌด์ œํ•œ ๋™์‹œ์„ฑ
โ€ข HTTP(S), SOCKS5 ๋ฐ UDP over SOCKS ์ง€์›
โ€ข ํ•˜๋“œ์›จ์–ด๋‚˜ DIY ์„ค์ • ๋ถˆํ•„์š”
์žฅ์น˜, ์„œ๋ฒ„ ๋˜๋Š” ํ”„๋ก์‹œ ๋กœํ…Œ์ด์…˜์„ ์ง์ ‘ ๊ด€๋ฆฌํ•˜์ง€ ์•Š๊ณ ๋„ ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ํ”„๋ก์‹œ ์ธํ”„๋ผ๊ฐ€ ํ•„์š”ํ•œ ํŒ€์„ ์œ„ํ•ด ๊ตฌ์ถ•๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
Camoufox ์‚ฌ์šฉ์ž ํŠน๋ณ„ ์ œ๊ณต: ์ฝ”๋“œ CAMOUFOX20์„ ์‚ฌ์šฉํ•˜์—ฌ 20% ํ• ์ธ์„ ๋ฐ›์œผ์„ธ์š”.
์ง€๊ธˆ ์‹œ์ž‘: https://proxidize.com

์†Œ๊ฐœ

Camoufox๋Š” ์›น ์Šคํฌ๋ž˜ํ•‘ ๋ฐ AI ์—์ด์ „ํŠธ๋ฅผ ์œ„ํ•ด ์„ค๊ณ„๋œ Firefox ํฌํฌ์ž…๋‹ˆ๋‹ค. ํ—ค๋“œ๋ฆฌ์Šค์ด๋ฉฐ, ํƒ์ง€ ๋ถˆ๊ฐ€๋Šฅํ•˜๊ณ , ๋Œ€๊ทœ๋ชจ๋กœ ์‹คํ–‰๋˜๋„๋ก ์ตœ์ ํ™”๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์‹คํ–‰๋  ๋•Œ๋งˆ๋‹ค ์‹ค์ œ ๋””๋ฐ”์ด์Šค ๋ถ„ํฌ์—์„œ ์ถ”์ถœ๋œ ์ƒˆ๋กœ์šด ์‹ ์›์„ ์–ป์–ด ์ผ๋ฐ˜ ํŠธ๋ž˜ํ”ฝ์— ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์„ž์—ฌ ๋ˆˆ์— ๋„์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ฃผ์š” ํŠน์ง•

  • AI ์—์ด์ „ํŠธ์šฉ์œผ๋กœ ์ œ์ž‘ ๐Ÿค–
    • ์ตœ์†Œํ™” ๋ฐ ๊ฒฝ๋Ÿ‰ํ™”๋œ Firefox โ€” ๋น ๋ฅธ ์‹คํ–‰, ์ €๋ ดํ•œ ์šด์˜ ๋น„์šฉ
    • Python ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ†ตํ•œ ๋“œ๋กญ์ธ Playwright ํ˜ธํ™˜์„ฑ
    • ์•ˆํ‹ฐ๋ด‡ ์‹œ์Šคํ…œ์— ๋ณด์ด์ง€ ์•Š์•„ ๋กœ์ปฌ ๋˜๋Š” ํด๋ผ์šฐ๋“œ์—์„œ ์—์ด์ „ํŠธ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ํ”Œ๋ž˜๊ทธ ์—†์ด ์‹คํ–‰ ๊ฐ€๋Šฅ
  • ์„ค๊ณ„์ƒ ํƒ์ง€ ๋ถˆ๊ฐ€๋Šฅ ๐ŸŽญ
    • ํŽ˜์ด์ง€ ์ž๋™ํ™”๊ฐ€ JavaScript ๊ฒ€์‚ฌ์—์„œ ์ˆจ๊ฒจ์ง‘๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ stealth ํŽ˜์ด์ง€๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.
  • ํ•‘๊ฑฐํ”„๋ฆฐํŠธ ์ฃผ์ž… ๋ฐ ๋กœํ…Œ์ด์…˜ (JavaScript ์ฃผ์ž… ์—†์ด!)
    • ๋ชจ๋“  navigator ์†์„ฑ (๋””๋ฐ”์ด์Šค, OS, ํ•˜๋“œ์›จ์–ด, ๋ธŒ๋ผ์šฐ์ € ๋“ฑ) โœ…
    • ํ™”๋ฉด ํฌ๊ธฐ, ํ•ด์ƒ๋„, ์ฐฝ ๋ฐ ๋ทฐํฌํŠธ ์†์„ฑ โœ…
    • ์œ„์น˜ ์ •๋ณด, ์‹œ๊ฐ„๋Œ€, ๋กœ์ผ€์ผ ๋ฐ Intl ์Šคํ‘ธํ•‘ โœ…
    • WebRTC IP ์Šคํ‘ธํ•‘ (ํ”„๋กœํ† ์ฝœ ์ˆ˜์ค€) โœ…
    • ์Œ์„ฑ, ์Œ์„ฑ ์žฌ์ƒ ์†๋„ ๋“ฑ โœ…
    • ๊ทธ ์™ธ์—๋„ ๋งŽ์Šต๋‹ˆ๋‹ค!
  • ๊ทธ๋ž˜ํ”ฝ ํ•‘๊ฑฐํ”„๋ฆฐํŒ… ๋ฐฉ์ง€
    • WebGL ๋งค๊ฐœ๋ณ€์ˆ˜, ์ง€์›๋˜๋Š” ํ™•์žฅ, ์ปจํ…์ŠคํŠธ ์†์„ฑ ๋ฐ ์…ฐ์ด๋” ์ •๋ฐ€๋„ ํ˜•์‹ โœ…
    • ๊ธ€๊ผด ์Šคํ‘ธํ•‘ ๋ฐ ํ•‘๊ฑฐํ”„๋ฆฐํŒ… ๋ฐฉ์ง€ โœ…
  • ์ž๋™ํ™”์— ์ตœ์ ํ™”
    • ์‚ฌ๋žŒ๊ณผ ์œ ์‚ฌํ•œ ๋งˆ์šฐ์Šค ์›€์ง์ž„ ๐Ÿ–ฑ๏ธ
    • ๊ด‘๊ณ  ์ฐจ๋‹จ ๋ฐ ์šฐํšŒ ๐Ÿ›ก๏ธ
    • CSS ์• ๋‹ˆ๋ฉ”์ด์…˜ ์—†์Œ ๐Ÿ’จ
  • ๊ฒฝ๋Ÿ‰ํ™” ๋ฐ ๋ฉ”๋ชจ๋ฆฌ ํšจ์œจ ์ตœ์ ํ™” โšก
  • ์—…๋ฐ์ดํŠธ ๋ฐ ์ž๋™ ํ•‘๊ฑฐํ”„๋ฆฐํŠธ ์ฃผ์ž…์„ ์œ„ํ•œ PyPi ํŒจํ‚ค์ง€ ๐Ÿ“ฆ
  • ์ตœ์‹  Firefox ๋ฒ„์ „์„ ์œ ์ง€ ๐Ÿ•“

ํ•‘๊ฑฐํ”„๋ฆฐํŠธ ์ฃผ์ž…

Camoufox์—์„œ ๋ฐ์ดํ„ฐ๋Š” C++ ๊ตฌํ˜„ ์ˆ˜์ค€์—์„œ ๊ฐ€๋กœ์ฑ„์–ด์ง€๋ฏ€๋กœ JavaScript ๊ฒ€์‚ฌ๋ฅผ ํ†ตํ•ด ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ํƒ์ง€ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๊ฐœ๋ณ„ ํ•‘๊ฑฐํ”„๋ฆฐํŠธ ์†์„ฑ์„ ์Šคํ‘ธํ•‘ํ•˜๋ ค๋ฉด ์Šคํ‘ธํ•‘ํ•  ์†์„ฑ์ด ํฌํ•จ๋œ JSON์„ Python ์ธํ„ฐํŽ˜์ด์Šค์— ์ „๋‹ฌํ•˜์„ธ์š”:```py

with Camoufox(config={"property": "value"}) as browser:

์‚ฌ์šฉ์ž๊ฐ€ ์„ค์ •ํ•˜์ง€ ์•Š์€ ๊ตฌ์„ฑ ๋ฐ์ดํ„ฐ๋Š” [BrowserForge](https://github.com/daijro/browserforge) ์ง€๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ž๋™์œผ๋กœ ์ฑ„์›Œ์ง‘๋‹ˆ๋‹ค. ์ด ์ง€๋ฌธ์€ ์‹ค์ œ ํŠธ๋ž˜ํ”ฝ์—์„œ ๋‚˜ํƒ€๋‚˜๋Š” ๊ธฐ๊ธฐ ํŠน์„ฑ์˜ ํ†ต๊ณ„์  ๋ถ„ํฌ๋ฅผ ๋ชจ๋ฐฉํ•ฉ๋‹ˆ๋‹ค.

[[๊ตฌํ˜„๋œ ์†์„ฑ ๋ณด๊ธฐ](https://camoufox.com/fingerprint/)]

---

## Python ์‚ฌ์šฉ๋ฒ•

Camoufox๋Š” ๊ธฐ์กด Playwright ์ฝ”๋“œ์™€ ํ˜ธํ™˜๋ฉ๋‹ˆ๋‹ค. ๋ธŒ๋ผ์šฐ์ € ์ดˆ๊ธฐํ™”๋งŒ ๋ณ€๊ฒฝํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

**Sync API**```python
from camoufox.sync_api import Camoufox

with Camoufox() as browser:
    page = browser.new_page()
    page.goto("https://example.com")

๋น„๋™๊ธฐ API```python from camoufox.async_api import AsyncCamoufox

async with AsyncCamoufox() as browser: page = await browser.new_page() await page.goto("https://example.com")

[[์„ค์น˜ ๋ฐ ์‚ฌ์šฉ๋ฒ•](https://camoufox.com/python/)]

### ํ•˜๋“œ์›จ์–ด ์Šคํ‘ธํ•‘์„ ์ตœ๋Œ€ํ•œ ํ™œ์šฉํ•˜๊ธฐ

์•ˆ์ •์ ์ธ ๋ฆด๋ฆฌ์ฆˆ๋ฅผ ์œ„ํ•ด์„œ๋Š” ํ•ญ์ƒ ๋ฉ”์ธ [`camoufox`](https://pypi.org/project/camoufox/) pip ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ปจํ…์ŠคํŠธ๋ณ„ ์ง€๋ฌธ๊ณผ ํ•˜๋“œ์›จ์–ด ์Šคํ‘ธํ•‘์„ ํ™œ์šฉํ•˜๋ ค๋ฉด [`cloverlabs-camoufox`](https://pypi.org/project/cloverlabs-camoufox/) ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”. ์ด ํŒจํ‚ค์ง€๋Š” ๊ฐ ๋ฆด๋ฆฌ์ฆˆ๋งˆ๋‹ค ์—…๋ฐ์ดํŠธ๋˜๋Š” ๋ฐ˜๋ฉด, ๊ณต์‹ ํŒจํ‚ค์ง€๋Š” ์ง€์—ฐ ์ถœ์‹œ๋ฉ๋‹ˆ๋‹ค.

๋‘ ํŒจํ‚ค์ง€ ๊ฐ„์˜ ์ถฉ๋Œ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ€์ƒ ํ™˜๊ฒฝ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”.

**์„ค์น˜**```bash
pip install cloverlabs-camoufox

์ตœ์‹  ์‚ฌ์ „ ๋ฆด๋ฆฌ์Šค ๋ธŒ๋ผ์šฐ์ € ๊ฐ€์ ธ์˜ค๊ธฐ (์ตœ์‹  ํŒจ์น˜์— ๊ถŒ์žฅ๋จ)```bash python -m camoufox sync python -m camoufox set official/prerelease python -m camoufox fetch

**์‚ฌ์šฉ๋ฒ•** โ€” API๋Š” ์ƒ์œ„ ํŒจํ‚ค์ง€์™€ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.```python
from camoufox.sync_api import Camoufox

with Camoufox() as browser:
    page = browser.new_page()
    page.goto("https://example.com")

์‹ค์ œ ์ง€๋ฌธ ํ”„๋ฆฌ์…‹ (v149+ ๋ฐ”์ด๋„ˆ๋ฆฌ ๊ถŒ์žฅ)

๊ธฐ๋ณธ์ ์œผ๋กœ, ์ง€๋ฌธ ๊ฐ’์€ BrowserForge์— ์˜ํ•ด ํ•ฉ์„ฑ๋ฉ๋‹ˆ๋‹ค. ๋ณต์žกํ•œ ์ผ๊ด€์„ฑ ๊ฒ€์‚ฌ๋ฅผ ๋” ์ž˜ ํšŒํ”ผํ•˜๊ธฐ ์œ„ํ•ด, ๋ฒˆ๋“ค๋œ ํ”„๋ฆฌ์…‹(์‹ค์ œ Firefox ํŠธ๋ž˜ํ”ฝ์—์„œ ์ˆ˜์ง‘๋œ ์‹ค์ œ ์ง€๋ฌธ)์„ ์„ ํƒํ•˜์„ธ์š”:```python with Camoufox(fingerprint_preset=True, os="macos") as browser: ...

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ฒ„์ „์— ๋”ฐ๋ผ ์ž๋™ ๋ผ์šฐํŒ…๋ฉ๋‹ˆ๋‹ค: Firefox โ‰ฅ 149๋Š” `fingerprint-presets-v150.json`์„ ๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค(312๊ฐœ์˜ ํ”„๋ฆฌ์…‹, v149โ€“v152 ํฌํ•จ, macOS 67๊ฐœ / Windows 180๊ฐœ / Linux 65๊ฐœ). ์ด์ „ ๋ฐ”์ด๋„ˆ๋ฆฌ๋Š” ์›๋ž˜ ๋ฒˆ๋“ค๋กœ ํด๋ฐฑ๋ฉ๋‹ˆ๋‹ค. UA ๋ฌธ์ž์—ด์€ ํ™œ์„ฑ ๋ฐ”์ด๋„ˆ๋ฆฌ์— ๋งž๊ฒŒ ๋‹ค์‹œ ์ž‘์„ฑ๋˜๋ฏ€๋กœ, ์˜ตํŠธ์ธ(opt in)์€ ๋ฒ„์ „ ๊ฐ„์— ์•ˆ์ „ํ•ฉ๋‹ˆ๋‹ค. ํŠน์ • ํ•‘๊ฑฐํ”„๋ฆฐํŠธ๋ฅผ ๊ณ ์ •ํ•˜๋ ค๋ฉด `True` ๋Œ€์‹  ํ”„๋ฆฌ์…‹ ๋”•์…”๋„ˆ๋ฆฌ๋ฅผ ์ „๋‹ฌํ•˜์„ธ์š”.

---

## Capabilities

Below is a list of patches and features implemented in Camoufox.

### ํ•‘๊ฑฐํ”„๋ฆฐํŠธ ์Šคํ‘ธํ•‘

- Navigator ์†์„ฑ ์Šคํ‘ธํ•‘ (์žฅ์น˜, ๋ธŒ๋ผ์šฐ์ €, ๋กœ์ผ€์ผ ๋“ฑ)
- ํ™”๋ฉด ํฌ๊ธฐ, ํ•ด์ƒ๋„ ๋“ฑ ์—๋ฎฌ๋ ˆ์ด์…˜ ์ง€์›
- WebGL ๋งค๊ฐœ๋ณ€์ˆ˜, ์ง€์› ํ™•์žฅ, ์ปจํ…์ŠคํŠธ ์†์„ฑ ๋ฐ ์…ฐ์ด๋” ์ •๋ฐ€๋„ ํ˜•์‹ ์Šคํ‘ธํ•‘
- ๋‚ด๋ถ€ ๋ฐ ์™ธ๋ถ€ ์ฐฝ ๋ทฐํฌํŠธ ํฌ๊ธฐ ์Šคํ‘ธํ•‘
- AudioContext ์ƒ˜ํ”Œ๋ ˆ์ดํŠธ, ์ถœ๋ ฅ ์ง€์—ฐ ์‹œ๊ฐ„ ๋ฐ ์ตœ๋Œ€ ์ฑ„๋„ ์ˆ˜ ์Šคํ‘ธํ•‘
- ์žฅ์น˜ ์Œ์„ฑ ๋ฐ ์žฌ์ƒ ์†๋„ ์Šคํ‘ธํ•‘
- ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋งˆ์ดํฌ, ์›น์บ  ๋ฐ ์Šคํ”ผ์ปค ๊ฐœ์ˆ˜ ์Šคํ‘ธํ•‘
- ๋„คํŠธ์›Œํฌ ํ—ค๋”(Accept-Languages ๋ฐ User-Agent)๊ฐ€ navigator ์†์„ฑ๊ณผ ์ผ์น˜ํ•˜๋„๋ก ์Šคํ‘ธํ•‘๋ฉ๋‹ˆ๋‹ค
- ํ”„๋กœํ† ์ฝœ ์ˆ˜์ค€์—์„œ์˜ WebRTC IP ์Šคํ‘ธํ•‘
- ์ง€๋ฆฌ์  ์œ„์น˜, ์‹œ๊ฐ„๋Œ€ ๋ฐ ๋กœ์ผ€์ผ ์Šคํ‘ธํ•‘
- ๋ฐฐํ„ฐ๋ฆฌ API ์Šคํ‘ธํ•‘
- ๊ธฐํƒ€

### ์Šคํ…”์Šค ํŒจ์น˜

- ๋ฉ”์ธ ์›”๋“œ ์‹คํ–‰ ๋ˆ„์ถœ์„ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ํŽ˜์ด์ง€ ์—์ด์ „ํŠธ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ์ƒŒ๋“œ๋ฐ•์Šค ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค.
- ํ”„๋ ˆ์ž„ ์‹คํ–‰ ์ปจํ…์ŠคํŠธ ๋ˆ„์ถœ ๋ฐฉ์ง€
- `navigator.webdriver` ๊ฐ์ง€ ์ˆ˜์ •
- ํฌ์ธํ„ฐ ์œ ํ˜•์„ ํ†ตํ•œ Firefox ํ—ค๋“œ๋ฆฌ์Šค ๊ฐ์ง€ ์ˆ˜์ • ([#26](https://github.com/daijro/camoufox/issues/26))
- ์ž ์žฌ์ ์œผ๋กœ ๋ˆ„์ถœ๋  ์ˆ˜ ์žˆ๋Š” ์•ˆํ‹ฐ ์คŒ/๋ฉ”ํƒ€ ๋ทฐํฌํŠธ ์ฒ˜๋ฆฌ ํŒจ์น˜ ์ œ๊ฑฐ
- ๊ธฐ๋ณธ์ด ์•„๋‹Œ ํ™”๋ฉด ๋ฐ ์ฐฝ ํฌ๊ธฐ ์‚ฌ์šฉ
- ํ”ผ์ „ ์ฝ˜ํ…์ธ  ๊ฒฉ๋ฆฌ ์žฌํ™œ์„ฑํ™”
- PDF.js ์žฌํ™œ์„ฑํ™”
- ๊ธฐํƒ€ ๋ˆ„์ถœ ๊ตฌ์„ฑ ์†์„ฑ ๋ณ€๊ฒฝ
- ์‚ฌ๋žŒ๊ณผ ์œ ์‚ฌํ•œ ์ปค์„œ ์ด๋™

### ํฐํŠธ ํ•‘๊ฑฐํ”„๋ฆฐํŒ… ๋ฐฉ์ง€

- ์‚ฌ์šฉ์ž ์—์ด์ „ํŠธ์— ๋งž๋Š” ์˜ฌ๋ฐ”๋ฅธ ์‹œ์Šคํ…œ ํฐํŠธ๋ฅผ ์ž๋™์œผ๋กœ ์‚ฌ์šฉ
- Windows, Mac ๋ฐ Linux ์‹œ์Šคํ…œ ํฐํŠธ ๋ฒˆ๋“ค ์ œ๊ณต
- ๋ฌธ์ž ๊ฐ„๊ฒฉ์„ ๋ฌด์ž‘์œ„๋กœ ์˜คํ”„์…‹ํ•˜์—ฌ ํฐํŠธ ๋ฉ”ํŠธ๋ฆญ ํ•‘๊ฑฐํ”„๋ฆฐํŒ… ๋ฐฉ์ง€

### Playwright ์ง€์›

- ์ตœ์‹  Firefox๋ฅผ ์œ„ํ•œ Playwright์˜ ์ปค์Šคํ…€ ๊ตฌํ˜„
- ๋ด‡ ํƒ์ง€๋ฅผ ํšŒํ”ผํ•˜๊ธฐ ์œ„ํ•œ ๋‹ค์–‘ํ•œ ๊ตฌ์„ฑ ํŒจ์น˜

### ๋””๋ธ”๋กœํŠธ/์ตœ์ ํ™”

- _๋งค์šฐ ๋งŽ์€_ Mozilla ์„œ๋น„์Šค๋ฅผ ์ œ๊ฑฐ/๋น„ํ™œ์„ฑํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค. ์›๋ณธ Mozilla Firefox๋ณด๋‹ค ๋น ๋ฅด๊ฒŒ ์‹คํ–‰๋˜๋ฉฐ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์ด ๋” ์ ์Šต๋‹ˆ๋‹ค(200MB).
- LibreWolf ๋ฐ Ghostery์˜ ํŒจ์น˜๋กœ ํ…”๋ ˆ๋ฉ”ํŠธ๋ฆฌ ๋ฐ ๋ธ”๋กœํŠธ ์ œ๊ฑฐ ์ง€์›
- PeskyFox, LibreWolf ๋“ฑ์˜ ๋””๋ธ”๋กœํŠธ ๊ตฌ์„ฑ
- FastFox์˜ ์†๋„ ๋ฐ ๋„คํŠธ์›Œํฌ ์ตœ์ ํ™”
- ๋ชจ๋“  CSS ์• ๋‹ˆ๋ฉ”์ด์…˜ ์ œ๊ฑฐ
- ๋ฏธ๋‹ˆ๋ฉ€๋ฆฌ์ŠคํŠธ ํ…Œ๋งˆ
- ๊ธฐํƒ€

### ์• ๋“œ์˜จ

- `addons` ์†์„ฑ์— ๊ฒฝ๋กœ ๋ชฉ๋ก์„ ์ „๋‹ฌํ•˜์—ฌ ๋””๋ฒ„๊ทธ ์„œ๋ฒ„ ์—†์ด Firefox ์• ๋“œ์˜จ ๋กœ๋“œ
- ์ปค์Šคํ…€ ๊ฐœ์ธ์ •๋ณด ๋ณดํ˜ธ ํ•„ํ„ฐ๊ฐ€ ํฌํ•จ๋œ uBlock Origin ์ถ”๊ฐ€
- ์• ๋“œ์˜จ์€ ํƒญ์„ ์—ด ์ˆ˜ ์—†์Œ
- ์• ๋“œ์˜จ์ด ์‹œํฌ๋ฆฟ ๋ชจ๋“œ์—์„œ ์ž๋™์œผ๋กœ ํ™œ์„ฑํ™”๋จ
- ์• ๋“œ์˜จ์ด ์ž๋™์œผ๋กœ ํˆด๋ฐ”์— ๊ณ ์ •๋จ
- uBO ํ”„๋ฆฌํŽ˜์นญ์œผ๋กœ DNS ๋ˆ„์ถœ ์ˆ˜์ •

### Python ์ธํ„ฐํŽ˜์ด์Šค

- ์‹ค์ œ ๋ถ„ํฌ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ณ ์œ ํ•œ ์žฅ์น˜ ํŠน์„ฑ์„ ์ž๋™์œผ๋กœ ์ƒ์„ฑํ•˜์—ฌ Camoufox์— ์ฃผ์ž…
- WebGL ํ•‘๊ฑฐํ”„๋ฆฐํŠธ ์ฃผ์ž… ๋ฐ ์ˆœํ™˜
- ๋Œ€์ƒ OS์— ๋”ฐ๋ผ ์˜ฌ๋ฐ”๋ฅธ ์‹œ์Šคํ…œ ํฐํŠธ์™€ ์„œ๋ธŒํ”ฝ์…€ ์•ˆํ‹ฐ์•จ๋ฆฌ์–ด์‹ฑ ๋ฐ ํžŒํŒ… ์‚ฌ์šฉ
- ํ”„๋ก์‹œ์˜ ๋Œ€์ƒ ์ง€์—ญ์—์„œ ๋ชฉํ‘œ ์ง€๋ฆฌ์  ์œ„์น˜, ์‹œ๊ฐ„๋Œ€ ๋ฐ ๋กœ์ผ€์ผ์„ ๊ณ„์‚ฐํ•˜์—ฌ ํ”„๋ก์‹œ ํƒ์ง€ ๋ฐฉ์ง€
- ํ”„๋ก์‹œ ๋Œ€์ƒ ์ง€์—ญ์˜ ์–ธ์–ด ์‚ฌ์šฉ์ž ๋ถ„ํฌ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ธŒ๋ผ์šฐ์ € ์–ธ์–ด ๊ณ„์‚ฐ ๋ฐ ์Šคํ‘ธํ•‘
- Playwright๋ฅผ ์ง€์›ํ•˜๋Š” ๋‹ค๋ฅธ ์–ธ์–ด์—์„œ Camoufox๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์›๊ฒฉ ์„œ๋ฒ„ ํ˜ธ์ŠคํŒ…
- ํ—ค๋“œ๋ฆฌ์Šค ์„œ๋ฒ„์—์„œ Camoufox๋ฅผ ํ—ค๋“œํ’€(Headful) ๋ฐฉ์‹์œผ๋กœ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ๋‚ด์žฅ ๊ฐ€์ƒ ๋””์Šคํ”Œ๋ ˆ์ด ๋ฒ„ํผ
- ์ด๋ฏธ์ง€ ๋กœ๋”ฉ, WebRTC ๋ฐ WebGL ์ „ํ™˜
- ๊ธฐํƒ€

> [!NOTE]
> Camoufox๋Š” Chromium ํ•‘๊ฑฐํ”„๋ฆฐํŠธ ์ฃผ์ž…์„ ์™„์ „ํžˆ ์ง€์›ํ•˜์ง€ **์•Š์Šต๋‹ˆ๋‹ค**. ์ผ๋ถ€ WAF(์˜ˆ: [Interstitial](https://nopecha.com/demo/cloudflare))๋Š” Spidermonkey ์—”์ง„ ๋™์ž‘์„ ํ…Œ์ŠคํŠธํ•˜๋ฏ€๋กœ ์Šคํ‘ธํ•‘์ด ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

---

# Stealth Overview

## How Camoufox hides its automation library

> [!WARNING]
> **2026๋…„ ๊ธฐ์ค€ ํ˜„์žฌ ์ƒํƒœ**:
> ๊ฐœ์ธ ์‚ฌ์ •์œผ๋กœ ์ธํ•ด 1๋…„๊ฐ„ ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์ค‘๋‹จ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ Firefox ๋ฒ„์ „ ๋ฐ ์ƒˆ๋กœ ๋ฐœ๊ฒฌ๋œ ํ•‘๊ฑฐํ”„๋ฆฐํŠธ ๋ถˆ์ผ์น˜๋กœ ์ธํ•ด Camoufox์˜ ์„ฑ๋Šฅ์ด ์ €ํ•˜๋˜์—ˆ์Šต๋‹ˆ๋‹ค. **Camoufox๋Š” ํ˜„์žฌ ํ™œ๋ฐœํžˆ ๊ฐœ๋ฐœ ์ค‘์ž…๋‹ˆ๋‹ค.**

Camoufox์—์„œ๋Š” Playwright์˜ ๋‚ด๋ถ€ Page Agent ์ฝ”๋“œ๊ฐ€ ๋ชจ๋‘ ์ƒŒ๋“œ๋ฐ•์Šค ์ฒ˜๋ฆฌ ๋ฐ ๊ฒฉ๋ฆฌ๋ฉ๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด ํŽ˜์ด์ง€๊ฐ€ JavaScript ๊ฒ€์‚ฌ๋ฅผ ํ†ตํ•ด Playwright์˜ ์กด์žฌ๋ฅผ ๊ฐ์ง€ํ•˜๋Š” ๊ฒƒ์ด ๋ถˆ๊ฐ€๋Šฅํ•ด์ง‘๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ Playwright๋Š” `window.__playwright__binding__`๊ณผ ๊ฐ™์€ JavaScript๋ฅผ ํŽ˜์ด์ง€์— ์ฃผ์ž…ํ•˜์—ฌ ์š”์†Œ ์ฟผ๋ฆฌ, JavaScript ํ‰๊ฐ€, ์ดˆ๊ธฐํ™” ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰ ๋“ฑ์˜ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋ฉฐ, ์ด๋Š” ์›น์‚ฌ์ดํŠธ์—์„œ ๊ฐ์ง€๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Camoufox์—์„œ๋Š” ์ด๋Ÿฌํ•œ ์ž‘์—…์ด ํŽ˜์ด์ง€ ์™ธ๋ถ€์˜ ๊ฒฉ๋ฆฌ๋œ ๋ฒ”์œ„์—์„œ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์›น์‚ฌ์ดํŠธ๋Š” Playwright๊ฐ€ ์ผ๋ฐ˜์ ์œผ๋กœ ์ฃผ์ž…ํ•˜๋Š” JavaScript๋ฅผ ๋” ์ด์ƒ '๋ณผ' ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด Playwright์˜ ํ”์ ์ด ์™„์ „ํžˆ ์ œ๊ฑฐ๋ฉ๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์ž๋™ํ™” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ˆจ๊ธฐ๋”๋ผ๋„ Camoufox๋Š” ํ•‘๊ฑฐํ”„๋ฆฐํŠธ ์ˆœํ™˜์˜ ๋ถˆ์ผ์น˜์— ๋ฉด์—ญ์ด ์•„๋‹™๋‹ˆ๋‹ค. ์ด๋ฅผ ๋ฐœ๊ฒฌํ•˜๊ณ  ์ˆ˜์ •ํ•˜๊ธฐ ์œ„ํ•œ ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์—ฌ์ „ํžˆ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

### ํŽ˜์ด์ง€ ์ƒํ˜ธ์ž‘์šฉ

์•ˆํ‹ฐ๋ด‡ ์‹œ์Šคํ…œ์€ ๋˜ํ•œ ํด๋ผ์ด์–ธํŠธ ์ธก ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ์‚ฌ์šฉ์ž ํ–‰๋™์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋งˆ์šฐ์Šค ์›€์ง์ž„, ํด๋ฆญ, ์Šคํฌ๋กค, ๊ทธ๋ฆฌ๊ณ  ์ž‘์—… ๊ฐ„์˜ ํƒ€์ด๋ฐ ํŒจํ„ด์„ ์ฐพ์Šต๋‹ˆ๋‹ค.

<video controls src="https://github.com/user-attachments/assets/6d33d6af-3537-4603-bf24-6bd3f4f8f455" width="200px" loop muted></video>

Camoufox๋Š” ์ธ๊ฐ„๊ณผ ์œ ์‚ฌํ•œ ๋งˆ์šฐ์Šค ์›€์ง์ž„ ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ์ตœ์„ ์„ ๋‹คํ•ฉ๋‹ˆ๋‹ค. ์ž์—ฐ์Šค๋Ÿฌ์šด ์›€์ง์ž„ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์›๋ž˜ [riflosnake์˜ HumanCursor](https://github.com/riflosnake/HumanCursor)์—์„œ ๊ฐ€์ ธ์™€ C++๋กœ ๋‹ค์‹œ ์ž‘์„ฑ๋˜์—ˆ์œผ๋ฉฐ, ๋” ๊ฑฐ๋ฆฌ ์ธ์‹์ ์ธ ๊ถค์ ์„ ์œ„ํ•ด ์ˆ˜์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์ด๋Š” ์™„๋ฒฝํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ถฉ๋ถ„ํžˆ ์ •๊ตํ•œ ๋ถ„์„์„ ํ†ตํ•ด ์—ฌ์ „ํžˆ ๊ฐ์ง€๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (ํ–ฅํ›„ ์ž‘์—… ์ค‘)

---

## How Camoufox rotates identities

AI ์—์ด์ „ํŠธ๋Š” ํ”Œ๋ž˜๊ทธ๊ฐ€ ์ง€์ •๋˜๊ฑฐ๋‚˜ ์†๋„ ์ œํ•œ ์—†์ด ์—ฌ๋Ÿฌ ์„ธ์…˜์—์„œ ์ž‘๋™ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. IP ์ฃผ์†Œ๋ฅผ ์ˆœํ™˜ํ•˜๋Š” ๊ฒƒ๋งŒ์œผ๋กœ๋Š” ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ๋ธŒ๋ผ์šฐ์ € ์„ธ์…˜์€ ์ˆ˜์ฒœ ๊ฐœ์˜ ์‹ ํ˜ธ๋ฅผ ์ „๋‹ฌํ•˜์—ฌ ๊ณ ์œ ํ•œ **ํ•‘๊ฑฐํ”„๋ฆฐํŠธ**๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์›น์‚ฌ์ดํŠธ๋Š” OS, GPU, ํ™”๋ฉด ํ•ด์ƒ๋„, ํฐํŠธ, ์‹œ๊ฐ„๋Œ€ ๋“ฑ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์‹ ํ˜ธ๊ฐ€ ์ผ๊ด€๋˜์ง€ ์•Š๊ฑฐ๋‚˜ ๋น„์ •์ƒ์ ์ด๋ฉด ์ฐจ๋‹จ๋ฉ๋‹ˆ๋‹ค.

### ์‹œ์žฅ ์ ์œ ์œจ ๋ถ„ํฌ

๊ฐ ์‹คํ–‰ ์ค‘์ธ ๋ด‡ ์ธ์Šคํ„ด์Šค์— ๋Œ€ํ•ด IP๋ฅผ ์ˆœํ™˜ํ•˜๋”๋ผ๋„ ์›น ์ ‘๊ทผ ๋ฐฉํ™”๋ฒฝ์€ ์—ฌ์ „ํžˆ ๋จธ์‹  ๋Ÿฌ๋‹์„ ์‚ฌ์šฉํ•˜์—ฌ ๋“ค์–ด์˜ค๋Š” ์›น ํŠธ๋ž˜ํ”ฝ์„ ๋ถ„์„ํ•˜์—ฌ ๋น„์ •์ƒ ์—ฌ๋ถ€๋ฅผ ๊ฐ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Linux ์‹œ์žฅ ์ ์œ ์œจ์ด 5%์˜€๋‹ค๋ฉด ๊ฐ‘์ž๊ธฐ 20%๊ฐ€ ๋˜๋Š” ๊ฒƒ์€ ์œ„ํ—˜ ์‹ ํ˜ธ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ๋ชจ๋“  Linux ์‚ฌ์šฉ์ž์—๊ฒŒ ์กฐ๊ฑด ์—†์ด ์บก์ฐจ๋ฅผ ์š”๊ตฌํ•ฉ๋‹ˆ๋‹ค.

Camoufox๋Š” [BrowserForge](https://github.com/daijro/browserforge)์˜ ํ•‘๊ฑฐํ”„๋ฆฐํŠธ ์ƒ์„ฑ๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‹ค์ œ ํŠธ๋ž˜ํ”ฝ์—์„œ ์žฅ์น˜ ๋ฐ์ดํ„ฐ์˜ ํ†ต๊ณ„์  ๋ถ„ํฌ๋ฅผ ๋ชจ๋ฐฉํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, Camoufox๋Š” 5%์˜ ํ™•๋ฅ ๋กœ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ Linux ์‚ฌ์šฉ์ž์ฒ˜๋Ÿผ ๋ณด์ด๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ๊ทธ 5% ์ค‘์—์„œ 2560x1440 ํ™”๋ฉด ํ•ด์ƒ๋„๋ฅผ 9.5%, Intel HD GPU๋ฅผ 27.5%์˜ ํ™•๋ฅ ๋กœ ์Šคํ‘ธํ•‘ํ•ฉ๋‹ˆ๋‹ค.

### How can Camoufox be detected?

Camoufox๋Š” ์˜ฌ๋ฐ”๋ฅธ ์‹œ์žฅ ์ ์œ ์œจ๋กœ ํ•‘๊ฑฐํ”„๋ฆฐํŠธ๋ฅผ ์Šคํ‘ธํ•‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ **ํ•‘๊ฑฐํ”„๋ฆฐํŠธ๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ๋„ ์ผ๊ด€๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.** Apple M1 GPU๊ฐ€ ์žˆ๋Š” Windows ์‚ฌ์šฉ์ž ์—์ด์ „ํŠธ, Windows DirectX ๋ Œ๋”๋Ÿฌ๊ฐ€ ์žˆ๋Š” macOS ์‚ฌ์šฉ์ž ์—์ด์ „ํŠธ, ๋ฐ์Šคํฌํƒ‘ ํ™”๋ฉด ํ•ด์ƒ๋„๋ฅผ ๊ฐ€์ง„ ๋ชจ๋ฐ”์ผ ์žฅ์น˜๋Š” ๋ชจ๋‘ ๋ถˆ๊ฐ€๋Šฅํ•˜๋ฉฐ ์˜์‹ฌ์Šค๋Ÿฌ์šด ๊ฒƒ์œผ๋กœ ํ”Œ๋ž˜๊ทธ๊ฐ€ ์ง€์ •๋ฉ๋‹ˆ๋‹ค.

์„ค๋“๋ ฅ ์žˆ๋Š” ์Šคํ‘ธํ•‘๋œ ํ•‘๊ฑฐํ”„๋ฆฐํŠธ๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ๋ณ€๊ฒฝํ•ด์•ผ ํ•˜๋Š” ์ˆ˜์ฒœ ๊ฐ€์ง€ ๋ฐ์ดํ„ฐ ํฌ์ธํŠธ ์ค‘ ๊ฐ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์„œ๋กœ ์ผ๊ด€๋˜์–ด์•ผ ํ•˜๋Š”๋ฐ, Camoufox๋Š” ํ•ญ์ƒ ์„ฑ๊ณตํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ์•ˆํ‹ฐ๋ด‡ ์ œ๊ณต์—…์ฒด๋Š” ๋‹จ ํ•˜๋‚˜์˜ ๋…ํŠนํ•œ ๋ถˆ์ผ์น˜๋ผ๋„ ์ฐพ๊ธฐ ์œ„ํ•ด Camoufox๋ฅผ ๋ฐ˜๋ณต์ ์œผ๋กœ ํ…Œ์ŠคํŠธํ•œ ๋‹ค์Œ ์ฆ‰์‹œ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜์—ฌ ์ด๋ฅผ ํ…Œ์ŠคํŠธํ•ฉ๋‹ˆ๋‹ค.

---

## How does Camoufox compare to other solutions?

### JavaScript ๊ธฐ๋ฐ˜ ์†”๋ฃจ์…˜

๊ณผ๊ฑฐ์—๋Š” ๊ฐœ๋ฐœ์ž๋“ค์ด JavaScript๋ฅผ ์ฃผ์ž…ํ•˜์—ฌ ์ด๋Ÿฌํ•œ ๊ฐ’์„ ์Šคํ‘ธํ•‘ํ•˜๋ ค๊ณ  ํ–ˆ์ง€๋งŒ, JavaScript๊ฐ€ ๋ชจ๋“  ๊ฒƒ์„ ์Šคํ‘ธํ•‘ํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์•ˆ์ •์ ์œผ๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ถˆ์™„์ „ํ•œ ์ปค๋ฒ„๋ฆฌ์ง€๋Š” ์ผ๊ด€๋˜์ง€ ์•Š์€ ํ•‘๊ฑฐํ”„๋ฆฐํŠธ๋ฅผ ์ดˆ๋ž˜ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋„คํŠธ์›Œํฌ ์š”์ฒญ์˜ User Agent๊ฐ€ navigator์˜ User Agent์™€ ์ผ์น˜ํ•˜์ง€ ์•Š์œผ๋ฉด ์•ˆํ‹ฐ๋ด‡ ์‹œ์Šคํ…œ์ด ํ”Œ๋ž˜๊ทธ๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ ์ฃผ์ž…๋œ ๋ชจ๋“  JavaScript๋Š” ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ๋“  ๊ฐ์ง€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์•ˆํ‹ฐ๋ด‡ ์‹œ์Šคํ…œ์€ `Object.getOwnPropertyDescriptor`๊ฐ€ ๋ฎ์–ด์“ฐ์—ฌ์ง„ ์†์„ฑ์„ ๋“œ๋Ÿฌ๋‚ด๋Š”์ง€, ํ•จ์ˆ˜์˜ `toString()`์ด ๋” ์ด์ƒ `[native code]`๋ฅผ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š๋Š”์ง€(ํ•˜์ด์žฌํ‚น๋˜์—ˆ์Œ์„ ๋“œ๋Ÿฌ๋ƒ„), ๋˜๋Š” window ์ปจํ…์ŠคํŠธ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ worker ์Šค๋ ˆ๋“œ ์ปจํ…์ŠคํŠธ์™€ ์ผ์น˜ํ•˜์ง€ ์•Š๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐํšŒ ๋ฐฉ๋ฒ•๋„ ํ•œ๊ณ„๊ฐ€ ์žˆ์œผ๋ฉฐ, ์ถฉ๋ถ„ํžˆ ๊นŠ์ด ํŒŒ๊ณ ๋“ค๋ฉด JS ์ฃผ์ž…์„ ๊ฐ์ง€ํ•  ๋ฐฉ๋ฒ•์€ ํ•ญ์ƒ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

#### Camoufox์˜ ์ ‘๊ทผ ๋ฐฉ์‹

Camoufox๋Š” ๋ธŒ๋ผ์šฐ์ €์˜ C++ ๊ตฌํ˜„ ์ˆ˜์ค€์—์„œ ํ˜ธ์ถœ์„ ๊ฐ€๋กœ์ฑ„๊ธฐ ๋•Œ๋ฌธ์— ํ•˜์ด์žฌํ‚น๋œ ๋ชจ๋“  ๊ฐ์ฒด์™€ ์†์„ฑ์ด ๋„ค์ดํ‹ฐ๋ธŒ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค. ๊ฐ์ง€ํ•  JavaScript ํ•˜์ด์žฌํ‚น์ด ์—†์Šต๋‹ˆ๋‹ค.

Camoufox๋Š” ๋˜ํ•œ Browserforge๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ผ๊ด€๋˜๊ณ  ์„ค๋“๋ ฅ ์žˆ๋Š” ํ•‘๊ฑฐํ”„๋ฆฐํŠธ๋ฅผ ์ƒ์„ฑํ•˜๋ ค๊ณ  ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด๋Š” ์•ž์„œ ์„ค๋ช…ํ•œ ๋ฐ์ดํ„ฐ ๋ถˆ์ผ์น˜์™€ ๊ฐ™์€ ๋ณต์žกํ•œ ํ•‘๊ฑฐํ”„๋ฆฐํŠธ ๊ฐ์ง€ ๋ฐฉ๋ฒ•์— ์˜ํ•ด ์—ฌ์ „ํžˆ ๊ฐ์ง€๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

<hr width=50>

### CDP ๊ธฐ๋ฐ˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

CDP(Chrome DevTools Protocol)๋Š” Chromium๊ณผ Firefox์— ๋‚ด์žฅ๋œ ์ž๋™ํ™” ํ”„๋กœํ† ์ฝœ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ CDP๋Š” ์ž๋™ํ™” ํ”„๋กœํ† ์ฝœ์ด๋ผ๋Š” ์‚ฌ์‹ค์„ ์ˆจ๊ธฐ๋ ค๋Š” ๋…ธ๋ ฅ์„ ์ „ํ˜€ ํ•˜์ง€ ์•Š์œผ๋ฉฐ, ๊ทธ ๊ธฐ๋Šฅ์˜ ๋งŽ์€ ๋ถ€๋ถ„์„ ํŽ˜์ด์ง€ ๋ฒ”์œ„์— ๋…ธ์ถœํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์ธ ๋ฐฉ๋ฒ•์œผ๋กœ๋Š” `navigator.webdriver`๊ฐ€ true์ธ์ง€ ํ™•์ธํ•˜๊ฑฐ๋‚˜, ์Šคํƒ ๋””๋ฒ„๊ฑฐ๋ฅผ ์ฝ๋Š” ๊ฒƒ์„ ์žก์•„๋‚ด๊ฑฐ๋‚˜, ChromeDriver๊ฐ€ ๋‚ด๋ถ€ ํ†ต์‹ ์„ ์œ„ํ•ด document ๊ฐ์ฒด์— ์ฃผ์ž…ํ•˜๋Š” ๋ณ€์ˆ˜๋ฅผ ํ™•์ธํ•˜๋Š” ๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

#### Camoufox์˜ ์ ‘๊ทผ ๋ฐฉ์‹

Playwright๋Š” Chromium์„ ์ œ์–ดํ•˜๊ธฐ ์œ„ํ•ด CDP๋ฅผ ์‚ฌ์šฉํ•˜์ง€๋งŒ, Firefox์—๋Š” _Juggler_๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. Juggler๋Š” Firefox๊ฐ€ CDP๋ฅผ ์ง€์›ํ•˜๊ธฐ ์ „์— ๊ฐœ๋ฐœ๋œ ์ปค์Šคํ…€ ํ”„๋กœํ† ์ฝœ์ž…๋‹ˆ๋‹ค([์›๋ณธ ์ €์žฅ์†Œ](https://github.com/puppeteer/juggler)). ์ด๋Š” Firefox ๋‚ด์˜ ๋ณ„๋„ ๋ชจ๋“ˆ์ด๋ฉฐ ํ•ต์‹ฌ ๋ธŒ๋ผ์šฐ์ €์˜ ์ผ๋ถ€๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํŽ˜์ด์ง€์— ๋ฌด์—‡์„ ๋…ธ์ถœํ• ์ง€ ํŽธ์ง‘ํ•˜๊ณ  ์ œ์–ดํ•˜๊ธฐ๊ฐ€ ๋” ์‰ฝ์Šต๋‹ˆ๋‹ค.

Camoufox๋Š” Juggler์— ํŒจ์น˜๋ฅผ ์ ์šฉํ•˜์—ฌ ์ž‘์—…ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฉ๋ฆฌ๋œ ํŽ˜์ด์ง€ '๋ณต์‚ฌ๋ณธ'์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. Playwright๋Š” ์ž์ฒด ๋ฒ„์ „์˜ ํŽ˜์ด์ง€๋ฅผ ์ž์œ ๋กญ๊ฒŒ ์ฝ๊ณ  ํŽธ์ง‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ฒƒ์ด ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด์ง€๋งŒ ์‹ค์ œ ํŽ˜์ด์ง€๋Š” ์ด๋Ÿฌํ•œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์— ์ „ํ˜€ ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ํŽ˜์ด์ง€๋Š” getter ํ•˜์ด์žฌํ‚น๊ณผ ๊ฐ™์€ ํŠธ๋ฆญ์„ ํ†ตํ•ด ๋ฌด์–ธ๊ฐ€๋ฅผ ์ฝ๊ฑฐ๋‚˜ ์š”์†Œ๋ฅผ ๊ฐ์‹œํ•˜๊ธฐ ์œ„ํ•ด ๋ฆฌ์Šค๋„ˆ๊ฐ€ ์ถ”๊ฐ€๋˜๋Š” ๊ฒƒ์„ ๊ฐ์ง€ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ Juggler๋Š” Firefox์˜ ์›๋ž˜ ์‚ฌ์šฉ์ž ์ž…๋ ฅ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ํ†ตํ•ด ์ง์ ‘ ์ž…๋ ฅ์„ ์ „์†กํ•˜๋ฏ€๋กœ, ์ผ๋ฐ˜ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ์™€ ์ •ํ™•ํžˆ ๋™์ผํ•œ ๋ฐฉ์‹์œผ๋กœ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค. Camoufox๋Š” ๋˜ํ•œ Firefox์˜ ํ—ค๋“œ๋ฆฌ์Šค ๋ชจ๋“œ์— ํŒจ์น˜๋ฅผ ์ ์šฉํ•˜์—ฌ ์ผ๋ฐ˜ ์ฐฝ์—์„œ ์‹คํ–‰๋˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋Œ€๋น„์ฑ…์œผ๋กœ, ํ—ค๋“œ๋ฆฌ์Šค ๋ชจ๋“œ๊ฐ€ ๋ˆ„์ถœ๋  ๊ฒฝ์šฐ Python ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” [๊ฐ€์ƒ ๋””์Šคํ”Œ๋ ˆ์ด](https://camoufox.com/python/virtual-display/)์—์„œ Camoufox๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

---

<h1 align="center">Build System</h1>

> [!WARNING]
> ์•„๋ž˜ ๋‚ด์šฉ์€ Camoufox๋ฅผ ๋นŒ๋“œํ•˜๊ณ  ๋””๋ฒ„๊น…ํ•˜๋Š” ๋ฐ ๊ด€์‹ฌ์ด ์žˆ๋Š” ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. Playwright ์‚ฌ์šฉ ๋ฐฉ๋ฒ•์€ [์—ฌ๊ธฐ](https://github.com/daijro/camoufox/tree/main/pythonlib#camoufox-python-interface)๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

### ๊ฐœ์š”

๋‹ค์Œ์€ ๋นŒ๋“œ ์‹œ์Šคํ…œ๊ณผ ๊ด€๋ จ make ๋ช…๋ น์–ด์˜ ๋‹ค์ด์–ด๊ทธ๋žจ์ž…๋‹ˆ๋‹ค:```mermaid
graph TD
    FFSRC[Firefox Source] -->|make fetch| REPO

    subgraph REPO[Camoufox Repository]
        PATCHES[Fingerprint masking patches]
        ADDONS[uBlock & B.P.C.]
        DEBLOAT[Debloat/optimizations]
        SYSTEM_FONTS[Win, Mac, Linux fonts]
        JUGGLER[Patched Juggler]
    end

    subgraph Local
    REPO -->|make dir| PATCH[Patched Source]
    PATCH -->|make build| BUILD[Built]
    BUILD -->|make package-linux| LINUX[Linux Portable]
    BUILD -->|make package-windows| WIN[Windows Portable]
    BUILD -->|make package-macos| MAC[macOS Portable]
    end

์ด๋Š” ์›๋ž˜ LibreWolf ๋นŒ๋“œ ์‹œ์Šคํ…œ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋นŒ๋“œ CLI

[!WARNING] Camoufox์˜ ๋นŒ๋“œ ์‹œ์Šคํ…œ์€ Linux์—์„œ ์‚ฌ์šฉํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. WSL์€ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค!

๋จผ์ €, Git์œผ๋กœ ์ด ์ €์žฅ์†Œ๋ฅผ ํด๋ก ํ•˜์‹ญ์‹œ์˜ค:```bash git clone --depth 1 https://github.com/daijro/camoufox cd camoufox

๋‹ค์Œ์œผ๋กœ, ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Camoufox ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๋นŒ๋“œํ•˜์‹ญ์‹œ์˜ค:```bash
make dir

๋ถ€ํŠธ์ŠคํŠธ๋ž˜ํ•‘ ์ „์—, ํ—ฌํผ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‹œ์Šคํ…œ ๋นŒ๋“œ ์˜์กด์„ฑ์„ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค. ์ด ์Šคํฌ๋ฆฝํŠธ๋Š” ํ”Œ๋žซํผ์„ ๊ฐ์ง€ํ•˜๊ณ  ์ ์ ˆํ•œ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž(macOS์—์„œ๋Š” Homebrew, Linux์—์„œ๋Š” apt/dnf/pacman)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋นŒ๋“œ์— ํ•„์š”ํ•œ ๋ชจ๋“  ๊ฒƒ(Python โ‰ฅ 3.11, Rust, aria2, p7zip, go, msitools, wget, sqlite`, ๋ฐ ํ•ต์‹ฌ ๋นŒ๋“œ ๋„๊ตฌ)์„ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค:```bash bash scripts/install-deps.sh

> [!NOTE]
> ์˜์กด์„ฑ ์„ค์น˜ ํ”„๋กœ๊ทธ๋žจ์€ ํ˜„์žฌ๊นŒ์ง€ macOS์—์„œ๋งŒ ํ…Œ์ŠคํŠธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ ๋‹ค์Œ Camoufox๋ฅผ ๋นŒ๋“œํ•  ์ˆ˜ ์žˆ๋„๋ก ์‹œ์Šคํ…œ์„ ๋ถ€ํŠธ์ŠคํŠธ๋žฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ์ž‘์—…์€ ํ•œ ๋ฒˆ๋งŒ ์ˆ˜ํ–‰ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜์—ฌ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค:```bash
make bootstrap

๋งˆ์ง€๋ง‰์œผ๋กœ ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Camoufox๋ฅผ ๋นŒ๋“œํ•˜๊ณ  ํŒจํ‚ค์ง•ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:```bash python3 multibuild.py --target linux windows macos --arch x86_64 arm64 i686

์ƒˆ๋กœ์šด ๋นŒ๋“œ์˜ ๊ฒฝ์šฐ, `i686`์€ Windows์—์„œ๋งŒ ์ง€์›๋ฉ๋‹ˆ๋‹ค. ์ง€์›๋˜์ง€ ์•Š๋Š” ๋Œ€์ƒ/์•„ํ‚คํ…์ฒ˜ ์กฐํ•ฉ์€ ๊ฑด๋„ˆ๋œ๋‹ˆ๋‹ค.

<details>
<summary>
CLI ๋งค๊ฐœ๋ณ€์ˆ˜
</summary>```bash
Options:
  -h, --help            show this help message and exit
  --target {linux,windows,macos} [{linux,windows,macos} ...]
                        Target platforms to build
  --arch {x86_64,arm64,i686} [{x86_64,arm64,i686} ...]
                        Target architectures to build for each platform
  --bootstrap           Bootstrap the build system
  --clean               Clean the build directory before starting

Example:
$ python3 multibuild.py --target linux windows macos --arch x86_64 arm64

Docker ์‚ฌ์šฉ

Camoufox๋Š” ๋ชจ๋“  ํ”Œ๋žซํผ์—์„œ Docker๋ฅผ ํ†ตํ•ด ๋นŒ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. Firefox์˜ ์†Œ์Šค ์ฝ”๋“œ๊ฐ€ ํฌํ•จ๋œ Docker ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค:```bash docker build -t camoufox-builder .
2. Camoufox ํŒจ์น˜๋ฅผ ๋Œ€์ƒ ํ”Œ๋žซํผ ๋ฐ ์•„ํ‚คํ…์ฒ˜๋กœ ๋นŒ๋“œ:```bash
docker run -v "$(pwd)/dist:/app/dist" camoufox-builder --target <os> --arch <arch>
๋กœ์ปฌ ~/.mozbuild ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•˜๋‚˜์š”?

ํ˜ธ์ŠคํŠธ์˜ .mozbuild ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด, ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ๋Œ€์‹  ์‚ฌ์šฉํ•˜์—ฌ docker๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:```bash docker run
-v "$HOME/.mozbuild":/root/.mozbuild:rw,z
-v "$(pwd)/dist:/app/dist"
camoufox-builder
--target
--arch

</details>

<details>
<summary>
Docker CLI ๋งค๊ฐœ๋ณ€์ˆ˜
</summary>```bash
Options:
  -h, --help            show this help message and exit
  --target {linux,windows,macos} [{linux,windows,macos} ...]
                        Target platforms to build
  --arch {x86_64,arm64,i686} [{x86_64,arm64,i686} ...]
                        Target architectures to build for each platform
  --bootstrap           Bootstrap the build system
  --clean               Clean the build directory before starting

Example:
$ docker run -v "$(pwd)/dist:/app/dist" camoufox-builder --target windows macos linux --arch x86_64 arm64 i686

๋นŒ๋“œ ์•„ํ‹ฐํŒฉํŠธ๋Š” ์ด์ œ dist/ ํด๋” ์•„๋ž˜์— ์ž‘์„ฑ๋˜์–ด ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.


๊ฐœ๋ฐœ ๋„๊ตฌ

์ด ์ €์žฅ์†Œ์—๋Š” scripts/developer.py ์•„๋ž˜์— ๊ฐœ๋ฐœ์ž UI๊ฐ€ ํ•จ๊ป˜ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค:``` make edits

ํŒจ์น˜๋Š” ์—ฌ๊ธฐ์„œ ํŽธ์ง‘, ์ƒ์„ฑ, ์ œ๊ฑฐ ๋ฐ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

<img src="https://assets.kitploit.com/production/public/readmes/41473/19bffc384c42fb6eb69b3ee59622daed4770cf0f11ffe39401eca57a7d2457f4.png">

### ํŒจ์น˜ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•

1. ๊ฐœ๋ฐœ์ž UI์—์„œ **Reset workspace**๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
2. ํ•„์š”์— ๋”ฐ๋ผ `camoufox-*/` ํด๋”์—์„œ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค. `make build`์™€ `make run`์œผ๋กœ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
3. ๋ณ€๊ฒฝ์ด ์™„๋ฃŒ๋˜๋ฉด **Write workspace to patch**๋ฅผ ํด๋ฆญํ•˜๊ณ  ํŒจ์น˜ ํŒŒ์ผ์„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

### ๊ธฐ์กด ํŒจ์น˜ ์ž‘์—… ๋ฐฉ๋ฒ•

1. ๊ฐœ๋ฐœ์ž UI์—์„œ **Edit a patch**๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
2. ํŽธ์ง‘ํ•  ํŒจ์น˜๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ์ž‘์—… ๊ณต๊ฐ„์ด ์„ ํƒํ•œ ํŒจ์น˜์˜ ์ƒํƒœ๋กœ ์žฌ์„ค์ •๋ฉ๋‹ˆ๋‹ค.
3. ๋ณ€๊ฒฝ์ด ์™„๋ฃŒ๋˜๋ฉด **Write workspace to patch**๋ฅผ ๋ˆ„๋ฅด๊ณ  ๊ธฐ์กด ํŒจ์น˜ ํŒŒ์ผ์„ ๋ฎ์–ด์”๋‹ˆ๋‹ค.

---

## Leak ๋””๋ฒ„๊น…

์ด๊ฒƒ์€ WAF ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋””๋‚œ๋…ํ™”ํ•˜์ง€ ์•Š๊ณ  ๋ˆ„์ˆ˜๋ฅผ ํŒ๋‹จํ•˜๋Š” ์ œ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ์ˆœ์„œ๋„์ž…๋‹ˆ๋‹ค. ์ด ๋ฐฉ๋ฒ•์€ ํ…Œ์ŠคํŠธ ์‚ฌ์ดํŠธ๊ฐ€ ํ”Œ๋ž˜๊ทธ๋ฅผ ํ‘œ์‹œํ•  ๋•Œ๊นŒ์ง€ Camoufox์˜ ๊ธฐ๋Šฅ์„ Firefox ์†Œ์Šค ์ฝ”๋“œ์— ์ ์ง„์ ์œผ๋กœ ๋‹ค์‹œ ๋„์ž…ํ•ฉ๋‹ˆ๋‹ค.

์ด ํ”„๋กœ์„ธ์Šค๋Š” Linux ์‹œ์Šคํ…œ์ด ํ•„์š”ํ•˜๋ฉฐ Firefox ๋นŒ๋“œ ๋„๊ตฌ๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค([์—ฌ๊ธฐ](https://github.com/daijro/camoufox?tab=readme-ov-file#build-cli) ์ฐธ์กฐ).

<details>
<summary>
์ˆœ์„œ๋„ ๋ณด๊ธฐ...
</summary>```mermaid
flowchart TD
    A[Start] --> B[Does website flag in the official Firefox?]
    B -->|Yes| C[Likely bad IP/rate-limiting. If the website fails on both headless and headful mode on the official Firefox distribution, the issue is not with the browser.]
    B -->|No| D["Run make ff-dbg(1) and build(2) a clean distribution of Firefox. Does the website flag in Firefox **headless** mode(4)?"]
    D -->|Yes| E["Does the website flag in headful mode(3) AND headless mode(4)?"]
    D -->|No| F["Open the developer UI(5), apply config.patch, then rebuild(2). Does the website still flag(3)?"]
    E -->|No| G["Enable privacy.resistFingerprinting in the config(6). Does the website still flag(3)?"]
    E -->|Yes| C
    G -->|No| H["In the config(6), enable FPP and start omitting overrides until you find the one that fixed the leak."]
    G -->|Yes| I[If you get to this point, you may need to deobfuscate the Javascript behind the website to identify what it's testing.]
    F -->|Yes| K["Open the developer UI, apply the playwright bootstrap patch, then rebuild. Does it still flag?"]
    F -->|No| J["Omit options from camoufox.cfg(6) and rerun(3) until you find the one causing the leak."]
    K -->|No| M[Juggler needs to be debugged to locate the leak.]
    K -->|Yes| L[The issue has nothing to do with Playwright. Apply the rest of the Camoufox patches one by one until the one causing the leak is found.]
    M --> I

์ธ์šฉ๋œ ๋ช…๋ น์–ด

#๋ช…๋ น์–ด์„ค๋ช…
(1)make ff-dbg์ตœ์†Œ ํŒจ์น˜๋ฅผ ์ ์šฉํ•œ ๊ธฐ๋ณธ Firefox๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
(2)make build์†Œ์Šค ์ฝ”๋“œ๋ฅผ ๋นŒ๋“œํ•ฉ๋‹ˆ๋‹ค.
(3)make run๋นŒ๋“œ๋œ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
(4)make run args="--headless https://test.com"ํ—ค๋“œ๋ฆฌ์Šค ๋ชจ๋“œ๋กœ URL์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ๋ฆฌ๋””๋ ‰์…˜์ด ์ฝ˜์†”์— ์ถœ๋ ฅ๋˜์–ด ํ…Œ์ŠคํŠธ ํ†ต๊ณผ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
(5)make edits๊ฐœ๋ฐœ์ž UI๋ฅผ ์—ฝ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ํŒจ์น˜๋ฅผ ์ ์šฉ/์ทจ์†Œํ•˜๊ณ  ํ˜„์žฌ ์ ์šฉ๋œ ํŒจ์น˜๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
(6)make edit-cfg๊ธฐ๋ณธ ์‹œ์Šคํ…œ ํŽธ์ง‘๊ธฐ๋กœ camoufox.cfg๋ฅผ ํŽธ์ง‘ํ•ฉ๋‹ˆ๋‹ค.

๊ฐ์‚ฌ

๋””๋ธ”๋กœํŒ… ๋ฐ ์ฐธ๊ณ  ์ž๋ฃŒ:

์›น ์Šคํฌ๋ž˜ํ•‘ ๋ฐ ํ…Œ์ŠคํŠธ:

  • riflosnake/HumanCursor: ์›๋ณธ ์ธ๊ฐ„ํ˜• ์ปค์„œ ์ด๋™ ์•Œ๊ณ ๋ฆฌ์ฆ˜, C++๋กœ ํฌํŒ…๋จ
  • CreepJS, Browserleaks, BrowserScan - ์œ ์šฉํ•œ ๋ˆ„์ถœ ํ…Œ์ŠคํŠธ ์‚ฌ์ดํŠธ

UI ํ…Œ๋งˆ:

์นดํ…Œ๊ณ ๋ฆฌ