Skip to main content

sherlock-proxyhat

Run Sherlock — the OSINT username hunter — through ProxyHat residential proxies. Rotating residential IPs by default (a fresh IP per connection across the hundreds of sites Sherlock checks), plus geo-targeting and anonymity, so you get rate-limited and blocked far less.

CI Compatible with sherlock latest PyPI License: MIT

What this is

Sherlock is an app, not a library: you run sherlock <username> and it checks that name across 400+ sites, accepting a single --proxy <url> for all of them. Hammering that many sites from one datacenter IP gets throttled and blocked fast.

sherlock-proxyhat is a thin launcher. It resolves a ProxyHat residential gateway URL, then runs the real sherlock executable with --proxy <url> prepended — every other argument (usernames and Sherlock's own flags) passes straight through. No fork, no patched Sherlock: it just wires ProxyHat into the --proxy flag Sherlock already has.

Install

pip install sherlock-proxyhat sherlock-project

sherlock-project (which provides the sherlock command) is an optional dependency — this launcher shells out to the sherlock executable, so any install works (pip, pipx, system package). To pull it in with the launcher:

pip install "sherlock-proxyhat[sherlock]"

Quick start

# An API key auto-selects an active residential sub-user:
export PROXYHAT_API_KEY=ph_xxx

# Same arguments as sherlock — just run it through the launcher:
sherlock-proxyhat johndoe

# Geo-target and add sherlock's own flags; everything after is passed through:
sherlock-proxyhat --proxyhat-country us johndoe janedoe --timeout 30 --csv

Get an API key at proxyhat.com.

Anything that isn't a --proxyhat-* option is forwarded to sherlock verbatim, so every Sherlock flag (--timeout, --site, --nsfw, --csv, -o, …) works unchanged.

Credentials

Pass them as --proxyhat-* flags or via environment variables — flags win over env:

Flag Env var Notes
--proxyhat-api-key PROXYHAT_API_KEY Auto-selects an active sub-user with remaining traffic
--proxyhat-sub-user PROXYHAT_SUBUSER Pick a specific sub-user by uuid or name (with an API key)
--proxyhat-username PROXYHAT_USERNAME Explicit gateway proxy_username (skips the API)
--proxyhat-password PROXYHAT_PASSWORD Explicit gateway proxy_password

Targeting

All targeting lives on --proxyhat-* flags, which are stripped before the command reaches sherlock:

sherlock-proxyhat \
  --proxyhat-protocol http \      # or socks5
  --proxyhat-country us \         # ISO code or "any" (default)
  --proxyhat-region california \
  --proxyhat-city los_angeles \
  --proxyhat-filter high \        # AI IP-quality tier
  johndoe

Rotating IPs by default

Sherlock reuses one proxy for the whole run, so this launcher builds a rotating gateway username by default: the ProxyHat gateway hands out a fresh residential IP on every connection, spreading the hundreds of per-site checks across many IPs — exactly what you want to dodge per-IP rate limits during a scan.

Want to pin a single IP for the whole run instead? Add --proxyhat-sticky (optionally with a lifetime via --proxyhat-sticky-ttl):

sherlock-proxyhat --proxyhat-sticky johndoe               # one pinned IP, 30m default
sherlock-proxyhat --proxyhat-sticky-ttl 2h johndoe        # one pinned IP, 2h lifetime

Bring your own proxy

If you pass Sherlock's own --proxy/-p (or --tor) yourself, the launcher steps aside: it forwards your arguments unchanged and does not inject a ProxyHat URL.

Credentials never hit your logs

Sherlock prints the full --proxy URL on startup (Using the proxy: http://user:pass@gate.proxyhat.com:8080), which would otherwise leak your ProxyHat proxy_username/proxy_password into the terminal and any captured logs. Because the launcher builds that URL, it knows the exact secret strings and redacts them: it pipes Sherlock's output and streams it line by line (nothing is buffered — long scans stream normally), masking the credentials to http://***:***@gate.proxyhat.com:8080 before anything reaches your stdout. Sherlock's result lines pass through unchanged.

Using the URL builder directly

Need the gateway URL in your own script or a different tool? Import the helper:

from sherlock_proxyhat import proxyhat_proxy_url

url = proxyhat_proxy_url(api_key="ph_xxx", country="us")
# -> "http://<user>-country-us:<pass>@gate.proxyhat.com:8080"

Rotating by default (sticky=None); pass sticky="30m" (or True) to pin one IP.

How it works

The launcher parses out its --proxyhat-* options, resolves your gateway credentials via the official proxyhat SDK (an API key auto-picks an active sub-user, or pass username/password), and builds a connection URL carrying ProxyHat's targeting grammar (http://<user>-country-us:<pass>@gate.proxyhat.com:8080, or socks5://…:1080). It then finds the sherlock executable on your PATH and runs sherlock --proxy <url> <your other args> as a subprocess, returning Sherlock's exit code. A rotating username makes the gateway hand out a fresh residential IP per connection; --proxyhat-sticky pins one.

Roadmap

This launcher wraps Sherlock's existing --proxy flag on purpose — it's the honest, low-friction way to ship today. A planned follow-up is an upstream PR to Sherlock adding a native --proxyhat flag (resolve credentials and geo-target from within Sherlock itself, no wrapper), so ProxyHat becomes a first-class option in the tool. Until that lands, this package is the supported path.

License

MIT © ProxyHat

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sherlock_proxyhat-0.1.1.tar.gz (13.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sherlock_proxyhat-0.1.1-py3-none-any.whl (10.8 kB view details)

Uploaded Python 3

File details

Details for the file sherlock_proxyhat-0.1.1.tar.gz.

File metadata

  • Download URL: sherlock_proxyhat-0.1.1.tar.gz
  • Upload date:
  • Size: 13.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for sherlock_proxyhat-0.1.1.tar.gz
Algorithm Hash digest
SHA256 c6ae2c6b0ee1d862a8dde8ab33b345e6f51d7e2daebb30aaff137e2ac09f60a3
MD5 126200a64eb9f7b68507a0f0a074b701
BLAKE2b-256 2b6795855291adbef6d32f77fba757f621d721e9491935dde2c4e56c71a5d40f

See more details on using hashes here.

Provenance

The following attestation bundles were made for sherlock_proxyhat-0.1.1.tar.gz:

Publisher: ci.yml on ProxyHatCom/sherlock-proxyhat

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sherlock_proxyhat-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for sherlock_proxyhat-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 efb52244bc627d86890cb0593f67de596d19926f188b5731024d9aea7f293e63
MD5 8324472cd5b3b84776b772b465cb1648
BLAKE2b-256 a910cda421af73c25502e7cf484ae3d652dfc2d27f6f924bf06470d49226162f

See more details on using hashes here.

Provenance

The following attestation bundles were made for sherlock_proxyhat-0.1.1-py3-none-any.whl:

Publisher: ci.yml on ProxyHatCom/sherlock-proxyhat

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

0.1.2

2 files

This release

0.1.1 This release

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page