与密码保护的Jupyter / api交互

问题描述 投票:0回答:2

一位朋友试图运行script来检查哪些笔记本使用的内存最多,但他们的服务器受密码保护。我正在试图弄清楚如何使用urllib2配置身份验证,因为我不相信有用户名,只有密码。

authentication urllib2 jupyter jupyter-notebook
2个回答
1
投票

@aiguofer的答案对我不起作用,因为jupyter现在在cookie中使用'_xsrf'。接下来对我说:

s = requests.Session()
url='http://127.0.0.1:8888/login/'
resp=s.get(url)
xsrf_cookie = resp.cookies['_xsrf']

params={'_xsrf':xsrf_cookie,'password': password}
s.post(url, data=params)

之后,s可以用来称呼apis。


0
投票

在深入研究笔记本代码并通过一些反复试验后,我想出了如何做到这一点(我转而使用requests)。

我不能保证这是最好的方法,但它确实对我有用。我实际上在代码中的其他地方设置了我的vars,但为了完整性而包括在这里

import requests

hostname = '127.0.0.1'
port = '8888'
password = 'mypassword'

base_url = 'http://{0}:{1}/'.format(hostname, port)
h = {}
if password:
    r = requests.post(base_url + 'login', params={
        'password': password
    })
    h = r.request.headers
sessions = requests.get(base_url + 'api/sessions', headers=h).json()

我相信这是有效的,因为当您点击/login端点时,它会使用正确的标头集重定向您。我想requests会保留重定向的标题,因此我们可以将其重用于其他调用。最好只提取cookie并使用它们,但这现在适用:)

© www.soinside.com 2019 - 2024. All rights reserved.