
camoufox v152.0.4-beta.29
ðŠ ã¢ã³ãæ€åºãã©ãŠã¶
Camoufox
Camoufoxã¯ããŠã§ãã¹ã¯ã¬ã€ãã³ã°ãšAIãšãŒãžã§ã³ãã®ããã«æ§ç¯ããããªãŒãã³ãœãŒã¹ã®ã¢ã³ããã£ãã¯ããã©ãŠã¶ã§ããðŠ
â ïž ãã®ãããžã§ã¯ãã¯éçºäžã§ããå®å®ããæ¬çªç°å¢ã§ã®äœ¿çšã«ã¯é©ããªãå¯èœæ§ããããŸãã â ïž
[!NOTE] ææ°ã®ããã¥ã¡ã³ãã¯ãã¹ãŠcamoufox.comã§å ¥æã§ããŸãã
[!NOTE] ãã©ãŠã¶ã®éçºã¯github.com/CloverLabsAI/camoufoxãšgithub.com/VulpineOS/VulpineOSã§æŽ»çºã«è¡ãããŠããŸãã
ãã®ãªããžããªã¯ãã§ãã¯ãã€ã³ããªãªãŒã¹ãããŒãžããããã«äœ¿çšãããŠããããã¹ã¿ãŒã³ããŒãšããŠæ±ãå¿ èŠããããŸãã
ã¹ãã³ãµãŒ
ãã¹ãŠè¡šç€º/æãããã
| Scrapflyã¯ãå®éã®ãã©ãŠã¶ã¬ã³ããªã³ã°ãããŒããŒã·ã§ã³ãããã·ããã£ã³ã¬ãŒããªã³ãïŒTLSãHTTPããã©ãŠã¶ïŒã管çãããã¹ãŠã®äž»èŠãªã¢ã³ãããããåé¿ããããšã§ã¹ã¯ã¬ã€ãã³ã°ããã»ã¹ãç°¡çŽ åãããšã³ã¿ãŒãã©ã€ãºã°ã¬ãŒãã®Webã¹ã¯ã¬ã€ãã³ã°APIãœãªã¥ãŒã·ã§ã³ã§ããScrapflyã¯ãŸããåæããã·ã¥ããŒããæäŸããæåç/ãããã¯çãè©³çŽ°ã«æž¬å®ããããšã§å¯èŠ³æž¬æ§ãå®çŸããŸãã |
| Clover Labsã¯ãæé·ãšæµéã®ããã®AIãšãŒãžã§ã³ããæ§ç¯ããããã³ããæ ç¹ãšãããã³ãã£ãŒã¹ã¿ãžãªã§ãã |
| SerpApiãWebæ€çŽ¢APIã¯ãã·ã³ãã«ãªAPIã§Googleããã®ä»ã®æ€çŽ¢ãšã³ãžã³ãã¹ã¯ã¬ã€ãã³ã°ããŸãã |
|
Talordataã¯ãäœã³ã¹ãã§Googleãä»ã®æ€çŽ¢ãšã³ãžã³ãã¹ã¯ã¬ã€ãã³ã°ããããã®ã·ã³ãã«ãªWebæ€çŽ¢APIã§ããç»é²æã«1,000ä»¶ã®ç¡æãªã¯ãšã¹ããåŸãããæåã¬ã¹ãã³ã¹1,000ä»¶ãããããã0.25ãã«ã§ã倱æããã¹ã¯ã¬ã€ãã³ã°ã«ã¯æéã¯çºçããŸããã ã¯ãŒãã³ã³ãŒã CAMOUFOX ã䜿çšãããšãã¬ãžãã³ã·ã£ã«ãããã·ã10%OFFã«ãªããŸãã[Discord] |
|
ã¢ã³ãããããçãå»¶ã³ãWebããŒã¿ã Crawlbaseã¯ãéçºè ãšAIããŒã ã«å€§èŠæš¡ãªä¿¡é Œæ§ã®é«ãããŒã¿ãæäŸããŸããæåç99%ã®ã¯ããŒã©ãŒãã¯ããŒãªã³ã°APIãã¹ããŒãAIãããã·ãWeb MCPãµãŒããŒãåããŠãããã¹ã¯ã¬ã€ããŒããšãŒãžã§ã³ããå£ããã®ãé²ããŸããããªãã¯æ§ç¯ããç§ãã¡ãã€ã³ãã©ãæ åœããŸãã ã³ãŒã CAMOUFOX ã§æåã®3ã¶æé15%ãªã â crawlbase.com |
| Scrappeyã¯ãæåããã¹ã¯ã¬ã€ãã³ã°ã®ã¿ã«èª²éãããåŸéå¶ïŒãµãã¹ã¯ãªãã·ã§ã³äžèŠïŒã®Webã¹ã¯ã¬ã€ãã³ã°APIã§ããè€éãªãµã€ããã¹ã¯ã¬ã€ãã³ã°å¯èœãã¬ãžãã³ã·ã£ã«ãããã·èŸŒã¿ãé ãããããã·æéãæå¹æéåãã®æ®é«ã¯ãããŸãããçŽæ¥HTTPããã«ãã©ãŠã¶ã¬ã³ããªã³ã°ãJavaScriptãããŒããŒãžãã¹ã¯ãªãŒã³ã·ã§ãããã»ãã·ã§ã³ã30以äžã®ãã©ãŠã¶ã¢ã¯ã·ã§ã³ãäžåºŠã«200以äžã®åæã»ãã·ã§ã³ã«å¯Ÿå¿ããåäžã®APIã§ã1000人以äžã®éçºè ãšAIãšãŒãžã§ã³ãã«ä¿¡é ŒãããŠããŸããã³ãŒãCAMOUFOXã§10%ãªãã |
ãããã·ãããã€ããŒ
Camoufoxã¯ãããŒããŒã·ã§ã³ãããã·ïŒã§ããã°ã¬ãžãã³ã·ã£ã«IPïŒãšäžç·ã«äœ¿çšããããšãæ³å®ããŠããŸãã以äžã®ãããã€ããŒããã§ãã¯ããŠãã ããïŒ
|
ð Camoufox à ProxyEmpire Camoufoxã䜿ã£ãŠããŸããïŒãããã·å±€ãã¹ã±ãŒã«ã§ãããããããã¯ããããã®åããéã§ãã ProxyEmpireãæäŸãããã®ïŒ ⢠ð 3,000äžä»¥äžã®ã¬ãžãã³ã·ã£ã«IPïŒ170ãåœä»¥äžïŒ ⢠ð± 4G/5Gã¢ãã€ã«ããã㷠⢠ð ããŒããŒã·ã§ã³ïŒã¹ãã£ãããŒã»ãã·ã§ã³ ⢠⡠ç¡å¶éã®åæã»ãã·ã§ã³ â¢ ð¯ æ£ç¢ºãªãžãªã¿ãŒã²ãã£ã³ã° ⢠HTTPãHTTPSãSOCKS5å¯Ÿå¿ ã¹ã¯ã¬ã€ãã³ã°ãèªååãé«ã¹ãã«ã¹ã¯ãŒã¯ãããŒåãã«æ§ç¯ãããŠããŸãã ð¥ éå®ãªãã¡ãŒ - ã³ãŒã Camoufox30 ãäœ¿çš 30%ã®ç¶ç¶å²åŒïŒåæã ãã§ãªãïŒãå ¥æããããã·ãã¢ããã°ã¬ãŒãããçŠæ¢ãæžãããé©åã«ã¹ã±ãŒã«ããŸãããã |
|
ããã«ã¡ã¯ããããã·ã¯è€éã ã£ããé«ããããããã¹ãã§ã¯ãªããšèããŠBirdProxiesãæ§ç¯ããŸããã195ãæä»¥äžã®é«éã¬ãžãã³ã·ã£ã«ããã³ISPãããã·ãå
¬æ£ãªäŸ¡æ Œèšå®ãå®éã®ãµããŒããæäŸããŠããŸãã ã©ã³ãã£ã³ã°ããŒãžã®FlappyBirdã²ãŒã ã§ç¡æããŒã¿ãã詊ããã ããïŒ ä»ãã詊ã | Discord |
|
RapidProxy - ãã¬ãã¢ã ãããã·ã§ããªãã®ããŒã¿ã匷åã ð ãããã·ãç¡æã§ã詊ã + ã³ãŒã RAPID10 ã§10%OFF RapidProxyãéžã¶çç±ïŒ ⢠ð 200ãåœã»å°åã§9,000äžä»¥äžã®IP ⢠âŸïž ãã©ãã£ãã¯ã«æå¹æéãªã â ãã€ã§ã䜿çšå¯èœããã¬ãã·ã£ãŒãªã â¢ ð¥ æé«ã®ããã©ãŒãã³ã¹ã®ããã®ç¡å¶éåææ¥ç¶ ⢠ð° ããã$0.65/GBãã â ã¹ã±ãŒã«ã«æé© â¢ ð æ£ç¢ºãªå°ççã¢ã¯ã»ã¹ã®ããã®åžçºæã¬ãã«ã®ã¿ãŒã²ãã£ã³ã° ⢠ð ããŒãºã«åãããæè»ãªã»ãã·ã§ã³å¶åŸ¡ ãèŠéããªã â ä»ããç¡æãã©ã€ã¢ã«ãéå§ããŠãRapidProxyã®é«éã§å®å®ããã¹ã±ãŒã©ãã«ãªãããã·ããã©ãŒãã³ã¹ãäœéšããŠãã ããã |
|
Swiftproxy - å€§èŠæš¡ããŒã¿åéã®ããã®é«æ§èœã¬ãžãã³ã·ã£ã«ãããã· ä¿¡é Œæ§ã®é«ãã¢ã³ããã£ãã¯ã·ã§ã³ãããã·ã€ã³ãã©ãå¿ èŠãšããéçºè åãã«æ§ç¯ãããŠããŸããSwiftproxyã¯ãå€§èŠæš¡ãªã¹ã¯ã¬ã€ãã³ã°ãšèªååã®ããã®å®å®ããæ¥ç¶ãé«ãæåçãæè»ãªå¶åŸ¡ãæäŸããŸãã ⢠ð å«ççã«èª¿éãããã¬ãžãã³ã·ã£ã«IPã§195ãæä»¥äžã®ãã±ãŒã·ã§ã³ â¢ ð æ£ç¢ºãªãžãªã¿ãŒã²ãã£ã³ã°ã«ããããŒããŒã·ã§ã³ããã³ã¹ãã£ãããŒã»ãã·ã§ã³ ⢠⡠ã¢ã³ããã³ããã³é«æåçã«æé©å ⢠ð HTTP / HTTPS / SOCKS5å¯Ÿå¿ â¢ ð§ª ãã¹ãçšã®500MBç¡æãã©ã€ã¢ã« ⢠ðž CamoufoxãŠãŒã¶ãŒåãç¹å¥å²åŒã³ãŒã: PROXY90 - 10% æé©ãªçšé: Webã¹ã¯ã¬ã€ãã³ã°ãèªååããã«ãã¢ã«ãŠã³ãã£ã³ã°ãå€§èŠæš¡ããŒã¿æœåº |
|
MangoProxyã¯ãå®å®æ§ãé床ãå¿åæ§ãéèŠãšãªããããã§ãã·ã§ãã«ãªã¿ã¹ã¯åãã«èšèšãããã¬ãžãã³ã·ã£ã«ãISPãã¢ãã€ã«ãããŒã¿ã»ã³ã¿ãŒãããã·ãµãŒãã¹ã§ãã ã³ãŒã DAIJRO ã䜿çšãããšISPåºå®ãããã·ã8%OFFã«ãªããŸãã |
|
9Proxyã¯ãããã$0.018/IPãŸãã¯$0.68/GBããã®ã¬ãžãã³ã·ã£ã«ãããã·ãæäŸããŠããŸãã90ãåœä»¥äžã§2,000äžä»¥äžã®IPããã¹ã¯ããããŸãã¯ã¢ãã€ã«ã¢ããªãã管çå¯èœãªã¹ãã£ãããŒãŸãã¯ããŒããŒã·ã§ã³ã»ãã·ã§ã³ã |
|
NodeMaven: åžå Žã§æé«å質ã®IPãæäŸããæãä¿¡é Œæ§ã®é«ããããã·ãããã€ããŒã èªååãWebã¹ã¯ã¬ã€ãã³ã°ãSEO調æ»ããœãŒã·ã£ã«ã¡ãã£ã¢ç®¡çã«æé©ãªãœãªã¥ãŒã·ã§ã³ã NodeMavenãæäŸãããã®ïŒ ⢠æå€§7æ¥éã®ã¹ãã£ãããŒã»ãã·ã§ã³ ⢠99.9%ã®çšŒåç ⢠IPãã£ã«ã¿ãªã³ã°: ãã¹ãŠã®ãããã·ã®ãã©ããã¹ã³ã¢ã97%æªæº ⢠KYCäžèŠ â¢ ãã©ãã£ãã¯ã®ãã£ãã·ã¥ãã㯠â GBãæ¶è²»ããŠæå€§10%ã®éå ç¹å¥ãªãã¡ãŒ: ã³ãŒã CAMOUFOX35 ã䜿çšãããšãããã·ã35%å²åŒã«ãªããŸãã |
|
Proxidize | Camoufoxã®ããã®ã¢ãã€ã«ããã³ã¬ãžãã³ã·ã£ã«ãããã· å€§èŠæš¡ã«Camoufoxãå®è¡ããŠããŸããïŒãã©ãŠã¶ã®ã»ããã¢ããã¯ã¹ã¿ãã¯ã®ååã«éããŸããããããã·å±€ãéèŠã§ãã Proxidizeã¯ãã¹ã¯ã¬ã€ãã³ã°ããã©ãŠã¶èªååãSEOç£èŠãAIãšãŒãžã§ã³ããããŒã¿åéã¯ãŒã¯ãããŒåãã«æ§ç¯ãããã¢ãã€ã«ããã³ã¬ãžãã³ã·ã£ã«ãããã·ãæäŸããŸãã Proxidizeã®çç± â¢ å®éã®4Gããã³5Gã¢ãã€ã«ããã㷠⢠195ãåœä»¥äžã®ã¬ãžãã³ã·ã£ã«ããã㷠⢠ããŒããŒã·ã§ã³ããã³ã¹ãã£ãããŒã»ãã·ã§ã³ ⢠åžçºæã¬ãã«ããã³ãã£ãªã¢ã¿ãŒã²ãã£ã³ã° ⢠ç¡å¶éã®åææ¥ç¶ â¢ HTTP(S)ãSOCKS5ãSOCKSäžã®UDPå¯Ÿå¿ â¢ ããŒããŠã§ã¢ãDIYã»ããã¢ããäžèŠ ããã€ã¹ããµãŒããŒããããã·ããŒããŒã·ã§ã³ãèªåã§ç®¡çããããšãªããä¿¡é Œæ§ã®é«ããããã·ã€ã³ãã©ãå¿ èŠãšããããŒã åãã«æ§ç¯ãããŠããŸãã CamoufoxãŠãŒã¶ãŒåãç¹å¥ãªãã¡ãŒ: ã³ãŒã CAMOUFOX20 ã§20%ãªãã ä»ããéå§: https://proxidize.com |
ã¯ããã«
Camoufoxã¯ããŠã§ãã¹ã¯ã¬ã€ãã³ã°ãšAIãšãŒãžã§ã³ãã®ããã«èšèšãããFirefoxã®ãã©ãŒã¯ã§ãããããã¬ã¹ã§ãæ€åºäžå¯èœã§ãããå€§èŠæš¡ã«å®è¡ããããã«æé©åãããŠããŸããå®è¡ã®ãã³ã«ãå®éã®ããã€ã¹ã®ååžããæ°ããã¢ã€ãã³ãã£ãã£ãååŸãããããéåžžã®ãã©ãã£ãã¯ã«æº¶ã蟌ã¿ãç®ç«ã€ããšã¯ãããŸããã
ãã€ã©ã€ã
- AIãšãŒãžã§ã³ãåãã«æ§ç¯ ð€
- æå°éã§ããããŒãåãããFirefox - èµ·åãéããäœã³ã¹ãã§åäœ
- Pythonã€ã³ã¿ãŒãã§ãŒã¹ãä»ããããããã€ã³Playwrightäºææ§
- ã¢ã³ããããã·ã¹ãã ããèŠããªãããããšãŒãžã§ã³ãã¯ã©ã¹ã¿ãŒãããŒã«ã«ãŸãã¯ã¯ã©ãŠãã§å®è¡ããŠããã©ã°ãç«ãŠãããŸãã
- èšèšäžæ€åºäžå¯èœ ð
- ããŒãžèªååãJavaScriptã®æ€æ»ããé èœãããŸãã詳现ã¯ã¹ãã«ã¹ããŒãžãã芧ãã ããã
- ãã£ã³ã¬ãŒããªã³ã泚å
¥ãšããŒããŒã·ã§ã³ (JS泚å
¥äžèŠïŒ)
- ãã¹ãŠã®ããã²ãŒã¿ããããã£ïŒããã€ã¹ã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ã³ãŒããšäºææ§ããããŸãããã©ãŠã¶ã®åæåã倿Žããã ãã§æžã¿ãŸãã
**åæ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/) ããã±ãŒãžã䜿çšããŠãã ããããã®ããã±ãŒãžã¯ãªãªãŒã¹ã®ãã³ã«æŽæ°ãããŸãããå
¬åŒããã±ãŒãžã¯é
å»¶ããŠãªãªãŒã¹ãããŸãã
2ã€ã®ããã±ãŒãžéã®ç«¶åãé¿ãããããä»®æ³ç°å¢ã䜿çšããŠããããšã確èªããŠãã ããã
**ã€ã³ã¹ããŒã«**```bash
pip install cloverlabs-camoufox
ææ°ã®ãã¬ãªãªãŒã¹ãã©ãŠã¶ãååŸ (ææ°ã®ãããã«æšå¥š)```bash python -m camoufox sync python -m camoufox set official/prerelease python -m camoufox fetch
**Usage** â 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`ïŒv149ïœv152ãã«ããŒãã312ã®ããªã»ãããmacOS 67 / Windows 180 / Linux 65ïŒãèªã¿èŸŒã¿ãŸããå€ããã€ããªã¯å
ã®ãã³ãã«ã«ãã©ãŒã«ããã¯ããŸããUAæååã¯ã¢ã¯ãã£ããªãã€ããªã«äžèŽããããã«æžãæããããããããªããã€ã³ã¯ããŒãžã§ã³éã§å®å
šã§ããç¹å®ã®ãã£ã³ã¬ãŒããªã³ããåºå®ããã«ã¯ã`True` ã®ä»£ããã«ããªã»ããèŸæžãæž¡ããŠãã ããã
---
## æ©èœ
以äžã¯ãCamoufox ã«å®è£
ãããŠããããããšæ©èœã®ãªã¹ãã§ãã
### ãã£ã³ã¬ãŒããªã³ãåœè£
- Navigator ããããã£ã®åœè£
ïŒããã€ã¹ããã©ãŠã¶ããã±ãŒã«ãªã©ïŒ
- ç»é¢ãµã€ãºãè§£å床ãªã©ã®ãšãã¥ã¬ãŒã·ã§ã³ã®ãµããŒã
- WebGL ãã©ã¡ãŒã¿ããµããŒããããŠããæ¡åŒµæ©èœãã³ã³ããã¹ã屿§ãã·ã§ãŒããŒç²ŸåºŠãã©ãŒãããã®åœè£
- å
éšããã³å€éšãŠã£ã³ããŠã®ãã¥ãŒããŒããµã€ãºã®åœè£
- AudioContext ã®ãµã³ãã«ã¬ãŒããåºåã¬ã€ãã³ã·ãæå€§ãã£ã³ãã«æ°ã®åœè£
- ããã€ã¹ã®é³å£°ãšåçã¬ãŒãã®åœè£
- å©çšå¯èœãªãã€ã¯ãWebã«ã¡ã©ãã¹ããŒã«ãŒã®æ°ã®åœè£
- ãããã¯ãŒã¯ããããŒïŒAccept-Languages ãš User-AgentïŒã¯ãnavigator ããããã£ãšäžèŽããããã«åœè£
ãããŸã
- ãããã³ã«ã¬ãã«ã§ã® WebRTC IP åœè£
- å°çäœçœ®æ
å ±ãã¿ã€ã ãŸãŒã³ããã±ãŒã«ã®åœè£
- Battery API ã®åœè£
- ãªã©
### ã¹ãã«ã¹ããã
- ã¡ã€ã³ã¯ãŒã«ãå®è¡ã®æŒæŽ©ãåé¿ããã¹ãŠã®ããŒãžãšãŒãžã§ã³ã JavaScript ã¯ãµã³ãããã¯ã¹åãããŠããŸã
- ãã¬ãŒã å®è¡ã³ã³ããã¹ãã®æŒæŽ©ãåé¿
- `navigator.webdriver` æ€åºãä¿®æ£
- ãã€ã³ã¿ã¿ã€ããä»ãã Firefox ãããã¬ã¹æ€åºãä¿®æ£ïŒ[#26](https://github.com/daijro/camoufox/issues/26)ïŒ
- æœåšçã«æŒæŽ©ããã¢ã³ããºãŒã /ã¡ã¿ãã¥ãŒããŒãåŠçããããåé€
- ããã©ã«ã以å€ã®ç»é¢ïŒãŠã£ã³ããŠãµã€ãºã䜿çš
- fission ã³ã³ãã³ãåé¢ãåæå¹å
- 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 ãããããã«ã«å®è¡ããããã®çµã¿èŸŒã¿ä»®æ³ãã£ã¹ãã¬ã€ãããã¡
- ç»åèªã¿èŸŒã¿ãWebRTCãWebGL ã®åãæ¿ã
- ãªã©
> [!NOTE]
> Camoufox 㯠Chromium ãã£ã³ã¬ãŒããªã³ãã®æ³šå
¥ãå®å
šã«ãµããŒãããŠããããã§ã¯ãããŸãããäžéšã® WAFïŒ[Interstitial](https://nopecha.com/demo/cloudflare) ãªã©ïŒã¯ Spidermonkey ãšã³ãžã³ã®åäœããã¹ããããããåœè£
ã¯äžå¯èœã§ãã
---
# ã¹ãã«ã¹ã®æŠèŠ
## Camoufox ãèªååã©ã€ãã©ãªãé ãæ¹æ³
> [!WARNING]
> **2026幎çŸåšã®ç¶æ³**:
> å人çãªäºæ
ã«ãã1幎éã¡ã³ããã³ã¹ãäžæãããŠããŸãããããŒã¹ã® Firefox ããŒãžã§ã³ãšæ°ãã«çºèŠããããã£ã³ã¬ãŒããªã³ãã®äžæŽåã«ãããCamoufox ã®ããã©ãŒãã³ã¹ã¯äœäžããŠããŸãã**Camoufox ã¯çŸåšæŽ»çºã«éçºäžã§ãã**
Camoufox ã§ã¯ãPlaywright ã®å
éš Page Agent ã®ã³ãŒãã¯ãã¹ãŠãµã³ãããã¯ã¹åããéé¢ãããŠããŸããããã«ãããããŒãžã JavaScript æ€æ»ãéã㊠Playwright ã®ååšãæ€åºããããšã¯äžå¯èœã«ãªããŸãã
éåžžãPlaywright 㯠`window.__playwright__binding__` ãªã©ã® JavaScript ãããŒãžã«æ³šå
¥ããèŠçŽ ã®ã¯ãšãªãJavaScript ã®è©äŸ¡ãinit ã¹ã¯ãªããã®å®è¡ãªã©ã®ã¢ã¯ã·ã§ã³ãå®è¡ããŸããããããã¯ãŠã§ããµã€ãã«ãã£ãŠæ€åºãããå¯èœæ§ããããŸãã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's HumanCursor](https://github.com/riflosnake/HumanCursor) ã®ãã®ã§ãããC++ ã§æžãçŽãããããè·é¢ãæèããè»éã«å€æŽãããŠããŸãã
ããããããã¯å®ç§ã§ã¯ãããŸãããååã«æŽç·Žãããåæãããã°ãäŸç¶ãšããŠæ€åºãããå¯èœæ§ããããŸããïŒå°æ¥ã®èª²é¡ïŒ
---
## Camoufox ãã¢ã€ãã³ãã£ãã£ãããŒããŒã·ã§ã³ããæ¹æ³
AI ãšãŒãžã§ã³ãã¯ã倿°ã®ã»ãã·ã§ã³ã«ããã£ãŠãã©ã°ãã¬ãŒãå¶éãåããã«åäœããå¿
èŠããããŸããIP ã¢ãã¬ã¹ãããŒããŒã·ã§ã³ããã ãã§ã¯ååã§ã¯ãããŸããããã©ãŠã¶ã»ãã·ã§ã³ããšã«äœåãã®ã·ã°ãã«ãéä¿¡ãããåºæã® **ãã£ã³ã¬ãŒããªã³ã** ãçæãããŸãããŠã§ããµã€ã㯠OSãGPUãç»é¢è§£å床ããã©ã³ããã¿ã€ã ãŸãŒã³ãªã©ã確èªã§ããŸãããããã®ã·ã°ãã«ã«äžè²«æ§ããªãã£ããç°åžžããã£ãããããšããããã¯ãããŸãã
### åžå Žã·ã§ã¢ååž
å®è¡äžã®åãããã€ã³ã¹ã¿ã³ã¹ã«å¯Ÿã㊠IP ãããŒããŒã·ã§ã³ããŠããŠããWeb ã¢ã¯ã»ã¹ãã¡ã€ã¢ãŠã©ãŒã«ã¯æ©æ¢°åŠç¿ã䜿çšããŠåä¿¡ Web ãã©ãã£ãã¯ãåæããç°åžžãã©ãããæ€åºã§ããŸããLinux ã®åžå Žã·ã§ã¢ã 5% ã ã£ãã®ã«ãçªç¶ 20% ã«ãªãã°ãã¬ãããã©ã°ã§ãããã®å Žåããã¹ãŠã® Linux ãŠãŒã¶ãŒã«ãã£ããã£ã®å®äºãç¡æ¡ä»¶ã«èŠæ±ãããŸãã
Camoufox 㯠[BrowserForge](https://github.com/daijro/browserforge) ã®ãã£ã³ã¬ãŒããªã³ããžã§ãã¬ãŒã¿ãŒã䜿çšããŠãå®éã®ãã©ãã£ãã¯ã«ãããããã€ã¹ããŒã¿ã®çµ±èšçååžãæš¡å£ããŸããäŸãã°ãCamoufox ã¯ãã©ãŠã¶ã 5% ã®ç¢ºçã§ Linux ãŠãŒã¶ãŒã®ããã«èŠããããŸãããã® 5% ã®ãã¡ã9.5% ã®ç¢ºçã§ 2560x1440 ã®ç»é¢è§£å床ã27.5% ã®ç¢ºçã§ Intel HD GPU ãåœè£
ããŸãã
### Camoufox ã¯ã©ã®ããã«æ€åºãããã®ãïŒ
Camoufox ã¯æ£ããåžå Žã·ã§ã¢ã§ãã£ã³ã¬ãŒããªã³ããåœè£
ã§ããŸãããããã**ãã£ã³ã¬ãŒããªã³ãã¯å
éšçã«ãäžè²«ããŠããå¿
èŠããããŸãã** Apple M1 GPU ãæèŒãã Windows ãŠãŒã¶ãŒãšãŒãžã§ã³ããWindows DirectX ã¬ã³ãã©ãŒãæèŒãã MacOS ãŠãŒã¶ãŒãšãŒãžã§ã³ãããã¹ã¯ãããç»é¢è§£å床ã®ã¢ãã€ã«ããã€ã¹ã¯ãã¹ãŠäžå¯èœã§ãããäžå¯©ãšããŠãã©ã°ãç«ãŠãããŸãã
ä¿¡é Œã§ããåœè£
ãã£ã³ã¬ãŒããªã³ããäœæããããã«å€æŽããå¿
èŠãããæ°åã®ããŒã¿ãã€ã³ãã®ãã¡ãå倿Žãä»ã®å€æŽãšäžè²«ããŠããå¿
èŠãããå ŽåãCamoufox ã¯åžžã«æåãããšã¯éããŸãããã¢ã³ãããããããã€ããŒã¯ããã£ã 1 ã€ã®ãŠããŒã¯ãªäžæŽåãèŠã€ããããã«äœåºŠã Camoufox ããã¹ãããèŠã€ãããšããã«ããã¯ã°ã©ãŠã³ãã¹ã¯ãªãããæŽæ°ããŠããããã¹ãããŸãã
---
## Camoufox ã¯ä»ã®ãœãªã¥ãŒã·ã§ã³ãšæ¯ã¹ãŠã©ãã§ããïŒ
### JavaScript ããŒã¹ã®ãœãªã¥ãŒã·ã§ã³
ãããŸã§ãéçºè
㯠JavaScript ãæ³šå
¥ããŠãããã®å€ãåœè£
ããããšè©Šã¿ãŠããŸããããJavaScript ã§ãã¹ãŠãåœè£
ã§ããããã§ã¯ãªããããä¿¡é Œæ§ãäœããªããŸããã«ãã¬ããžãäžå®å
šã ãšãäžè²«æ§ã®ãªããã£ã³ã¬ãŒããªã³ããçºçããŸããäŸãã°ããããã¯ãŒã¯ãªã¯ãšã¹ãã® User Agent ã navigator ã® User Agent ãšäžèŽããªãå Žåãã¢ã³ããããã·ã¹ãã ã¯ãã©ã°ãç«ãŠãŸãã
ããã«ã泚å
¥ããã JavaScript ã¯ãã¹ãŠäœããã®åœ¢ã§æ€åºå¯èœã§ããã¢ã³ããããã·ã¹ãã ã¯ã`Object.getOwnPropertyDescriptor` ãäžæžããããããããã£ãæããã«ãããã©ããã颿°ã® `toString()` ã `[native code]` ãè¿ããªããªã£ããã©ããïŒä¹ã£åãããããšã倿ïŒããŸãã¯ãŠã£ã³ããŠã³ã³ããã¹ãã®ããŒã¿ãã¯ãŒã«ãŒã¹ã¬ããã³ã³ããã¹ããšäžèŽããªããã©ããããã§ãã¯ã§ããŸããåé¿çã«ã¯éçããããŸãããååã«æ·±ã調æ»ããã°ã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 ã¯ç¬èªã®ããŒãžã§ã³ã®ããŒãžãèªç±ã«èªã¿åããç·šéã§ããŸããPlaywright ã«ãšã£ãŠã¯ãã¹ãŠãæ£åžžã«åäœããŠããããã«èŠããŸãããå®éã®ããŒãžã¯ãããã®å€æŽã®åœ±é¿ããŸã£ããåããŸããããŸããããŒãžã¯ïŒgetter ã®ä¹ã£åããªã©ã®ããªãã¯ã«ãã£ãŠïŒèªã¿åããè¡ãããŠããããšããèŠçŽ ãç£èŠãããªã¹ããŒã远å ãããŠããããšãæ€åºã§ããŸããã
ããã«ãJuggler ã¯å
¥åã Firefox ã®ãªãªãžãã«ã®ãŠãŒã¶ãŒå
¥åãã³ãã©ãŒã«çŽæ¥éä¿¡ãããããéåžžéããã©ãŠã¶ã䜿çšããŠããå ŽåãšãŸã£ããåãæ¹æ³ã§åŠçãããŸããCamoufox 㯠Firefox ã®ãããã¬ã¹ã¢ãŒãã«ãããããé©çšããéåžžã®ãŠã£ã³ããŠã§å®è¡ãããŠããå Žåãšåãããã«èŠããããŸãããã ãããã©ãŒã«ããã¯ãšããŠããããã¬ã¹ã¢ãŒããæŒæŽ©ããå Žåã«åããŠãPython ã©ã€ãã©ãªã¯ [ä»®æ³ãã£ã¹ãã¬ã€](https://camoufox.com/python/virtual-display/) äžã§ Camoufox ãå®è¡ã§ããŸãã
---
<h1 align="center">ãã«ãã·ã¹ãã </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
ããŒãã¹ãã©ããã®åã«ããã«ããŒ
ã¹ã¯ãªããã ãã©ãããã©ãŒã ãæ€åºãããã«ãã«å¿
èŠãªãã¹ãŠã®ãã®ãã€ã³ã¹ããŒã«ããŸã
(Python ⥠3.11, Rust, aria2, p7zip, go, msitools, wget, sqliteãããã³
ã³ã¢ãã«ãããŒã«)ãé©åãªããã±ãŒãžãããŒãžã£ãŒã䜿çšã㊠â macOSã§ã¯Homebrewã
ãŸãã¯Linuxã§ã¯apt/dnf/pacman:```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ã䜿çšããŠãã«ãã§ããŸãã
- 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** ãã¯ãªãã¯ããæ¢åã®ããããã¡ã€ã«ãäžæžãããŸãã
---
## ãªãŒã¯ãããã°
ããã¯ãWAFã®JavaScriptãé£èªåè§£é€ããã«ãªãŒã¯ãç¹å®ããããã®ããã»ã¹ã瀺ããããŒãã£ãŒãã§ãããã®æ¹æ³ã§ã¯ããã¹ããµã€ãããã©ã°ãç«ãŠããŸã§ã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
Cited Commands
| # | Command | Description |
|---|---|---|
| (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ãç·šéããŸãã |
Thanks
ããããŒãã£ã³ã°ãšåèæç®:
- LibreWolf: ããããŒãããããšãã«ãã·ã¹ãã ã®ã€ã³ã¹ãã¬ãŒã·ã§ã³
- BetterFox: ã¹ããŒããšããããŒãã®èšå®
- Ghostery: ããããŒãã®åèïŒãªã³ããŒãã£ã³ã°ã®ç¡å¹åïŒ
Webã¹ã¯ã¬ã€ãã³ã°ãšãã¹ã:
- riflosnake/HumanCursor: ãªãªãžãã«ã®äººéãããã«ãŒãœã«ç§»åã¢ã«ãŽãªãºã ãC++ã«ç§»æ€
- CreepJSãBrowserleaksãBrowserScan - 䟡å€ã®ãããªãŒã¯ãã¹ããµã€ã
UIããŒã:
- Jamir-boop/minimalisticfox: Camoufoxã®ãããã«CSSããŒãã®ã€ã³ã¹ãã¬ãŒã·ã§ã³å (ãªã³ã¯)