Skip to main content

Anti-detection scraping & automation framework

Project description

๐Ÿฆ… Horus

Anti-detection scraping & automation framework.
Supports Windows / Linux / macOS / Android (Termux).


Installation

pip install horus-antidetect

# Or with browser automation support:
pip install "horus-antidetect[all]"

# After install, update browser fingerprints:
python -m browserforge update

Quick Start

Simple API

import horus

# GET request
r = horus.get("https://example.com")
print(r.status_code, r.text)

# POST request
r = horus.post("https://httpbin.org/post", json={"key": "value"})

# Check detection status
horus.check()

Advanced API

from horus import Horus

h = Horus(
    proxy="http://user:pass@host:port",
    impersonate="chrome124",
    stealth=True,
    speed="human",
)

r = h.get("https://example.com")
print(r.status_code)

# Check IP
print(h.ip())

# Check TLS fingerprint
print(h.tls())

Browser Automation (non-Android only)

ู…ู„ุญูˆุธุฉ: ูƒู„ ู…ูŠุซูˆุฏุฒ ุงู„ู€ behavioral (click, type, scroll_down, scroll_up, scroll_to) sync ุจุงู„ูƒุงู…ู„ โ€” ู…ุชูˆุงูู‚ุฉ ู…ุน camoufox.sync_api. ู…ููŠุด ุญุงุฌุฉ ู…ุญุชุงุฌุฉ asyncio ููŠ ุงู„ุฅุตุฏุงุฑ ุฏู‡.

import horus

# Simple
with horus.browse("https://example.com") as b:
    b.open("https://example.com")
    b.click("#login-btn")
    b.type("#username", "myuser")
    b.type("#password", "mypass")
    b.scroll_down(300)
    html = b.html()
    b.screenshot("page.png")
# Advanced
from horus import Horus

with Horus(proxy="http://...", headless=False, speed="human") as h:
    with h.browser as b:
        b.open("https://facebook.com")
        b.wait("#email")
        b.type("#email", "user@example.com")
        b.type("#pass", "password123")
        b.click("[name='login']")

Proxy Management

from horus import Horus

h = Horus(proxies=[
    "http://user:pass@proxy1:port",
    "http://user:pass@proxy2:port",
    "socks5://proxy3:port",
])

# Validate all proxies
results = h.validate_proxies()

# Rotate manually
h.rotate_proxy()

# Round robin (default) / random / least_used
h = Horus(proxy_strategy="random")

Platform Detection

import horus

print(horus.platform())        # 'windows' | 'linux' | 'android' | 'macos'
print(horus.IS_ANDROID)        # True / False

from horus.core.platform import supports_browser, supports_behavioral
print(supports_browser())      # False on Android
print(supports_behavioral())   # False on Android

Detection Testing

import horus
from horus.utils import check_ip, check_tls, check_headers, full_report

# Quick checks
print(check_ip())
print(check_tls())
print(check_headers())

# Full report
horus.check()

Test sites:


Architecture

horus/
โ”œโ”€โ”€ __init__.py          โ† Simple API (horus.get, horus.browse, ...)
โ”œโ”€โ”€ horus.py             โ† Horus class (Advanced API)
โ”œโ”€โ”€ core/
โ”‚   โ”œโ”€โ”€ session.py       โ† curl_cffi TLS session
โ”‚   โ”œโ”€โ”€ headers.py       โ† BrowserForge realistic headers
โ”‚   โ””โ”€โ”€ platform.py      โ† OS/platform detection
โ”œโ”€โ”€ browser/
โ”‚   โ””โ”€โ”€ engine.py        โ† Camoufox wrapper (disabled on Android)
โ”œโ”€โ”€ behavioral/
โ”‚   โ”œโ”€โ”€ mouse.py         โ† Bezier curve mouse movement
โ”‚   โ”œโ”€โ”€ typing.py        โ† Gaussian delay typing
โ”‚   โ””โ”€โ”€ scroll.py        โ† Physics-based scrolling
โ”œโ”€โ”€ proxy/
โ”‚   โ””โ”€โ”€ manager.py       โ† Rotation + validation
โ””โ”€โ”€ utils/
    โ””โ”€โ”€ detector.py      โ† Bot detection testing

Feature Matrix

Feature Windows Linux macOS Android/Termux
TLS Fingerprint โœ… โœ… โœ… โœ…
Realistic Headers โœ… โœ… โœ… โœ…
Proxy Rotation โœ… โœ… โœ… โœ…
Browser (Camoufox) โœ… โœ… โœ… โŒ
Mouse Simulation โœ… โœ… โœ… โŒ
Typing Simulation โœ… โœ… โœ… โŒ
Scroll Simulation โœ… โœ… โœ… โŒ

TLS Profiles

from horus import Horus
from horus.core.session import IMPERSONATE_PROFILES

print(IMPERSONATE_PROFILES)
# ['chrome124', 'chrome123', 'chrome120', 'edge122', 'edge120', 'safari17_0', ...]

h = Horus(impersonate="safari17_0")
h.rotate_profile()          # random
h.rotate_profile("edge122") # specific

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

horus_antidetect-1.0.0.tar.gz (16.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

horus_antidetect-1.0.0-py3-none-any.whl (18.3 kB view details)

Uploaded Python 3

File details

Details for the file horus_antidetect-1.0.0.tar.gz.

File metadata

  • Download URL: horus_antidetect-1.0.0.tar.gz
  • Upload date:
  • Size: 16.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for horus_antidetect-1.0.0.tar.gz
Algorithm Hash digest
SHA256 059688f5ea4e6bde62ca9190b43183f67639a20affbe012f55e86df9a00eeea6
MD5 1592f97cd1bb446b19719024605e02fe
BLAKE2b-256 afe70c5686b8aa9096a66642c9ad68b7dc3fb917f3d28e80129fbbd997850aea

See more details on using hashes here.

File details

Details for the file horus_antidetect-1.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for horus_antidetect-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f0d75237e4d551cca085784f74e26e20af028f7c4f8e02b85e3eb64933725d44
MD5 faef733a112cb9f302c52829561232e9
BLAKE2b-256 119ac41c88cd6445c5399161d2afd7ef0aa4a81b3fdef448baff977f7caebdf1

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page