npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@proxyherd/fingerprint

v1.1.0

Published

ProxyHerd fingerprint service: tells a proxy manager whether a proxy is online and where it is (IP, network, location) from a local GeoIP database. Self-hosted; nothing leaves your infrastructure.

Readme

ProxyHerd fingerprint service

The service every ProxyHerd installation points FINGERPRINT_URL at. Each proxy fetches it to prove it is online, and the answer tells ProxyHerd the proxy's public IP address, its network (ASN) and its approximate location, resolved from a GeoIP database on your own disk. Nothing is reported to a third party.

It must be reachable through your proxies, that is from the public internet, not only from the machine running ProxyHerd.

Run

docker run -d -p 3000:3000 -v proxyherd-geoip:/data/geoip ghcr.io/proxyherd/fingerprint

On first start it downloads the free DB-IP "lite" city and ASN databases (about 150 MB) into the volume and refreshes them weekly. Then set FINGERPRINT_URL=https://<public host>/api/json on ProxyHerd.

Put it behind TLS (a reverse proxy or a platform that terminates HTTPS) and set TRUST_PROXY=true so the client address is read from X-Forwarded-For.

Endpoints

| Path | Answer | |---|---| | GET /api/json | { ip, useragent, asnName, asnNetwork, continentCode, continentName, countryCode, countryName, cityName, timezone, latitude, longitude }; every field but ip may be null | | GET /api/text | the client IP address as plain text | | GET /health | provider, database state and last refresh | | GET / | a short description and the GeoIP attribution |

Configuration

| Variable | Default | Meaning | |---|---|---| | FINGERPRINT_PORT | 3000 | Listening port | | GEOIP_PROVIDER | dbip | dbip (free, no key), maxmind (GeoLite2, needs a free licence key, better accuracy) or none (IP only) | | GEOIP_DIR | geoip (/data/geoip in the image) | Where the .mmdb files live | | GEOIP_AUTO_DOWNLOAD | true | Download the databases at start and refresh them | | GEOIP_REFRESH_HOURS | 168 | Refresh interval | | MAXMIND_LICENSE_KEY | | Required for GEOIP_PROVIDER=maxmind | | TRUST_PROXY | false | Read the client address from X-Forwarded-For (only behind a reverse proxy you control) |

You can also drop your own city.mmdb and asn.mmdb into GEOIP_DIR and set GEOIP_AUTO_DOWNLOAD=false.

Attribution

With the default provider, IP geolocation is provided by DB-IP under the Creative Commons Attribution 4.0 licence. With maxmind, the data is from MaxMind's GeoLite2 databases under the GeoLite2 End User License Agreement; you need your own account and key.