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

[!TIP] Recommended proxies — ProxyHat residential IPs. Every feature in this package is tested end-to-end against ProxyHat and works great. First-class integration; also works with any proxy, or none.

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.2.tar.gz (13.2 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.2-py3-none-any.whl (10.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: sherlock_proxyhat-0.1.2.tar.gz
  • Upload date:
  • Size: 13.2 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.2.tar.gz
Algorithm Hash digest
SHA256 8bfd324c803e27507662a6ed0a2bdf15a0e0d0706312c04e4915b403accc3468
MD5 748baa1700dfab07beeba2414292856e
BLAKE2b-256 35d39bf47b312df171eb0b6740e2c5122abc73a697b7a35ee07c0e5185d5826a

See more details on using hashes here.

Provenance

The following attestation bundles were made for sherlock_proxyhat-0.1.2.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.2-py3-none-any.whl.

File metadata

File hashes

Hashes for sherlock_proxyhat-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 d9a06ef1320d0b5ca1635defe5ef3af49365d78b4e0267c95ef5244a4d76a23f
MD5 8d362f1809df4f886eb102ba9d44e48e
BLAKE2b-256 8b71149927f811f0ba47953efb13391cb34a744ff19ebc1456f2a22147d42df9

See more details on using hashes here.

Provenance

The following attestation bundles were made for sherlock_proxyhat-0.1.2-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

This release

0.1.2 This release

2 files

0.1.1

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