![¿Puedo completar y enviar este formulario con cURL?](https://rvso.com/image/1604271/%C2%BFPuedo%20completar%20y%20enviar%20este%20formulario%20con%20cURL%3F.png)
Estoy intentando enviar datos a un formulario en el trabajo. Sospecho que mi enfoque ingenuo no funciona debido a la "tecnología" de la página que interfiere con él. Básicamente, la página web (lo siento, no puedo vincularla aquí, no es pública) tiene
<form action="login.php" method="get" name="LogIn" class="form-signin">
y luego varias entradas como
<input type="text" class="form-control" id="docIdent" name="docIdent" placeholder="@" required>
entonces estoy probando el siguiente comando cURL:
curl -d "docIdent=WHATEVER" -d "type=WHATEVER" -d "comment=" URL
donde los tres datos que parecen necesarios se obtuvieron mediante: 1. Descargando el archivo .html. 2. Cambiar el método del formulario de "publicar" a "obtener" y abrirlo en un navegador. 3. Rellenar el formulario y enviarlo (obtuve un error de "página no encontrada", por supuesto, pero la nueva URL tenía todos esos datos, incluido el tercer campo vacío).
Bueno, no funciona (regreso a la misma página de inicio de sesión y puedo comprobar que no había ningún inicio de sesión en el momento en que lo intento). No sé mucho sobre estas cosas, pero sospecho que puede ser algún otro código que no está en la página: hay
<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>
y por supuesto el "login.php" en la apertura del formulario. En muchas otras publicaciones, mi sintaxis parece correcta; ¿Hay alguna esperanza de un inicio de sesión automático (el tipo de script bash que pondré en cron, como el de una sola línea que estoy probando)? Gracias.
Respuesta1
Bueno, al final encontré la siguiente solución: con mi navegador (Firefox, Web Developer Tools) capturé la solicitud. Se veía así:
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'
... más información de las cookies, que eliminé porque quería ver si el resto, que no cambia cada vez, era suficiente. Y funcionó. Muchas gracias a grawity por el útil apoyo.
Respuesta2
Puede capturar cada solicitud HTTP (formularios GET o POST) con Firefox Web-Tools:
Herramientas web -> Red -> envíe su formulario -> menú contextual de la URL del formulario (haga clic derecho en el script del formulario) -> Copiar => copiar como dirección cURL
Más información:https://everything.curl.dev/usingcurl/copyas
Respuesta3
Creo que al publicar deberías usar-X PUBLICACIÓN
los datos que deseas enviar en el formulario: --datos-sin procesar 'formField1=valor1&formField2=valor2'
curl 'http://localhost:8000/' -X POST --data-raw 'fname=John&lname=Smith'