Skip to content

Commit

Permalink
README: Reformat & add more WebGL info
Browse files Browse the repository at this point in the history
  • Loading branch information
daijro committed Sep 23, 2024
1 parent a6aeb19 commit 809dc52
Showing 1 changed file with 73 additions and 26 deletions.
99 changes: 73 additions & 26 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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()
...
```

</details>
Expand All @@ -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)
Expand Down Expand Up @@ -298,11 +300,56 @@ Camoufox implements WebRTC IP spoofing at the protocol level by modifying ICE ca
</details>
<details>
<summary>
WebGL
</summary>
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`.
</details>
<details>
<summary>
Addons
</summary>
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()
```
<details>
<summary>
Loading addons with the legacy launcher...
</summary>
Addons can be loaded with the `--addons` flag.
Example:
Expand All @@ -321,26 +368,26 @@ You can also exclude default addons with the `--exclude-addons` flag:
</details>
---
</details>
</details>
</details>
<details>
<summary>
Miscellaneous (WebGl spoofing, battery status, etc)
Miscellaneous (battery status, etc)
</summary>
| 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. |
</details>
Expand Down

0 comments on commit 809dc52

Please sign in to comment.