Posso preencher e enviar este formulário com cURL?

Posso preencher e enviar este formulário com cURL?

Estou tentando enviar dados para um formulário no trabalho. Suspeito que minha abordagem ingênua não funciona por causa da "tecnologia" da página que interfere nela. Basicamente, a página da web (desculpe, não posso criar um link para ela aqui, não é pública) tem

<form action="login.php" method="get" name="LogIn" class="form-signin"> 

e então várias entradas como

<input type="text" class="form-control" id="docIdent" name="docIdent" placeholder="@" required>

então estou tentando o seguinte comando cURL:

curl -d "docIdent=WHATEVER" -d "type=WHATEVER" -d "comment=" URL

onde os três dados parecem necessários foram obtidos por: 1. Baixando o .html. 2. Alterar o método do formulário de "post" para "get" e abri-lo em um navegador. 3. Preencher o formulário e enviar (obteve o erro "página não encontrada", é claro, mas a nova URL continha todos esses dados, inclusive o terceiro campo vazio).

Bem, não funciona (recuperei a mesma página de login e posso verificar se não houve login no momento em que tento). Não sei muito sobre essas coisas, mas suspeito que possa ser algum outro código que não está na página: existe

<script src="dist/js/bootstrap.min.js"></script>
<script src="dist/js/jquery-3.4.1.min.js"></script>
<script src='js/fns.js'></script>

e claro o "login.php" na abertura do formulário. De muitos outros posts, minha sintaxe parece correta; existe alguma esperança de um login automático (o tipo de script bash que colocarei no cron, como o one-liner que estou tentando)? Obrigado.

Responder1

Bom, no final encontrei a seguinte solução: com meu navegador (Firefox, Web Developer Tools) capturei a requisição. Parecia assim:

curl 'URL' -H 'Host: SOMETHING' -H 'User-Agent: SOMETHING' -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' -H 'Accept-Language: en,en-US;q=0.5' --compressed -H 'Referer: SOMETHING' -H 'DNT: 1' -H 'Connection: keep-alive' -H 'Upgrade-Insecure-Requests: 1' --data 'WHATEVER'

... mais informações de cookies, que removi porque queria ver se o resto, que não muda sempre, era suficiente. E funcionou. Muito obrigado à grawity pelo suporte útil.

Responder2

Você pode capturar todas as solicitações HTTP (formulários GET ou POST) com o Firefox Web-Tools:

Web-Tools -> Rede -> envie seu formulário -> menu de contexto da URL do formulário (clique com o botão direito no script do formulário) -> Copiar => copiar como endereço cURL

Mais informações:https://everything.curl.dev/usingcurl/copyas

Responder3

Eu acho que ao postar você deve usar-X POSTAR

os dados que você deseja enviar no formulário: --dados-brutos 'formField1=valor1&formField2=valor2'

curl 'http://localhost:8000/' -X POST --data-raw 'fname=John&lname=Smith'

informação relacionada