CURL para acceder a una página que requiere un inicio de sesión desde una página diferente

Tengo 2 páginas: xyz.com/a y xyz.com/b . Solo puedo acceder a xyz.com/b si y solo si inicio sesión en xyz.com/a primero. Si xyz.com/b acceso a xyz.com/b sin pasar por el otro, simplemente obtengo acceso denegado (sin redirección para iniciar sesión) a través del navegador. Una vez que inicie sesión en xyz.com/a , puedo acceder al otro.

Mi problema es hacer esto usando el comando curl. Puedo iniciar sesión correctamente en xyz.com/a usando curl, pero luego pruebo xyx.com/b y obtengo acceso denegado.

Yo uso lo siguiente:

 curl --user user:pass https://xyz.com/a #works ok curl https://xyz.com/b #doesn't work 

Intenté usar la segunda línea con y sin la parte de usuario / contraseña y todavía no funciona. Ambas páginas usan la misma CA, entonces eso no es un problema. ¿Alguna sugerencia? Gracias

El sitio web probablemente use cookies para almacenar su información de sesión. Cuando corres

 curl --user user:pass https://xyz.com/a #works ok curl https://xyz.com/b #doesn't work 

curl se ejecuta dos veces, en dos sesiones separadas. Por lo tanto, cuando se ejecuta el segundo comando, las cookies establecidas por el primer comando no están disponibles; es como si hubiera iniciado sesión en a página en a sola sesión del navegador, e intentado acceder a la página b en una diferente.

Lo que debe hacer es guardar las cookies creadas por el primer comando:

 curl --user user:pass --cookie-jar ./somefile https://xyz.com/a 

y luego volver a leerlos cuando ejecuta el segundo:

 curl --cookie ./somefile https://xyz.com/b 

Alternativamente, puede intentar descargar ambos archivos en el mismo comando, que creo que utilizará las mismas cookies.

También es posible que desee iniciar sesión mediante el navegador y obtener el comando con todos los encabezados, incluidas las cookies:

Abra la pestaña Red de Herramientas del desarrollador, inicie sesión, navegue a la página necesaria, use “Copiar como cURL”.

captura de pantalla

Después de buscar en Google encontré esto:

 curl -c cookie.txt -d "LoginName=someuser" -d "password=somepass" https://oursite/a curl -b cookie.txt https://oursite/b 

No tengo idea de si funciona, pero podría llevarte en la dirección correcta.