![Posso preencher e enviar este formulário com cURL?](https://rvso.com/image/1604271/Posso%20preencher%20e%20enviar%20este%20formul%C3%A1rio%20com%20cURL%3F.png)
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'