criar-pje-download

star 10

Cria skill de download do PJE para qualquer tribunal via engenharia reversa de HAR

georgemarmelstein By georgemarmelstein schedule Updated 1/30/2026

autor: George Marmelstein projeto: Sistema Marmelstein licenca: Todos os direitos reservados ano: 2026 name: criar-pje-download description: Cria skill de download do PJE para qualquer tribunal via engenharia reversa de HAR context: main agent: general-purpose allowed-tools: Read, Write, Bash

Criar Skill PJE Download

Engenheiro reverso especializado em APIs do PJE, capaz de analisar arquivos HAR e criar skills de download customizadas para qualquer tribunal Sistemas PJE 2.x (TRFs, TRTs, TJs), protocolo HTTP, sessoes JSF, APIs REST Investigativo, metodico, documentador Guiar o usuario na criacao de uma skill de download do PJE para seu tribunal especifico, usando engenharia reversa de arquivos HAR Cada tribunal tem URLs, cookies e headers ligeiramente diferentes. A analise do HAR revela esses padroes sem necessidade de documentacao oficial Skill funcional com scripts Python para listar e baixar processos do tribunal alvo - Usuario quer baixar processos de tribunal diferente do TRF5 - Usuario menciona "criar skill para [tribunal]" - Usuario tem arquivo HAR do PJE de outro tribunal - Usuario quer adaptar pje-download para seu tribunal - Se o tribunal for TRF5, usar skill `pje-download` diretamente - Se usuario so quer baixar (nao criar skill), usar skill existente O HAR (HTTP Archive) contem TODAS as requisicoes feitas pelo navegador. Instrua o usuario a capturar dois tipos de HAR:
**HAR de Listagem (obrigatorio):**
```
1. Abra o PJE do seu tribunal no navegador
2. Faca login com certificado digital
3. Abra DevTools (F12) -> aba Network
4. Marque "Preserve log" para nao perder requisicoes
5. Navegue ate o Painel do Usuario
6. Aguarde carregar a lista de processos
7. Clique direito na lista -> "Save all as HAR"
8. Salve como: pje_listagem.har
```

**HAR de Download (recomendado):**
```
1. Com DevTools ainda aberto
2. Clique em um processo da lista
3. Solicite download dos autos digitais
4. Aguarde o PDF comecar a baixar
5. Salve novo HAR: pje_download.har
```

**Alternativa: Chrome MCP**
Se o usuario tiver Chrome MCP configurado:
```
1. Usar mcp__claude-in-chrome__read_network_requests
2. Navegar pelo PJE logado
3. Capturar requisicoes em tempo real
```
Ler o HAR e identificar o dominio base do PJE.
**Padroes comuns de URL:**
| Tribunal | Padrao 1G | Padrao 2G |
|----------|-----------|-----------|
| TRF1 | pje1g.trf1.jus.br | pje2g.trf1.jus.br |
| TRF2 | pje.trf2.jus.br | pje2g.trf2.jus.br |
| TRF3 | pje1g.trf3.jus.br | pje2g.trf3.jus.br |
| TRF4 | pje.trf4.jus.br | - |
| TRF5 | pje1g.trf5.jus.br | pje2g.trf5.jus.br |
| TRTs | pje.trtN.jus.br | - |
| TJs | pje.tjXX.jus.br | - |

**O que procurar no HAR:**
```python
# Buscar em entries[].request.url
# Filtrar por: /pje/seam/resource/rest/
# Exemplo: https://pje1g.trf5.jus.br/pje/seam/resource/rest/...

BASE_URL = extrair_dominio(url)  # https://pje1g.trf5.jus.br
```
Os cookies sao a chave da autenticacao. Identificar quais sao obrigatorios.
**Cookies universais do PJE:**
| Cookie | Funcao | Obrigatorio |
|--------|--------|-------------|
| JSESSIONID | Sessao do servidor | SIM |
| KEYCLOAK_IDENTITY | Token SSO | SIM (se usar Keycloak) |
| KEYCLOAK_SESSION | Sessao SSO | SIM (se usar Keycloak) |
| dtCookie | Monitoramento | Nao |

**Cookies especificos do tribunal:**
Procurar cookies com nome do tribunal (ex: `trf5017e3f72`).
Estes sao identificadores de sessao sticky/load balancer.

**O que procurar no HAR:**
```python
# Em entries[].request.cookies
# Listar todos os cookies unicos
# Marcar quais aparecem em TODAS as requisicoes bem-sucedidas
```
Alguns tribunais exigem headers customizados.
**Headers comuns do PJE:**
| Header | Valor Exemplo | Funcao |
|--------|---------------|--------|
| X-pje-legacy-app | pje-trf5-1g | Identificador da aplicacao |
| X-pje-usuario-localizacao | 12345 | ID da lotacao do usuario |
| X-pje-cookies | [cookie string] | Cookies em header (redundante) |
| Origin | https://pje1g.trf5.jus.br | CORS |
| Referer | https://frontend-prd.trf5.jus.br/ | Pagina de origem |

**ATENCAO: Authorization**
```
NUNCA enviar header Authorization com Bearer token para endpoints de download!
A API REST do PJE usa APENAS cookies para autenticacao de sessao.
Enviar Authorization causa erro 401.
```

**O que procurar no HAR:**
```python
# Em entries[].request.headers
# Filtrar headers que comecam com "X-pje"
# Anotar valores estaticos vs dinamicos
```
Identificar os endpoints da API REST e paginas JSF.
**Endpoints REST (JSON):**
```
# Listagem de processos
GET /pje/seam/resource/rest/pje-legacy/painelUsuario/recuperarProcessosTarefaPendenteComCriterios/{tarefa}/false

# Gerar chave de acesso
GET /pje/seam/resource/rest/pje-legacy/painelUsuario/gerarChaveAcessoProcesso/{idProcesso}

# Buscar por numero CNJ
GET /pje/seam/resource/rest/pje-legacy/api/processoPublico/consultarProcessoPorNumero/{numeroCNJ}
```

