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

# Core (ูŠุนู…ู„ ุนู„ู‰ ูƒู„ ุงู„ุฃู†ุธู…ุฉ)
pip install horus-antidetect

# ู…ุน Selenium anti-detection browser  
pip install "horus-antidetect[selenium]"

# ูƒู„ ุงู„ุฅุถุงูุงุช (TLS + Camoufox + Selenium)
pip install "horus-antidetect[all]"

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.2.0.tar.gz (19.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.2.0-py3-none-any.whl (22.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: horus_antidetect-1.2.0.tar.gz
  • Upload date:
  • Size: 19.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.2.0.tar.gz
Algorithm Hash digest
SHA256 65e3896f48b7ebf08c21fe343f7aa1509e338d067560c30a82d8601767a175d9
MD5 c049b5e3a8d9b1710369ffa935f17809
BLAKE2b-256 99e897097791004a566ea4f59f57387594493314cdccdb09a09e424c71c61004

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for horus_antidetect-1.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ccdd6ffaf3a4e13c7d8696624b7c677636a6450cdb09ee937218ba85cfe0a134
MD5 8c84da3724447006163d5c2364c2719a
BLAKE2b-256 9430ad7c7def8189c0f479a80d702e8d12087e8bdfddee26f330658ce2bf22aa

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