2011-07-01 13 views
1

私は、特定のサーバーにログインし、そこからプログラムでプログラムをダウンロードしようとしています。私はログインを知っていて、どの変数がユーザー名とパスワードであるかを知ることができました。私もこのコードでパスワードを必要としない写真をダウンロードすることができました。クッキーとユーザーエージェントを使ってWebページにログインするには?

ウェブページは私のユーザエージェントがサポートされていないと言い続けているので、ユーザエージェントを間違って設定していると思います。

クッキーとユーザーエージェントが必要です。私はクッキーを使ってページにログインする方法を知っていますが、PythonでHTTPリクエストにUser-agentパラメータを追加する方法(そして正しく追加されているかどうかを確認する方法)はわかりません。

標準のURLオープナーを作成しています。私はこのコードを使用しています:

def login(_url, _name, _password): 
    if 1: 
     opener = urllib2.build_opener(urllib2.HTTPCookieProcessor()) 
     opener.addheaders = {("User-Agent", "Mozilla/5.0 (Windows NT 6.1; rv:5.0) Gecko/20100101 Firefox/5.0")} 
     urllib2.install_opener(opener) 
     # 
     # login parameters 
     # PRE: 
     #  1] addons.mozilla.org/en-US/firefox/addon/live-http-headers/ 
     # 2] _url is first line, sometimes it ends with do-submit, php... 
     # 3] _name and _password is content 
     # SOURCE: 
     # http://www.oooff.com/php-scripts/basic-curl-form-filling-tutorial/php-newbie-form-fill-tutorial.php 
     # 
    else: 
     # 
     # i tried even mechanize 
     # but I do not know how to set it either 
     # 
     cookies = mechanize.CookieJar() 
     opener = mechanize.build_opener(mechanize.HTTPCookieProcessor(cookies)) 

    params = urllib.urlencode(dict(login=_name, password=_password)) 
    f = opener.open(_url, params) 
    data = f.read() 
    f.close() 
    return opener 

私は場所をdifferendするadheadersを移動しようとしたが、それは助けにはなりませんでした。たぶんそれは機械化で行うことができますが、私はどのようにして分かりません。

ありがとうございました。 :)

答えて

1

pythonのdocsページには、角括弧を使用してオープナーを作成するためのこの形式があります。あなたは{(...)}として渡しています

import urllib2 
opener = urllib2.build_opener() 
opener.addheaders = [('User-agent', 'Mozilla/5.0')] 
opener.open('http://www.example.com/') 
関連する問題