De volta ao blog

curl Cookies: Como Enviar, Armazenar e Reutilizar Sessões com Segurança

Isabella Garcia
Isabella Garcia

Web Data Collection Specialist

21-Aug-2026

TL;DR:

  • Um cookie curl pode ser enviado diretamente com -b, mas um jar de cookies é mais seguro para uma sessão de múltiplas requisições. O jar permite que curl aplique regras de expiração, domínio, caminho e transporte em vez de reconstruir um cabeçalho Cookie manualmente.
  • -c grava cookies recebidos de Set-Cookie; -b lê cookies para a próxima requisição. Use ambas as opções quando um script precisa atualizar e reutilizar o mesmo jar.
  • Arquivos de cookies são credenciais. Armazene-os fora do controle de versão, limite as permissões do arquivo, redisponha valores de logs e remova-os quando o fluxo de trabalho autorizado terminar.
  • curl não executa JavaScript do lado do cliente ou completa cerimônias interativas de MFA e chave de passagem. Esses fluxos necessitam de uma sessão de navegador aprovada e de um limite de autenticação controlado por humanos.
  • Scrapeless Scraping Browser pode continuar um fluxo de trabalho apenas de navegador após atingir o limite do curl. Ele fornece uma nova sessão de navegador em nuvem; seu aplicativo ainda possui a autorização e o gerenciamento de credenciais.
  • Gratuito para começar. Novas contas Scrapeless incluem runtime gratuito do Scraping Browser - inscreva-se em app.scrapeless.com.

Introdução: Cookies Transformam Solicitações HTTP Separadas em uma Sessão

As solicitações HTTP são independentes até que o servidor e o cliente concordem com um estado. Uma resposta pode definir um cookie, e uma solicitação posterior pode retornar esse cookie para o host e caminho correspondentes. Essa pequena troca é como muitos aplicativos preservam preferências, carrinhos anônimos, estado de consentimento e sessões autorizadas.

curl inclui um mecanismo de cookies exatamente para esse trabalho. O guia oficial de scripting HTTP do curl documenta tanto strings de cookies literais quanto jars persistentes, enquanto a especificação de gerenciamento de estado HTTP define o comportamento do servidor e do agente de usuário por trás deles.

Este guia usa um ponto de teste público e curl 8.7.1 para enviar, capturar, armazenar, inspecionar e reutilizar cookies de demonstração não sensíveis. Em seguida, traça uma linha entre uma sessão HTTP e autenticação apenas de navegador.


Um cookie curl é um par nome-valor que o curl coloca no cabeçalho de solicitação HTTP Cookie após aplicar suas regras de mecanismo de cookies.

Existem duas maneiras de fornecê-lo:

Método Melhor ajuste Principal desvantagem
String literal com --cookie / -b Uma solicitação controlada com valores não sensíveis conhecidos Você possui cada valor e decisão correspondente
Arquivo de cookies com --cookie / -b Uma sessão transportada entre comandos O arquivo se torna material de credenciais
Jar de cookies escrito com --cookie-jar / -c Um fluxo multi-etapas dirigido pelo servidor O jar deve ser protegido e limpo

A direção da resposta é diferente. Um servidor envia Set-Cookie; o curl avalia os atributos e registra cookies elegíveis na memória ou em um jar. A referência de cabeçalho Set-Cookie descreve atributos como Domain, Path, Expires, Max-Age, Secure, HttpOnly, e SameSite.


Enviar Cookies Com -b

-b é a forma curta de --cookie. Quando seu argumento contém um sinal de igual, o curl trata o valor como dados de cookie em vez de um nome de arquivo.

bash Copy
curl --silent \
  --cookie "theme=dark; view=compact" \
  https://httpbingo.org/cookies

O ponto de extremidade público ecoa os cookies que recebeu:

json Copy
{
  "cookies": {
    "theme": "dark",
    "view": "compact"
  }
}

Valores literais são convenientes para preferências inócuas. Não coloque um identificador de sessão real em uma linha de comando compartilhada: o histórico do shell, a inspeção de processos, gravações de terminal e logs de CI podem expô-lo.


Set-Cookie é um cabeçalho de resposta, então inspecione-o separadamente do corpo da resposta. --dump-header - grava cabeçalhos na saída padrão, e --output /dev/null descarta o corpo.

bash Copy
curl --silent \
  --dump-header - \
  --output /dev/null \
  "https://httpbingo.org/cookies/set?theme=dark"

A resposta ao vivo retornou um redirecionamento HTTP e este cabeçalho:

text Copy
set-cookie: theme=dark; Path=/; HttpOnly; Secure

HttpOnly impede que o JavaScript do navegador leia o valor; ele não impede que um cliente HTTP armazene e envie o cookie. Secure limita a transmissão a transporte seguro. Nenhum atributo transforma o cookie em uma concessão de permissão - o servidor ainda decide o que a sessão pode acessar.


