J'essaie d'utiliser Wget pour télécharger une page, mais je n'arrive pas à dépasser l'écran de connexion.
Comment envoyer le nom d'utilisateur / mot de passe à l'aide des données de publication sur la page de connexion, puis télécharger la page réelle en tant qu'utilisateur authentifié?
Réponses:
Basé sur la page de manuel:
Assurez-vous que le
--post-data
paramètre est correctement codé en pourcentage (en particulier les esperluettes!) Ou la demande échouera probablement. Assurez - vous également queuser
etpassword
sont les touches correctes; vous pouvez trouver les bonnes clés en détectant le code HTML de la page de connexion (recherchez la fonction «inspecter l'élément» de votre navigateur et trouvez l'name
attribut dans les champs de nom d'utilisateur et de mot de passe).la source
-p
(--page-requisites
) pour cela.--delete-after
à la première récupération afin de ne pas finir par enregistrer la page de résultats de la connexion.WGET64: missing URL
j'ai mis toute la commande wget sur une seule ligne et supprimé `\`Si vous en avez besoin pour une utilisation unique, vous pouvez vous connecter via le navigateur et copier les en-têtes nécessaires par la suite:
Utilisez "Copier en tant que cURL" dans l'onglet Réseau des outils de développement (rechargez la page après ouverture) et remplacez l'indicateur d'en-tête de curl
-H
et--data
par wget--header
et et--post-data
.la source
wget
au cookie correct; Je soupçonne que le service Web vérifie plusieurs en-têtes GET différents, même apparemment sans importance comme "User-Agent" ou "Cache-Control".wget
fourni les données de manière erronée.J'ai directement donné des cookies d'une connexion existante à wget avec --no-cookies et l'en-tête de requête HTTP Cookie. Dans mon cas, c'était une connexion à l'université Moodle où la connexion semble plus complexe (en utilisant plusieurs demandes avec un ticket de connexion). J'ai ajouté --post-data car c'était une requête POST. Par exemple, obtenez la liste de tous les utilisateurs de Moodle:
wget --no-cookies --header "Cookie: <name>=<value>" --post-data 'tab=search&name=+&personsubmit=Rechercher&keywords=&keywordsoption=allmine' https://moodle.unistra.fr/message/index.php
la source
J'ai eu le même problème. Ma solution était de faire la connexion via Chrome et de sauvegarder les données des cookies dans un fichier texte. Cela se fait facilement avec cette extension Chrome : extension d'exportation Chrome cookie.txt .
Lorsque vous obtenez les données des cookies, il existe également un exemple sur la façon de les utiliser avec wget. Une simple ligne de commande copier-coller vous est fournie.
la source
Je voulais un one-liner qui ne télécharge aucun fichier; voici un exemple de canalisation de la sortie du cookie dans la prochaine requête. Je n'ai testé que les éléments suivants sur Gentoo, mais cela devrait fonctionner dans la plupart des environnements * nix:
wget -q -O /dev/null --save-cookies /dev/stdout --post-data 'u=user&p=pass' 'http://example.com/login' | wget -q -O - --load-cookies /dev/stdin 'http://example.com/private/page'
(il s'agit d'une seule ligne, mais elle s'enroule probablement sur votre navigateur)Si vous souhaitez que la sortie soit enregistrée dans un fichier, passez
-O -
à-O /some/file/name
la source
Vous n'avez pas besoin de cURL pour faire des données de formulaire POSTed.
--post-data 'key1=value1&key2=value2'
fonctionne très bien. Remarque: vous pouvez également passer un nom de fichier à wget avec les données POST dans le fichier.la source
S'ils utilisent l'authentification de base:
S'ils utilisent des données de formulaire POSTed, vous devrez utiliser quelque chose comme cURL à la place.
la source
Une solution qui utilise lynx et wget.
Remarque: Lynx doit avoir été compilé avec l' indicateur --enable-persistent-cookies pour que cela fonctionne
Lorsque vous souhaitez utiliser wget pour télécharger un fichier à partir d'un site qui nécessite une connexion, vous avez juste besoin d'un fichier cookie. Afin de générer le fichier cookie, je choisis lynx. lynx est un navigateur Web de texte. Vous avez d'abord besoin d'un fichier de configuration pour lynx pour enregistrer les cookies. Créez un fichier lynx.cfg. Écrivez ces configurations dans le fichier.
Ensuite, lancez lynx avec cette commande:
Après avoir entré le nom d'utilisateur et le mot de passe, puis sélectionnez «me conserver sur ce PC» ou quelque chose de similaire. Si vous vous connectez avec succès, vous verrez une belle page Web de texte du site. Et vous vous déconnectez. Dans le répertoire actuel, vous trouverez un fichier cookie nommé cookie.file. C'est ce dont nous avons besoin pour wget.
Ensuite, wget peut télécharger un fichier à partir du site avec cette commande.
la source
Exemple pour télécharger avec wget sur le serveur un lien de gros fichier qui peut être obtenu dans votre navigateur.
Par exemple en utilisant Google Chrome.
Connectez-vous où vous en avez besoin et appuyez sur télécharger. Accédez au téléchargement et copiez votre lien.
Ensuite, ouvrez DevTools sur une page où vous vous connectez, accédez à la console et obtenez vos cookies, en entrant
document.cookie
Maintenant, allez sur le serveur et téléchargez votre fichier:
wget --header "Cookie: <YOUR_COOKIE_OUTPUT_FROM_CONSOLE>" <YOUR_DOWNLOAD_LINK>
la source