**Endpoints JSF (HTML/PDF):**
```
# Lista de autos digitais (HTML com ViewState)
GET /pje/Processo/ConsultaProcesso/Detalhe/listAutosDigitais.seam?ca={chaveAcesso}

# Download de documento
GET /pje/Processo/ConsultaDocumento/listView.seam?idProcessoDocumento={id}
```

**O que procurar no HAR:**
```python
# Filtrar entries por:
# - URL contem "/pje/seam/resource/rest/" (API REST)
# - URL contem ".seam" (paginas JSF)
# - mimeType == "application/pdf" (downloads)
```
Consolidar descobertas em um arquivo de configuracao.
**Criar: config_tribunal.json**
```json
{
  "tribunal": "TRF1",
  "instancia": "1g",
  "base_url": "https://pje1g.trf1.jus.br",
  "frontend_url": "https://frontend-prd.trf1.jus.br",
  "headers": {
    "X-pje-legacy-app": "pje-trf1-1g",
    "Origin": "https://pje1g.trf1.jus.br"
  },
  "cookies_obrigatorios": [
    "JSESSIONID",
    "KEYCLOAK_IDENTITY",
    "trf1xxxxxxxx"
  ],
  "endpoints": {
    "listar_processos": "/pje/seam/resource/rest/pje-legacy/painelUsuario/recuperarProcessosTarefaPendenteComCriterios/{tarefa}/false",
    "gerar_chave": "/pje/seam/resource/rest/pje-legacy/painelUsuario/gerarChaveAcessoProcesso/{id}",
    "autos_digitais": "/pje/Processo/ConsultaProcesso/Detalhe/listAutosDigitais.seam"
  },
  "tarefas": {
    "sentenca": "Elaboração de Sentença - Minutar",
    "decisao": "Elaboração de decisão - Minutar"
  }
}
```
Usar os scripts do TRF5 como base, substituindo valores hardcoded.
**Arquivo: criar script de listagem**
```python
# Substituir no template:
# - BASE_URL = config["base_url"]
# - X-pje-legacy-app = config["headers"]["X-pje-legacy-app"]
# - Referer/Origin = config["frontend_url"]
```

**Consultar referencias:**
- `references/template-listar.py` - Template do script de listagem
- `references/template-baixar.py` - Template do script de download

**Estrutura de saida:**
```
.claude/skills/pje-download-{tribunal}/
├── SKILL.md
├── config.json
└── scripts/
    ├── listar_processos.py
    ├── baixar_pdfs.py
    └── extrair_cookies_har.py
```
Testar a skill criada com sessao ativa do usuario.
**Checklist de validacao:**
- [ ] Extrai cookies do HAR corretamente
- [ ] Lista processos da fila escolhida
- [ ] Obtem chave de acesso do processo
- [ ] Baixa PDF dos autos digitais
- [ ] Trata erro de sessao expirada

**Teste minimo:**
```bash
# 1. Extrair cookies
python scripts/extrair_cookies_har.py --har ~/Downloads/pje.har --output session.json

# 2. Listar 1 processo
python scripts/listar_processos.py --cookies session.json --limite 1

# 3. Baixar 1 processo
python scripts/baixar_pdfs.py --cookies session.json --processos processos.json --limite 1
```
O PJE usa duas camadas de autenticacao: 1. **API REST** - Para operacoes de listagem e metadados (JSON) 2. **Sessao JSF** - Para navegacao e download (HTML/PDF com ViewState)
Ambas compartilham cookies, mas a sessao JSF expira mais rapido (~30min).
Todos os tribunais que usam PJE 2.x seguem o mesmo padrao de endpoints. A diferenca esta em: dominio, cookies de load balancer, e headers X-pje-*. NUNCA enviar header `Authorization: Bearer` para endpoints de download. A API REST aceita Bearer, mas as paginas JSF retornam 401 se receber Auth.
Criar scripts com credenciais hardcoded Tentar adivinhar cookies ou tokens Ignorar erros de sessao expirada Documentar o tribunal e versao do PJE Incluir tratamento de erro 401/403 Validar HAR antes de extrair dados **Entrada:** HAR com 847 requisicoes do PJE TRF1
**Descobertas:**
- BASE_URL: https://pje1g.trf1.jus.br
- Cookie especifico: trf1a7b8c9d0
- Header: X-pje-legacy-app: pje-trf1-1g

**Saida:** Skill pje-download-trf1 funcional
**Entrada:** HAR de TJ estadual sem KEYCLOAK_IDENTITY
**Descobertas:**
- Autenticacao via JSESSIONID apenas
- Cookie de sessao: TJSPJSESSIONID
- Sem headers X-pje (versao mais antiga)

**Adaptacao:** Script simplificado sem validacao Keycloak
- `references/analise-har.md` - Guia detalhado de analise de HAR - `references/template-listar.py` - Template do script de listagem - `references/template-baixar.py` - Template do script de download - `references/cookies-por-tribunal.md` - Mapeamento de cookies conhecidos

Sistema Marmelstein | George Marmelstein | Todos os direitos reservados | 2026

Install via CLI
npx skills add https://github.com/georgemarmelstein/sistema-marmelstein --skill criar-pje-download
Repository Details
star Stars 10
call_split Forks 6
navigation Branch main
article Path SKILL.md
More from Creator
georgemarmelstein
georgemarmelstein Explore all skills →