How to Disable Holehe Color Output for Log Parsing and Automation
Use the --no-color flag to strip ANSI color codes from Holehe's terminal output, producing plain text suitable for log parsers and automation pipelines.
Holehe's color-coded output helps humans scan results quickly, but those same ANSI escape sequences break standard log-processing tools. According to the megadose/holehe source code, the tool provides a built-in mechanism to disable colorization entirely. This guide explains how color handling works under the hood and how to leverage the --no-color option for reliable automation.
How Holehe Implements Color Output
Colorization in Holehe is centralized in holehe/core.py through a simple conditional pattern that wraps the termcolor library.
The print_color Function
The helper function print_color (lines 106-112) acts as a gatekeeper for all colored output:
def print_color(text, color, args):
"""Print text with color unless --no-color is specified."""
if args.nocolor:
return text
return colored(text, color)
When args.nocolor is False (the default), the function returns colored(text, color) from termcolor, embedding ANSI escape sequences. When True, it returns the raw text unchanged.
CLI Flag Definition
The --no-color argument is registered in the argument parser at lines 86-88:
parser.add_argument(
"--no-color",
action="store_true",
dest="nocolor",
help="Disable colored output"
)
This stores True in args.nocolor when present, propagating through to every print_color call.
Disabling Colors for Log Parsing
Command-Line Usage
Append --no-color to any Holehe invocation to produce plain ASCII output:
holehe user@example.com --no-color
Output comparison:
| With colors (default) | Without colors (--no-color) |
|---|---|
[+] in green |
[+] plain text |
[-] in magenta |
[-] plain text |
[x] in yellow |
[x] plain text |
[!] in red |
[!] plain text |
Practical Parsing Examples
Pipe plain output directly into standard Unix tools without struggling with escape sequences:
# Extract confirmed accounts only
holehe user@example.com --no-color | grep '^\[+\]'
# Count rate-limited sites
holehe user@example.com --no-color | grep '\[x\]' | wc -l
# Structured extraction with awk
holehe user@example.com --no-color | awk '/^\[+\]/ {print $2}'
Programmatic Disabling in Python
When embedding Holehe in automation scripts, set nocolor explicitly on the arguments namespace:
import argparse
from holehe.core import print_result
# Construct arguments with color disabled
args = argparse.Namespace()
args.nocolor = True # Disable color output
args.onlyused = False
args.verbose = False
# ... populate remaining attributes ...
# Generate plain-text results
print_result(data, args, email, start_time, websites)
This bypasses termcolor entirely, ensuring consistent output across different terminal environments.
Key Files and Dependencies
| File | Purpose |
|---|---|
holehe/core.py |
Contains print_color() and --no-color CLI definition (lines 86-88, 106-112) |
setup.py |
Declares termcolor as a required dependency |
holehe/instruments.py |
Progress bar instrumentation (separate from color handling) |
Summary
- Default behavior: Holehe emits ANSI-colored symbols via
termcolorfor visual clarity. - Disable mechanism: The
--no-colorflag setsargs.nocolor = True, forcingprint_color()to return raw strings. - Automation benefit: Plain output eliminates escape sequences that corrupt
grep,awk,jq, and log aggregators. - Implementation location: All color logic resides in
holehe/core.pywith centralized control through a single boolean flag.
Frequently Asked Questions
Does --no-color affect Holehe's exit codes or data structure?
No. The flag only modifies output formatting. Return codes, result dictionaries, and internal data processing remain identical. The change is strictly presentational within the print_color wrapper.
Can I force color output even when piping to a file?
Holehe does not implement FORCE_COLOR or CLICOLOR environment variable support. Colors depend solely on the --no-color flag's absence. To preserve colors in a file, you would need to capture standard output normally and process it through a tool like script or unbuffer.
What happens if termcolor is not installed?
The termcolor package is declared as a required dependency in setup.py. If somehow missing, Holehe would fail at import time when holehe/core.py attempts to from termcolor import colored, before any color logic executes.
Does Holehe support automatic color detection based on terminal capabilities?
No. The megadose/holehe source code does not implement isatty() checks or NO_COLOR environment variable compliance. Color output is binary: enabled by default, disabled only via explicit --no-color flag.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →