Sourcemap crawler and unpacker. Crawls a target, finds its javascript, and reconstructs the original source tree from any discovered sourcemaps
- Discovers JS bundles from
<script>tags during a page crawl - Recovers webpack chunks from manifests +
.ufunctions - Handles both inline (
data:application/json;base64,...) and external sourcemaps - Probes
.js.mappaths when nosourceMappingURLcomment is present (toggle with--no-guess) - Async with configurable concurrency
- Reads targets from stdin; composes with
subfinder,httpx, etc. - Live progress UI; per-host output directories
UnMapper requires Python 3.10+.
uv tool install git+https://github.com/weirdmachine64/UnMapperFrom a local checkout (editable):
git clone https://github.com/weirdmachine64/UnMapper
cd UnMapper
uv tool install --editable .$ unmapper --help
usage: unmapper [-h] [-o OUTPUT] [-t THREADS] [--timeout TIMEOUT] [-v] [--no-guess] [URL ...]
Sourcemap crawler and unpacker
positional arguments:
URL One or more target URLs (bare hostnames get https:// added). If
omitted, every non-empty line of stdin is used
(e.g. `subfinder -d example.com | unmapper`). Targets are
processed sequentially.
options:
-h, --help show this help message and exit
-o OUTPUT, --output OUTPUT
Output directory (default: ./out)
-t THREADS, --threads THREADS
Worker count: in-flight HTTP requests + map-parsing/file-write
threads (default: 10)
--timeout TIMEOUT Per-request timeout in seconds (default: 30)
-v, --verbose Stream activity log
--no-guess Don't probe .js.map paths when no sourceMappingURL comment
exists. Probing is on by default.Single target:
unmapper https://github.comMultiple targets on the command line:
unmapper https://a.example.com https://b.example.com -o ./outPiped from a subdomain enumerator:
subfinder -d example.com -silent | unmapper -o ./harvest -t 20Skip the .js.map probe and only follow explicit sourceMappingURL= comments:
unmapper https://example.com --no-guessEach target lands under <output>/<hostname>/, mirroring the original source tree as encoded in the sourcemap:
out/
└── github.com/
├── src/
├── node_modules/
└── webpack/
MIT. See LICENSE.
