基于 aiohttp 表单的身份验证
aiohttp-form-based authentication
我找不到 aiohttp
的工作代码和登录页面。目标很简单:使用用户名和密码进行基于表单的身份验证,我想在后续的 aiohttp 异步获取调用中使用哪个 cookie。
似乎整个 Session 概念在 aiohttp 中的版本之间发生了变化,所以我很好奇如何在最新版本中实现它。我不确定如何获取一次cookie,然后在异步事件中使用它。
我真的很想看到一个完整工作的示例,因为不幸的是我无法使用我在各处找到的片段来使用它。
我想这可能是个开始,但我不确定,我当然不知道如何将所有东西连接到它(我还需要 aiohttp.TCPConnector
吗?)
http://aiohttp.readthedocs.org/en/latest/client_reference.html#aiohttp.client.ClientSession
我在 Python 2 中使用 mechanize 的非异步版本的示例(尽管我自然使用 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')
我刚刚在客户端添加了基本身份验证示例:client_auth.py
你够了吗?
P.S。实际上 ClientSession
是旧式 request
+connector
概念的替代品。会话是保存会话相关信息的更自然的方式。但旧方法仍然有效。
我找不到 aiohttp
的工作代码和登录页面。目标很简单:使用用户名和密码进行基于表单的身份验证,我想在后续的 aiohttp 异步获取调用中使用哪个 cookie。
似乎整个 Session 概念在 aiohttp 中的版本之间发生了变化,所以我很好奇如何在最新版本中实现它。我不确定如何获取一次cookie,然后在异步事件中使用它。
我真的很想看到一个完整工作的示例,因为不幸的是我无法使用我在各处找到的片段来使用它。
我想这可能是个开始,但我不确定,我当然不知道如何将所有东西连接到它(我还需要 aiohttp.TCPConnector
吗?)
http://aiohttp.readthedocs.org/en/latest/client_reference.html#aiohttp.client.ClientSession
我在 Python 2 中使用 mechanize 的非异步版本的示例(尽管我自然使用 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')
我刚刚在客户端添加了基本身份验证示例:client_auth.py
你够了吗?
P.S。实际上 ClientSession
是旧式 request
+connector
概念的替代品。会话是保存会话相关信息的更自然的方式。但旧方法仍然有效。