2

ブラウザ認証が必要な Web サイトへのログインに問題があるようです。最初にログオンすると、Web サイトは「あなたのメールアドレスにメールを送信しました。このブラウザを認証するにはリンクをクリックしてください」というページにリダイレクトされます。

Python用のmechanizeモジュールを使用しています。ページはログインしますが、ウェブサイトは「ブラウザ」を認識しないため、「このブラウザを登録してください」というメールがたくさんあります。カスタムヘッダーを指定し、他の例に従ってCookieハンドラーを追加しようとしました...運が悪い. Web サイトにアクセスするたびに、スクリプトが新しい (未承認の) ブラウザーであると見なされます。

初期化コードは次のようになります。

    self.br = mechanize.Browser( factory=mechanize.RobustFactory() )
    self.br.add_handler(PrettifyHandler())

    cj = cookielib.LWPCookieJar()
    self.br.set_cookiejar(cj)

    self.br.addheaders = [('Accept', 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'),
                          ('User-agent', 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Ubuntu Chromium/24.0.1312.56 Chrome/24.0.1312.56 Safari/537.17'),
                          ('Referer', 'https://www.temp.com/logout'),
                          ('Accept-Encoding', 'gzip,deflate,sdch'),
                          ('Accept-Language', 'en-GB,en-US;q=0.8,en;q=0.6'),
                          ('Accept-Charset', 'ISO-8859-1,utf-8;q=0.7,*;q=0.3'),
                          ]

そして、私のログインコードは次のようになります。シンプルな html フォームに入力して送信します。

    self.br.open('https://www.temp.com/login')

    # Select the first (index zero) form
    self.br.select_form(nr=0)

    # User credentials
    self.br.form['username'] = 'temp'
    self.br.form['password'] = 'temp'

    # Login
    self.br.submit()

    # Inventory
    body = self.br.response().read().split('\n')

それでも、「ブラウザーをアクティブにするには、次のリンクをクリックしてください...」というメールを受け取るたびに、リンクをたどってブラウザーをアクティブ化/認証した後でも。

4

1 に答える 1

0

セッションを保存したい場合は、保存/読み込み機能で Cookie を保存してみてください。例:

cj = cookielib.LWPCookieJar()
cj.save('cookies.txt', ignore_discard=False, ignore_expires=False)
...
cj.load('cookies.txt', ignore_discard=False, ignore_expires=False)
于 2013-04-14T21:22:55.963 に答える