Skip to main content

Anti-detection scraping & automation framework โ€” works on Windows, Linux, macOS, and Android (Termux)

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.1.0.tar.gz (16.5 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.1.0-py3-none-any.whl (18.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: horus_antidetect-1.1.0.tar.gz
  • Upload date:
  • Size: 16.5 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.1.0.tar.gz
Algorithm Hash digest
SHA256 1647f2fc157344a40236629c0766fbfb2653bb278b94c8270d8f501783080d3e
MD5 17b9712f70d636443181e487ae20a671
BLAKE2b-256 1ac6c69e21dde483cc43375e7019651244291ae721a5d01b0d44bc8506b9dd04

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for horus_antidetect-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 32031363a4da004d95796ca3f5ac3c00477e527e84eaa95a845dfa21c1107056
MD5 60b9ac3016301c960645cca81f0b15be
BLAKE2b-256 c67c60ae5b3335bd449520e34f378efb1b41381005a9ead76a2aa10d453f70e5

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