Escrever e Reutilizar um Jar de Cookies

Um jar de cookies preserva os atributos do servidor no formato de arquivo de cookies Netscape. Use -c na resposta que define o estado, depois -b na solicitação que precisa dele.

bash Copy
COOKIE_JAR="$(mktemp)"
chmod 600 "$COOKIE_JAR"

curl --silent --location \
  --cookie-jar "$COOKIE_JAR" \
  "https://httpbingo.org/cookies/set?demo_session=authorized" \
  --output /dev/null

curl --silent \
  --cookie "$COOKIE_JAR" \
  https://httpbingo.org/cookies

O segundo comando retornou:

json Copy
{
  "cookies": {
    "demo_session": "authorized"
  }
}

Quando o servidor pode atualizar a sessão, leia e escreva o mesmo arquivo:

bash Copy
curl --silent --location \
  --cookie "$COOKIE_JAR" \
  --cookie-jar "$COOKIE_JAR" \
  https://httpbingo.org/cookies

O jar é escrito quando a transferência é concluída. Mantenha-o em um sistema de arquivos privado e remova-o após o trabalho autorizado.

Comece a Raspagem com Scrapeless

Aumente sua raspagem na web e fluxo de automação com Scrapeless!
Inscreva-se hoje e ganhe $5 em crédito gratuitonenhum cartão de crédito necessário.

Reclame seu crédito gratuito agora no Painel do Scrapeless.
Painel do Scrapeless mostrando $5,00 em Créditos de Equipe


Múltiplos Cookies e Regras de Domínio/Caminho

O mecanismo de cookies envia apenas cookies cujo escopo corresponde à solicitação. Uma linha de jar registra o domínio, se subdomínios estão incluídos, o caminho, a flag Secure, a expiração, o nome e o valor.

O cookie de teste público capturado parecia com isso:

text Copy
#HttpOnly_httpbingo.org FALSE / TRUE 0 demo_session authorized

O prefixo #HttpOnly_ é o marcador de formato de arquivo do curl para um cookie HttpOnly. FALSE significa que o domínio não inclui subdomínios, / é o caminho correspondente, TRUE marca transporte Secure, e 0 representa um cookie de sessão sem timestamp de expiração persistente.

Não amplie um domínio ou caminho para fazer uma solicitação funcionar. O escopo é um limite de segurança. Um cookie para um host de aplicativo não deve ser copiado para um host não relacionado, e um cookie restrito por caminho deve permanecer restrito por caminho.


Seguro, HttpOnly e SameSite

Os atributos dos cookies respondem a perguntas diferentes, então trate-os de forma independente.

Atributo O que controla Implicação do curl
Secure Se o cookie viaja por transporte seguro curl não o enviará por HTTP simples
HttpOnly Se o JavaScript do navegador pode lê-lo curl preserva o marcador em seu jar
SameSite Se um navegador o envia em contextos de site cruzado um cliente HTTP de linha de comando não reproduz o modelo completo de contexto de site de um navegador
Domain Qual escopo de host pode recebê-lo curl corresponde ao host da solicitação
Path Quais caminhos de URL podem recebê-lo curl corresponde ao caminho da solicitação

Para sessões autorizadas, siga os controles de gerenciamento de sessão OWASP: proteja identificadores em repouso e em trânsito, gire-os através do aplicativo, e torne a rescisão efetiva do lado do servidor.


--verbose mostra os cabeçalhos da solicitação de saída, incluindo Cookie. Isso o torna útil e perigoso.

Use a saída verbosa apenas em um terminal local privado com valores de demonstração. Em logs compartilhados, confirme nomes e escopo do jar enquanto redige valores:

bash Copy
awk 'BEGIN { FS="\t" } !/^#/ && NF >= 7 { print $1, $3, $6, "[REDACTED]" }' "$COOKIE_JAR"

Se o servidor retornar 401, primeiro confirme que o curl selecionou o cookie esperado para o host e caminho. Se o servidor retornar 403, a sessão pode estar autenticada, mas não autorizada para esse recurso. Nenhum dos status justifica a alteração do escopo da conta ou a cópia da sessão de outro usuário.


Quando o curl Não É Suficiente

curl é um cliente HTTP, não um runtime de navegador. Não executa JavaScript do lado do cliente, renderiza um widget de login, satisfaz uma cerimônia de chave de acesso ou permite que uma pessoa aprove um prompt de MFA.

Fluxos apenas de navegador também dependem de estado além dos cookies: armazenamento de origem, trabalhadores de serviço, solicitações geradas por JavaScript, credenciais vinculadas ao dispositivo e redirecionamentos interativos. Reconstruir apenas o cabeçalho Cookie pode, portanto, produzir uma sessão incompleta ou inválida.

