2010-02-08 25 views
7

Parola korumalı bir sayfada bulunan bir dosyayı indirmem gerekiyor. Sayfayı manuel olarak almak için, önce sıradan bir giriş sayfası üzerinden kimlik doğrulaması yapmak zorundayım. Bu sayfayı komut dosyasında almak için curl kullanmak istiyorum.
Komut dosyası ilk girişlerim. Başarılı görünüyor - bir PUT'den/login'e bir 200 döndürür. Ben dosya I getirme zaman çerezler alışverişe konu olan görebilirsiniz, ayrıntılı moddaÇerezlere giriş yapma ve tanımlama bilgilerini kullanma

C.setopt(pycurl.COOKIEJAR, 'cookie.txt') 

: Ancak, ben bir "çerez kavanoz" kullanıyorum bir 500.

ile, istenen sayfanın başarısız getirme gerekir. Şimdi benim sorum: COOKIEJAR kullanmak için daha var mı?

cevap

11

Curl'ün çerezleri saklayacağına inanıyorum ama bunları açıkça kullanmanız gerekiyor. Bunun için sadece komut satırı arayüzünü kullandım. Ne denemek isteyebilirsiniz düşünüyorum belgeleri Tarama: (ikinci istek öncesi)

+1

Birisi bunu doğru olarak işaretlemelidir. İşe yarıyor!!! Vance, bu adama biraz sahne ver! –

2

wds

C.setopt(pycurl.COOKIEFILE, 'cookie.txt') 

sağ açık. Daha fazla düzenlemeniz için

, mevcut seçenekler http://curl.haxx.se/libcurl/c/curl_easy_setopt.html numaralı telefona dayanmaktadır (tanımlama bilgisi kısayollarına bakın).

500 bir iç sunucu hatasıdır ... buradakiler hakkında daha fazla bilgi edinmeden sizin komut dosyanızdan sorumlu tutulabileceğinden emin olmak zor. Eğer sayfa Bütün bildiğimiz için (ilgisiz çerezlere) bekliyor diğer verileri geçemeyen olabilir (ve onlar zarif hata işleme uygulamaya değil!)

jb

7

Sen okunan ardından ilk çerez depolamak ve gerektiği o:

iade --help kıvrılması neyi İşte
C.setopt(pycurl.COOKIEJAR, 'cookie.txt') 
C.setopt(pycurl.COOKIEFILE, 'cookie.txt') 

:

0123:

-b, --cookie STRING/FILE String or file to read cookies from (H) 
-c, --cookie-jar FILE Write cookies to this file after operation (H) 

bu örneğine bakın

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 
İlgili konular