J'ai 2 pages: xyz.com/a
et xyz.com/b
. Je ne peux accéder à xyz.com/b
que si et seulement si je me connecte d'abord à xyz.com/a
. Si j'accède à xyz.com/b
sans passer par l'autre, j'obtiens simplement un accès refusé (pas de redirection de connexion) via le navigateur. Une fois connecté à xyz.com/a
, je peux accéder à l’autre.
Mon problème est de le faire en utilisant la commande curl. Je peux me connecter avec succès à xyz.com/a
à l'aide de curl, mais essayez ensuite xyx.com/b
et l'accès est refusé.
J'utilise les éléments suivants:
curl --user user:pass https://xyz.com/a #works ok
curl https://xyz.com/b #doesn't work
J'ai essayé d'utiliser la deuxième ligne avec et sans la partie utilisateur/mot de passe et ne fonctionne toujours pas. Les deux pages utilisent la même autorité de certification. Ce n'est donc pas un problème. Aucune suggestion? Merci
Le site Web utilise probablement cookies pour stocker les informations de votre session. Quand tu cours
curl --user user:pass https://xyz.com/a #works ok
curl https://xyz.com/b #doesn't work
curl
est exécuté deux fois, en deux sessions distinctes. Ainsi, lorsque la deuxième commande est exécutée, les cookies définis par la première commande ne sont pas disponibles. c'est comme si vous vous êtes connecté à la page a
dans une session de navigateur et que vous avez essayé d'accéder à la page b
dans une autre.
Ce que vous devez faire est de enregistrer les cookies créés par la première commande:
curl --user user:pass --cookie-jar ./somefile https://xyz.com/a
puis relisez-les lors de l'exécution du second:
curl --cookie ./somefile https://xyz.com/b
Sinon, vous pouvez essayer de télécharger les deux fichiers avec la même commande, qui, je pense, utilisera les mêmes cookies.
Vous pouvez également vous connecter via un navigateur et obtenir la commande avec tous les en-têtes, y compris les cookies:
Ouvrez l'onglet Réseau des Outils de développement, connectez-vous, accédez à la page souhaitée, utilisez "Copier en tant que cURL".
Après quelques recherches sur Google, j'ai trouvé ceci:
curl -c cookie.txt -d "LoginName=someuser" -d "password=somepass" https://oursite/a
curl -b cookie.txt https://oursite/b
Aucune idée si cela fonctionne, mais cela pourrait vous conduire dans la bonne direction.