diff --git a/README.md b/README.md index 8fb4d9c..cd4199b 100644 --- a/README.md +++ b/README.md @@ -17,14 +17,13 @@ Camoufox aims to be a minimalistic browser for robust fingerprint injection & an ## Features - Invisible to **all major anti-bot systems** 🎭 -- Fingerprint injection (without JS injection!) ✅ - - Override properties for device, viewport, screen, navigator, etc. ✅ - - Font spoofing & anti-fingerprinting ✅ - - WebRTC IP spoofing ✅ - - Geolocation & timezone spoofing ✅ +- Fingerprint injection & rotation (without JS injection!) ✅ +- Spoof properties of device, viewport, screen, WebGL, battery API, location, etc. ✅ +- Font spoofing & anti-fingerprinting ✅ +- WebRTC IP spoofing ✅ - Blocks & circumvents ads 🛡️ -- Debloated & optimized for memory and speed 🚀 -- [PyPi package](https://pypi.org/project/camoufox/) for updates & fingerprint rotation 📦 +- Debloated & optimized for memory and speed ⚡ +- [PyPi package](https://pypi.org/project/camoufox/) for updates & auto fingerprint injection 📦 - Stays up to date with the latest Firefox version 🕓 ## Sponsors @@ -42,13 +41,14 @@ Using Capsolver in Camoufox 1. Download & extract the [Capsolver Firefox extension](https://github.com/capsolver/capsolver-browser-extension/releases/). 2. Edit `/assets/config.js` in the extracted files (e.g. add API key). See the [config settings](https://docs.capsolver.com/en/guide/extension/settings_for_developers/#configurable-settings). -3. Load the addon in Camoufox with the `--addons` flag: +3. Load the addon in Camoufox: ```py -browser = await pw.firefox.launch( - executable_path='/path/to/camoufox/launch', - args=['--addons', json.dumps(['/path/to/CapSolver-Extension'])], -) +from camoufox.sync_api import Camoufox + +with Camoufox(addons=['/path/to/CapSolver-Extension']) as browser: + page = browser.new_page() + ... ``` @@ -67,6 +67,8 @@ Camoufox is built on top of Firefox/Juggler instead of Chromium because: - Continue research on potential leaks - Integrate into [hrequests](https://github.com/daijro/hrequests) +- Human-like typing & mouse movement +- WebGL fingerprint spoofing through software rendering - Built in TLS fingerprinting protection using [Hazetunnel](https://github.com/daijro/hazetunnel) - Create integration tests - Chromium port (long term) @@ -298,11 +300,56 @@ Camoufox implements WebRTC IP spoofing at the protocol level by modifying ICE ca +
+ +WebGL + + +Camoufox has experimental support for spoofing WebGL properties. + +| Property | Status | Description | +| -------------- | ------ | ----------------------------------------------- | +| webGl:renderer | ✅ | Spoofs the name of the unmasked WebGL renderer. | +| webGl:vendor | ✅ | Spoofs the name of the unmasked WebGL vendor. | + +**Notes:** + +- Spoofing your unmasked WebGL provider does NOT spoof your [WebGL fingerprint](https://scrapfly.io/web-scraping-tools/webgl-fingerprint). **This can cause detection!** +- WebGL is disabled in Camoufox by default. To enable it, set the `webgl.disabled` preference to `false`. + +
+
Addons +In the Camoufox Python library, addons can be loaded with the `addons` parameter: + +```python +from camoufox.sync_api import Camoufox + +with Camoufox(addons=['/path/to/addon', '/path/to/addon2']) as browser: + page = browser.new_page() +``` + +Camoufox will automatically download and use the latest uBlock Origin with custom privacy/adblock filters, and B.P.C. by default to help with ad circumvention. + +You can also exclude default addons with the `exclude_addons` parameter: + +```python +from camoufox.sync_api import Camoufox +from camoufox import DefaultAddons + +with Camoufox(exclude_addons=[DefaultAddons.uBO, DefaultAddons.BPC]) as browser: + page = browser.new_page() +``` + +
+ +Loading addons with the legacy launcher... + + Addons can be loaded with the `--addons` flag. Example: @@ -321,26 +368,26 @@ You can also exclude default addons with the `--exclude-addons` flag:
+--- + +
+ + +
-Miscellaneous (WebGl spoofing, battery status, etc) +Miscellaneous (battery status, etc) -| Property | Status | Description | -| ----------------------- | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------- | -| pdfViewer | ✅ | Sets navigator.pdfViewerEnabled. Please keep this on though, many websites will flag a lack of pdfViewer as a headless browser. | -| webGl:renderer | ✅ | Spoofs the name of the unmasked WebGL renderer. Can cause leaks, use at your own caution! Also note, webGl is disabled in Camoufox by default. | -| webGl:vendor | ✅ | Spoofs the name of the unmasked WebGL vendor. Can cause leaks, use at your own caution! Also note, webGl is disabled in Camoufox by default. | -| battery:charging | ✅ | Spoofs the battery charging status. | -| battery:chargingTime | ✅ | Spoofs the battery charging time. | -| battery:dischargingTime | ✅ | Spoofs the battery discharging time. | -| battery:level | ✅ | Spoofs the battery level. | - -**Notes:** - -- For screen properties, using Page.setViewportSize() may be more effective. +| Property | Status | Description | +| ----------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------- | +| pdfViewer | ✅ | Sets navigator.pdfViewerEnabled. Please keep this on though, many websites will flag a lack of pdfViewer as a headless browser. | +| battery:charging | ✅ | Spoofs the battery charging status. | +| battery:chargingTime | ✅ | Spoofs the battery charging time. | +| battery:dischargingTime | ✅ | Spoofs the battery discharging time. | +| battery:level | ✅ | Spoofs the battery level. |