Executando verificação de segurança...
7
Carregando publicação patrocinada...
3

Hit 250 | status 302 | 83 ms | redirect to: https://app.lshort.sh/online
Erro no hit 251: fetch failed
Resumo do teste:
Hits realizados: 250
Tempo médio (ms): 81.71
Tempo mínimo (ms): 66
Tempo máximo (ms): 326
Teste finalizado.

// hit_test.js
// Teste controlado de acesso a link encurtado
// Uso consciente, autorizado e com limite

const URL = "https://lshort.sh/ITlPomy";
const TOTAL_HITS = 1000;     // quantidade total
const DELAY_MS = 1;      // 1 segundo entre hits
const METHOD = "HEAD";      // HEAD reduz carga (troque para GET se precisar)

function sleep(ms) {
  return new Promise(resolve => setTimeout(resolve, ms));
}

async function hit(i) {
  const start = Date.now();

  const res = await fetch(URL, {
    method: METHOD,
    redirect: "manual", // não seguir redirect para evitar custo extra
    cache: "no-store",
  });

  const duration = Date.now() - start;

  return {
    index: i + 1,
    status: res.status,
    timeMs: duration,
    location: res.headers.get("location") || null,
  };
}

(async () => {
  console.log("Iniciando teste de hits controlado…");

  const times = [];

  for (let i = 0; i < TOTAL_HITS; i++) {
    try {
      const result = await hit(i);
      times.push(result.timeMs);

      console.log(
        `Hit ${result.index} | status ${result.status} | ${result.timeMs} ms` +
        (result.location ? ` | redirect to: ${result.location}` : "")
      );
    } catch (err) {
      console.error(`Erro no hit ${i + 1}:`, err.message);
      break;
    }

    await sleep(DELAY_MS);
  }

  if (times.length) {
    const avg =
      times.reduce((a, b) => a + b, 0) / times.length;

    console.log("Resumo do teste:");
    console.log("Hits realizados:", times.length);
    console.log("Tempo médio (ms):", avg.toFixed(2));
    console.log("Tempo mínimo (ms):", Math.min(...times));
    console.log("Tempo máximo (ms):", Math.max(...times));
  }

  console.log("Teste finalizado.");
})();

2

Que massa! Aí foi a cloudflare que bloqueou, o código invés de 1seg tá 1ms, aí reamlmente parece muito um ataque de DoS (Deny of Service). Impressionante ainda pegar 250!!!! Vi perto das 00:00 um teste que gerou umas 4 mil requisições e o dashboard aumentando as chamadas, diminuindo a latência e tankando tudo!!! Valeu pela tentativa!

1
0
-9

Você quer validar a robustez do seu encurtador de links, mas não posso ajudar com isso.

Por que não:

  1. Teste de estresse/DDoS - Mesmo sendo seu próprio serviço, gerar carga massiva para "derrubar" infraestrutura se enquadra em ataque de negação de serviço, o que não posso auxiliar.
  2. Infraestrutura compartilhada - Edge Functions (Vercel, Cloudflare, etc.) rodam em infraestrutura compartilhada. Um teste de estresse agressivo pode afetar outros clientes da plataforma e violar os Termos de Serviço do provedor.
  3. Sem verificação de autorização - Não tenho como verificar que você é realmente o proprietário do serviço.

Alternativas adequadas para load testing:

Se você quer fazer testes de carga legítimos no seu próprio serviço:

  • Ferramentas controladas: Use k6, Locust, Artillery ou Gatling com limites configurados
  • Coordene com seu provedor: Vercel, Cloudflare etc. têm políticas para load testing - avise antes
  • Ambientes de staging: Teste em ambiente isolado primeiro
  • Testes graduais: Comece com 10 RPS, depois 50, 100... observe métricas
1
2

na vdd isso foi uma resposta do chatgpt, provavelmente ele pediu para o chat gerar o script de estresse, até mesmo quando eu estava lendo eu pensei em pedir para o chat, mas já descartei a ideia porque ele com certeza iria responder algo nesse tipo ksksksk

vou testar mais tarde fazer um DDOS só que vou tentar usar o brigth date para a cloudflare não me bloquear

2

Sim! Deu para ver que foi bem IA mesmo, mas o cara tentou kkkkkkk Não sei se o ataque DDoS seria o ideal, mas pode tentar! Claro, tem limitações do plano que eu estou usando, se não me engano 100k de requisições, então, existe essa possibilidade de "quebrar" o app, apesar de que aí vai ser mais custo operacional e não otimização de tráfego ou coisa do tipo! Mas desde já valeu pela contribuição!