Recetas de uso de wget y curl

¿Cómo llenar un formulario desde la linea de comando?

formfind

  • Primero hay que conseguir los nombres de los campos que deben ser enviados. Para eso puede ayudar el script formfind que se puede bajar de la siguiente manera:

curl https://raw.github.com/bagder/curl/master/perl/contrib/formfind

  • Ahora hay que bajar la página web que tiene el formulario, por ejemplo:
curl http://www.ottobib.com/ >pagina.txt
  • Ahora tenemos que extraer la información sobre el formulario, usando formfind:
 formfind <pagina.txt

eso genera una salida como la siguiente:

--- FORM report. Uses POST to URL "/"
Input: NAME="utf8" VALUE="&#x2713;" (HIDDEN)
Input: NAME="authenticity_token" VALUE="09sCjPhQInaKIs0fgg6ftHpseVTg1jLnrCpi6LtODeI=" (HIDDEN)
Textarea: NAME="search"
Input: NAME="citetype" VALUE="mla" (RADIO)
Input: NAME="citetype" VALUE="apa" (RADIO)
Input: NAME="citetype" VALUE="chicago" (RADIO)
Input: NAME="citetype" VALUE="bibtex" (RADIO)
Input: NAME="citetype" VALUE="wp" (RADIO)
--- end of FORM

Para usar esta información y llenar el formulario haríamos, por ejemplo, lo siguiente:

Con curl:

curl -d utf8="&#x2713;" -d authenticity_token="09sCjPhQInaKIs0fgg6ftHpseVTg1jLnrCpi6LtODeI=" -d search="texto que uno quiera poner" -d citetype="bibtex" http://www.ottobib.com/

Con wget:

wget  --post-data 'utf8=\&#x2713;&authenticity_token=09sCjPhQInaKIs0fgg6ftHpseVTg1jLnrCpi6LtODeI&search=texto%20que%20uno%20quiera%20poner&citetype=bibtex' http://www.ottobib.com/

Ojo: con los '&' en wget, que actúan como separadores, hay que ver bien cóom se pone un '&' y que no lo identifique como separador de campos… en ese caso sugiero usar curl