Post con curl

Instalamos la extensión “HTTP header live” para ver los posts y headers que pasa.

Vamos a probar simulación con la URL:

http://localhost:8000/mw-config/index.php

Para simularlo, primero vamos a la primera web y guardamos la cookie con el parámetro -c, los headers con -D y la página con -o y así haremos sucesivamente. Accedemos a la web con -L que sigue todas las redirecciones:

curl -A "User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0" \
     -c cookie1 \
     -D header1 \
     -o page1.html \
     -L "http://localhost:8000/mw-config/index.php"

Si abrimos el fichero pageX.html podemos ver si vamos bien.

Para simular el POST, pulsamos continue y nos fijamos en los POST de http headers:

Si hacemos click sobre el texto del post, nos abre otra ventana con los datos solo de este post:

Nos quedamos con los campos:

URL destino: rojo (-L)
Referer: rosa (-e)
Datos del POST: rojo (-d)

Ponemos el parámetro -b para leer la cookie anterior y volvemos a hacer lo mismo con -c,-D,-o subiendo un número para tener histórico:

POST:

LanguageRequestTime=1590767092&uselang=en&ContLang=en&submit-continue=Continue

Le he quitado la → del post y funciona.

curl -A "User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0" \
     -b cookie1 \
     -c cookie2 \
     -D header2 \
     -o page2.html \
     -d "LanguageRequestTime=1590767092&uselang=en&ContLang=en&submit-continue=Continue" \
     -e "http://localhost:8000/mw-config/index.php" \
     -L "http://localhost:8000/mw-config/index.php?page=Welcome"

Pulsamos otra vez continue: POST:

submit-continue=Continue
curl -A "User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0" \
     -b cookie2 \
     -c cookie3 \
     -D header3 \
     -o page3.html \
     -d "submit-continue=Continue" \
     -e "http://localhost:8000/mw-config/index.php?page=Welcome" \
     -L "http://localhost:8000/mw-config/index.php?page=Welcome"

Rellenamos los datos de la BBDD:

POST:

DBType=mysql&mysql_wgDBserver=app-db&mysql_wgDBname=my_wiki&mysql_wgDBprefix=prueba&mysql__InstallUser=root&mysql__InstallPassword=wiki&sqlite_wgSQLiteDataDir=/var/www/data&sqlite_wgDBname=my_wiki&submit-continue=Continue →
curl -A "User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0" \
     -b cookie3 \
     -c cookie4 \
     -D header4 \
     -o page4.html \
     -d "DBType=mysql&mysql_wgDBserver=app-db&mysql_wgDBname=my_wiki&mysql_wgDBprefix=prueba&mysql__InstallUser=root&mysql__InstallPassword=wiki&sqlite_wgSQLiteDataDir=/var/www/data&sqlite_wgDBname=my_wiki&submit-continue=Continue" \
     -e "http://localhost:8000/mw-config/index.php?page=DBConnect" \
     -L "http://localhost:8000/mw-config/index.php?page=DBConnect"

Si dejamos marcado lo de “Use the same account as for installation” y pulsamos continue:

POST:

mysql__SameAccount=1&mysql_wgDBuser=wikiuser&mysql_wgDBpassword=&submit-continue=Continue
curl -A "User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0" \
     -b cookie4 \
     -c cookie5 \
     -D header5 \
     -o page5.html \
     -d "mysql__SameAccount=1&mysql_wgDBuser=wikiuser&mysql_wgDBpassword=&submit-continue=Continue" \
     -e "http://localhost:8000/mw-config/index.php?page=DBSettings" \
     -L "http://localhost:8000/mw-config/index.php?page=DBSettings"