Use curl para fluxos HTTP documentados e APIs controladas. Use uma sessão de navegador aprovada quando a aplicação exigir comportamento de navegador.


Continue o Fluxo de Trabalho com Scrapeless

O Navegador de Raspagem Scrapeless fornece um navegador em nuvem para fluxos interativos e renderizados em JavaScript. Não converte um cookie curl não autorizado em acesso.

A entrega segura é uma sessão nova: crie o navegador em nuvem, deixe um operador autorizado completar qualquer login ou limite de MFA necessário, e mantenha o trabalho aprovado dentro dessa sessão. A conexão exata da SDK requer sua chave de API Scrapeless.

Nota: O bloco a seguir requer SCRAPELESS_API_KEY e um alvo autorizado. O ambiente de verificação local confirmou a interface SDK instalada, mas não executou uma sessão em nuvem autenticada.

javascript Copy
import { Playwright } from "@scrapeless-ai/sdk";

const browser = await Playwright.connect({
  apiKey: process.env.SCRAPELESS_API_KEY,
  sessionTTL: 300,
  proxyCountry: "US",
});

const context = await browser.newContext();
const page = await context.newPage();
await page.goto("https://app.example.com/login", {
  waitUntil: "domcontentloaded",
});

// An authorized operator completes any login, MFA, or passkey step here.
// Continue only within the account and scope approved for the workflow.

await browser.close();

A página do Navegador de Scraping Sem Resíduos explica a fronteira do navegador gerenciado. Verifique preços Scrapeless, mantenha o SDK alinhado com a documentação Scrapeless, e use o fluxo de download do Puppeteer quando o navegador precisar produzir um arquivo em vez de um corpo de resposta HTTP.


Conclusão: Mantenha o Estado da Sessão Deliberado

Os cookies do curl são previsíveis quando você separa o fluxo em receber, armazenar, corresponder, enviar e destruir. Use -c para capturar o estado do servidor, -b para reutilizá-lo e um jar privado quando mais de um comando participar.

Quando o fluxo de trabalho cruza para JavaScript, autenticação interativa ou credenciais baseadas em navegador, pare de tratar a sessão como um exercício de cabeçalho. Crie uma sessão de navegador aprovada e mantenha seu escopo explícito.


Junte-se à nossa comunidade para comparar padrões de gerenciamento de sessões com desenvolvedores que estão construindo automações autorizadas: Discord · Telegram.

Inscreva-se em app.scrapeless.com para um tempo de execução gratuito do Navegador de Scraping e mova etapas apenas do navegador para uma sessão gerenciada.


Perguntas Frequentes

Q: O que curl -b faz?

curl -b ativa o mecanismo de cookies e fornece uma string literal de cookie ou um arquivo de cookie para a solicitação.

Q: O que curl -c faz?

curl -c grava cookies elegíveis em um jar de cookies quando a transferência é concluída. Combine-o com -b quando o mesmo arquivo deve ser lido e atualizado.

Q: Um jar de cookies do curl é seguro para ser comprometido?

Não. Um jar de cookies pode conter credenciais de sessão ativas e deve permanecer fora do controle de versão com permissões restritivas no sistema de arquivos.

Q: Por que o curl não está enviando um cookie do jar?

O cookie pode estar expirado ou pode não corresponder ao domínio, caminho ou requisitos de transporte seguro da solicitação. Inspecione esses atributos sem imprimir o valor.

Q: O curl pode completar MFA ou um login de chave de acesso?

Não. Cerimônias de MFA interativa e chaves de acesso exigem um navegador e, muitas vezes, uma pessoa autorizada para aprovar a etapa.

Q: O Scrapeless pode importar todo jar de cookie do curl?

Não. As sessões do navegador podem depender de mais do que cookies, então o padrão seguro geral é iniciar uma nova sessão de navegador autorizada e completar a autenticação necessária dentro dela.

Q: Quanta concorrência um fluxo de trabalho de sessão deve usar?

Mantenha não mais do que três trabalhadores por host até que o proprietário do aplicativo aprove um limite diferente, e isole o estado da sessão de cada trabalhador.

Na Scorretless, acessamos apenas dados disponíveis ao público, enquanto cumprem estritamente as leis, regulamentos e políticas de privacidade do site aplicáveis. O conteúdo deste blog é apenas para fins de demonstração e não envolve atividades ilegais ou infratoras. Não temos garantias e negamos toda a responsabilidade pelo uso de informações deste blog ou links de terceiros. Antes de se envolver em qualquer atividade de raspagem, consulte seu consultor jurídico e revise os termos de serviço do site de destino ou obtenha as permissões necessárias.

Artigos mais populares

Catálogo