3 mins read

Go httpx vs Python httpx: The Name Conflict That Breaks Recon Workflows

If you’ve ever run httpx and received errors that make no sense—this article is for you.
The issue is not your command, not Kali Linux, and not a broken installation.

The real problem is simple but subtle: two completely different tools share the same name.

What Is httpx? (Actually, Two Different Things)

1. Go-based httpx (ProjectDiscovery)

This is the tool used by security researchers and bug bounty hunters.

  • Purpose: HTTP probing, reconnaissance, enumeration
  • Language: Go
  • Installation:

go install github.com/projectdiscovery/httpx/cmd/httpx@latest

  • Common flags:
    • -threads
    • -follow-redirects
    • -status-code
    • -title

This is the httpx most recon guides refer to.


2. Python httpx

This is not a recon tool.

  • Purpose: HTTP client library (alternative to requests)
  • Language: Python
  • Installation:
pip install httpx
  • Used inside Python scripts
  • Also installs a small CLI named httpx

Same name. Completely different purpose.


Why This Breaks on Kali Linux (and Others)

Linux decides which command runs using the PATH variable.

When you type:

httpx

The system searches directories in PATH order.

If this comes first:

/usr/bin/httpx

Then Python’s httpx runs.

If this comes first:

~/go/bin/httpx

Then Go’s httpx runs.

There is no warning. No error. Just the wrong tool executing.


Common Symptoms of the Conflict

If you see any of these, you’re hitting the name collision:

  • flag provided but not defined
  • unknown option: -threads
  • -m GET not recognized
  • httpx behaves like a simple URL fetcher

Example error:

flag provided but not defined: -m

This happens because Python httpx does not support Go httpx flags.


Always Identify Which httpx You’re Using

Before debugging anything, run:

which httpx

Then:

httpx -h

Go httpx help starts with:

httpx is a fast and multi-purpose HTTP toolkit

Python httpx help starts with:

Usage: httpx [OPTIONS] URL

If you don’t check this, you’re guessing.


Proper Solutions (Pick One)

Solution 1: Use Full Path (Safest)

~/go/bin/httpx -l targets.txt -threads 100

This avoids PATH issues completely.


Solution 2: Fix PATH Priority (Recommended)

Put Go binaries first:

export PATH="$HOME/go/bin:$PATH"

Persist it:

echo 'export PATH="$HOME/go/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc

Verify:

which httpx

Expected output:

/home/user/go/bin/httpx

Solution 3: Rename the Go Binary (Clean Setup)

mv ~/go/bin/httpx ~/go/bin/httpx-go

Usage:

httpx-go -l subdomains.txt

This is common in professional recon environments.


Solution 4: Remove Python CLI (Advanced Users Only)

pip uninstall httpx

⚠️ Do this only if no Python tools depend on it.


What Not to Do

  • Don’t blindly reinstall tools
  • Don’t copy flags from outdated blogs
  • Don’t assume Kali is broken
  • Don’t mix Python and Go CLIs unknowingly

This is a name-resolution problem, not a software bug.


Best Practices for Recon Tooling

  • Always run which toolname
  • Always read tool -h
  • Hardcode full paths in automation
  • Avoid CLI name collisions

Professional pipelines never rely on ambiguous binaries.


Final Thoughts

The httpx conflict is a classic example of what happens when ecosystems collide:

  • Same name
  • Different purpose
  • One PATH

Once you understand this, the issue disappears permanently.

Control your PATH—or control your tools.


Leave a Reply

Your email address will not be published. Required fields are marked *

You cannot copy content of this page