# LinkFinder: extraindo endpoints de bundles JavaScript

> Como instalar e executar o LinkFinder, e por que o JavaScript é o lugar mais confiável para achar rotas de API não documentadas.

O `LinkFinder` parseia arquivos JavaScript e extrai qualquer coisa que pareça um endpoint. Front-ends modernos enviam toda a tabela de roteamento ao navegador, o que significa que o bundle é uma descrição bastante completa da API — incluindo rotas que a UI nunca chama.

## Instalação

```bash
git clone https://github.com/GerbenJavado/LinkFinder.git
cd LinkFinder && pip install -r requirements.txt
python linkfinder.py -h
```

## Comandos principais

```bash
# um arquivo JS, saída simples
python linkfinder.py -i https://example.com/static/app.js -o cli

# todo script de uma página
python linkfinder.py -i https://example.com -d -o cli

# um domínio inteiro a partir do corpus da Wayback
python linkfinder.py -i "https://example.com/*" -o results.html

# um bundle local
python linkfinder.py -i ./app.bundle.js -o cli
```

O `-o cli` imprime no stdout, que é o que você quer num pipeline; o padrão grava um relatório HTML.

## Saída

Um endpoint candidato por linha:

```
/api/v2/users
/api/v2/admin/impersonate
/internal/healthz
```

## Onde ele entra no Tandera

O LinkFinder roda na fase de **analyze** do `recon_web_lite` e do `recon_web_full`, contra o JavaScript que o `katana` recuperou durante o crawl. Ele fica ao lado do `jxscout` e do `retirejs`, que leem os mesmos bundles para coisas diferentes — segredos e dependências vulneráveis, respectivamente.

Os endpoints que ele recupera voltam ao corpus de URLs e viram alvos de sondagem.

## Usando em um pentest

**Rotas de admin são enviadas a todo usuário.** Um front-end que esconde um painel admin não renderizando o botão ainda contém a rota. `/api/v2/admin/impersonate` num bundle servido a usuários anônimos vale testar imediatamente — se não estiver autorizado no lado do servidor, esse é seu crítico.

**Espere ruído.** A regex casa com strings parecidas com paths, então você vai receber fragmentos de CSS, tipos MIME e números de versão. Filtre, depois sonde:

```bash
python linkfinder.py -i https://example.com -d -o cli \
  | grep -E '^/' | sort -u \
  | sed 's|^|https://example.com|' | httpx -silent -status-code
```

**Source maps são melhores quando existem.** Se `app.js.map` é servido, você recebe as fontes originais em vez da saída minificada. Sempre verifique.

---

Canonical: https://tandera.io/pt-br/tools/linkfinder
This page as markdown: https://tandera.io/pt-br/tools/linkfinder.md
Index for agents: https://tandera.io/llms.txt

Every page here is also available as markdown: append `.md` to the path (e.g. `/recon.md`, `/index.md` for this homepage, `/blog/<slug>.md`), or request the canonical path with `Accept: text/markdown`.
