jscrawler

What this client asked www.pathwren.workers.dev for, when, and what it got. Every number below is from this host's own server-side request log, 2026-09-03 00:06:47Z to 2026-09-03 00:06:47Z UTC.

Mozilla/5.0 (compatible; jscrawler/0.1; +https://github.com/)

8 request(s) from 1 distinct address(es), 8 distinct path(s), first seen 2026-09-03 00:06:47Z, last seen 2026-09-03 00:06:47Z UTC. 1 separate visit(s), counting a gap of more than 30 minutes as a new one.

It describes itself, inside its own user-agent, as jscrawler/0.1. That is the client's own words, quoted; this page makes no claim about what it is for.

The user-agent strings, exactly as they arrived

user-agentrequestsaddressesfirst seenlast seen
Mozilla/5.0 (compatible; jscrawler/0.1; +https://github.com/)812026-09-03 00:06:47Z2026-09-03 00:06:47Z

What it asked for, in the order it asked

First request to each path, oldest first.

#pathat (UTC)status
1/openapi.js2026-09-03 00:06:47Z404
2/swagger.js2026-09-03 00:06:47Z404
3/apis.js2026-09-03 00:06:47Z404
4/feed.js2026-09-03 00:06:47Z404
5/.well-known/ai-plugin.js2026-09-03 00:06:47Z404
6/data/agents.js2026-09-03 00:06:47Z404
7/.well-known/mcp.js2026-09-03 00:06:47Z404
8/ip-ranges/all.js2026-09-03 00:06:47Z404

Everything it asked for

pathrequestsstatus codesfirstlast
/.well-known/ai-plugin.js1404×12026-09-03 00:06:47Z2026-09-03 00:06:47Z
/.well-known/mcp.js1404×12026-09-03 00:06:47Z2026-09-03 00:06:47Z
/apis.js1404×12026-09-03 00:06:47Z2026-09-03 00:06:47Z
/data/agents.js1404×12026-09-03 00:06:47Z2026-09-03 00:06:47Z
/feed.js1404×12026-09-03 00:06:47Z2026-09-03 00:06:47Z
/ip-ranges/all.js1404×12026-09-03 00:06:47Z2026-09-03 00:06:47Z
/openapi.js1404×12026-09-03 00:06:47Z2026-09-03 00:06:47Z
/swagger.js1404×12026-09-03 00:06:47Z2026-09-03 00:06:47Z

What it asked for that did not exist

path it asked forwhat it gotfirst askedsince then
/openapi.js404×12026-09-03 00:06:47Zstill absent
/swagger.js404×12026-09-03 00:06:47Zstill absent
/apis.js404×12026-09-03 00:06:47Zstill absent
/feed.js404×12026-09-03 00:06:47Zstill absent
/.well-known/ai-plugin.js404×12026-09-03 00:06:47Zstill absent
/data/agents.js404×12026-09-03 00:06:47Zstill absent
/.well-known/mcp.js404×12026-09-03 00:06:47Zstill absent
/ip-ranges/all.js404×12026-09-03 00:06:47Zstill absent

What it got, and what it sent

Status codes
404×8
Accept headers
*/*
Bytes served
16384
Attributed to a channel
none — it arrived at a plain path
Our instrument classed it
crawler×8 — that is our classifier's label from the user-agent, not the operator's, and it has been wrong before.

How to verify it is really them

Not observed. This client publishes no address list we could read and no reverse-DNS convention we could test, so the user-agent is the only identity it has here — and a user-agent is a claim, not a proof. Anyone can send this string.

What it publishes about you afterwards

Not observed. We have not seen this client publish a grade, a listing or a record about this host anywhere, and we make no claim that it does or does not.

Its own documentation

It names https://github.com/ in its own user-agent. That is the operator's own claim about itself; we neither endorse nor verify what is on it.

This page as data

curl -s https://www.pathwren.workers.dev/bot/jscrawler.json
curl -s https://www.pathwren.workers.dev/data/observed-clients.json   # every client, one request

JSON · markdown · all clients seen here · index as JSON · check a crawler yourself, no key

Method, and what this page will not say

Rows come from a server-side log written before anything is served, so clients that run no JavaScript are counted exactly like browsers. The window is the whole life of the log, 2026-09-03 00:06:47Z to 2026-09-03 00:06:47Z UTC, and it is stated on every number because a count without a window is not a fact. Addresses are stored as salted hashes and counted, never printed. Our own checks send X-Self: 1 and are excluded, together with every request the analyst flagged as one of our own agents reaching for a URL through a model provider's fetch tool (the numbers are on the index). Nothing here is a claim about intent: where this page does not know something it says not observed.