7

aiohttpログインページと組み合わせて動作するコードが見つかりません。目標は単純です。ユーザー名とパスワードを使用したフォームベースの認証です。この Cookie は、後続の aiohttp 非同期フェッチ呼び出しで使用したいと考えています。

バージョン間で aiohttp のセッション全体の概念が変更されたように見えるので、最新バージョンでどのように実装できるか興味があります。Cookie を一度取得してから、それを非同期の問題で使用する方法がわかりません。

残念ながら、どこにでもあるスニペットで動作させることができなかったので、完全に機能する例を見たいと思っています。

これが始まりかもしれませんが、よくわかりませんし、すべてをそれに接続する方法も確かにわかりません(まだ必要aiohttp.TCPConnectorですか?) http://aiohttp.readthedocs.org/en/latest/ client_reference.html#aiohttp.client.ClientSession

mechanize を使用した Python 2 での非非同期バージョンの例 (ただし、asyncio などには当然 Python 3 を使用します):

import mechanize
import urllib

class MyClass()
    def __init__(self):
        self.data = {'username' : 'me', 'password' : 'pw'}
        self.login_url = 'http://example.com/login'
        self.login()

    def call(self, url):
        request2 = mechanize.Request(url)
        self.cookie_jar.add_cookie_header(request2)
        response2 = mechanize.urlopen(request2).read()
        return response2    

    def login(self):
        request = mechanize.Request(self.login_url)
        # 'username' and 'password' keys are actually the name of the <input>
        logInfo = urllib.urlencode({'username' : self.data['username'], 
                                    'password' : self.data['password']})
        response = mechanize.urlopen(request, data = logInfo)
        cookie_jar = mechanize.CookieJar()
        cookie_jar.extract_cookies(response, request)
        self.cookie_jar = cookie_jar

mc = MyClass()
mc.call('http://example.com/other_url')
4

1 に答える 1