Skip to content

Releases: code-hemu/truehuman

0.0.6

Choose a tag to compare

@hemanta-gayen hemanta-gayen released this 29 Jun 19:08

Breaking

  • Removed referrer filter from RecaptchaOptions, TurnstileOptions, and HardwareOptions - the per-plugin referrer filter no longer exists. Use the global referrer field on the result if you need referrer-based logic on your server.
    Behavioral
  • environmentFlag no longer contributes to risk score - it's still tracked in debug.environmentFlag and used for the referrer field, but no longer inflates the risk score. Previously it added a flat +30.
  • grecaptcha / turnstile saveTokens behavior changed - now skips CAPTCHA execution when the visitor is already classified as human with no environment flags, rather than only checking for existing integrity codes. More conservative CAPTCHA saving.
    Error Codes
  • 42.4 (devtools) risk reduced: 15 => 5
  • 85.1 (AudioContext unavailable) risk reduced: 5 => 2
  • 85.2 (Invalid baseLatency) risk reduced: 8 => 4
  • 85.3 (new AudioContext() failed) added - risk 5
  • 85.4 (Unusual latency value) added - risk 2
    Types
  • PluginContext now includes visitor?: string and environmentFlag?: boolean
  • TurnstileOptions now includes saveTokens?: boolean
  • HardwareOptions is now an empty interface

0.0.5

Choose a tag to compare

@hemanta-gayen hemanta-gayen released this 26 Jun 14:08

v0.5.0 - Hardware Profiler Plugin

✨ New: detector.hardware()

Added a new hardware profiling plugin that inspects browser hardware APIs to provide additional bot detection signals.

Features

  • Collects navigator.hardwareConcurrency (logical CPU cores)
  • Collects navigator.deviceMemory (RAM in GB)
  • Classifies the device as one of:
    • unknown
    • low-end
    • mid-range
    • high-end
    • vm-like
  • Emits 92.1 (risk 15) when navigator.hardwareConcurrency is unavailable, indicating a stripped or restricted runtime.
  • Emits 92.2 (risk 10) for hardware profiles commonly associated with virtual machines (≤2 CPU cores with ≥8 GB RAM).
  • Fully passive — no network requests, no dependencies, and no user interaction.

Example

const result = await analyze({
  plugins: [detector.hardware()],
})

console.log(result.components.hardware)

Output:

{
  hardwareConcurrency: 8,
  deviceMemory: 16,
  profile: "high-end"
}

0.0.4

Choose a tag to compare

@hemanta-gayen hemanta-gayen released this 24 Jun 09:43