9
votes

Se connecter et utiliser des cookies dans Pycurl

Je dois télécharger un fichier sur une page protégée par mot de passe. Pour accéder à la page manuellement, je dois d'abord authentifier via une page de connexion ordinaire. Je veux utiliser Curl pour récupérer cette page dans le script.
Mon script d'abord connecté. Il semble réussir - il retourne un 200 à partir d'une mise en place / login. Cependant, l'extraction de la page souhaitée échoue, avec un 500.

J'utilise un "jar de cookie": xxx

en mode verbeux, je peux voir des cookies étant échangé quand je vais chercher le fichier dont j'ai besoin. Maintenant, ma question: y a-t-il de plus en utilisant un cookiejar?


0 commentaires

3 Réponses :


15
votes

Je crois que CURL stockera les cookies, mais vous devez les utiliser explicitement. Je n'ai jamais utilisé l'interface de ligne de commande que pour cela. Numérisation de la documentation Je pense que vous voudrez peut-être essayer: xxx

(avant la deuxième demande)


1 commentaires

Quelqu'un devrait marquer cela comme correct. Ça marche!!! Vance, donnez à cet homme des accessoires !!!



2
votes

WDS est juste sur.

Pour votre autre édification, les options disponibles sont basées sur celles de http: // curl .haxx.se / libcurl / c / curl_easy_setopt.html (voir la section sur les raccourcis de cookie).

A 500 est une erreur de serveur interne ... Difficile d'être sûr de savoir si cela peut être blâmé sur votre script sans connaître plus d'informations sur ce qui se passe ici. Vous pourriez ne pas défiler d'autres données que la page s'attend à ce que nous sachions (sans rapport avec les cookies) pour tout ce que nous savons (et ils n'ont pas mis en œuvre la manipulation de l'erreur gracieuse!)

JB


0 commentaires

9
votes

Vous devez d'abord stocker la cookie, puis la lire: XXX PRE>

Ici ce que Curl --Help renvoyé: P>

def connect(self):
    '''
    Connect to NGNMS server
    '''
    host_url = self.ngnms_host + '/login'

    c = pycurl.Curl()
    c.setopt(c.URL, host_url)
    c.setopt(pycurl.TIMEOUT, 10)

    c.setopt(pycurl.FOLLOWLOCATION, 1)
    c.setopt(pycurl.POSTFIELDS, 'j_username={ngnms_user}&j_password={ngnms_password}'.format(**self.ngnms_login))
    c.setopt(pycurl.COOKIEJAR, 'data/ngnms.cookie')

    # c.setopt(c.VERBOSE, True)

    c.setopt(pycurl.SSL_VERIFYPEER, 0);
    session = c
    return session


0 commentaires