使用带有护照 js 服务器的 python 请求进行身份验证

技术计算

我试图制作 CLI 工具来访问我的 API。此 API 使用 Express.Js 创建,并使用 Passport.js 进行身份验证,工具将使用 Python 制作。我想问如何使用 csrf 令牌和所有内容验证从 python 的请求库发送的请求。我尝试了简单的身份验证并查看了许多 stackoverflow 答案,但在这种特定情况下没有任何帮助。这是登录表单的样子。

<form action="/login/password" method="post">
<section>
    <label for="username">Username</label>
    <input id="username" name="username" type="text" autocomplete="username" required autofocus>
</section>
<section>
    <label for="current-password">Password</label>
    <input id="current-password" name="password" type="password" autocomplete="current-password" required>
</section>
<input type="hidden" name="_csrf" value="<%= csrfToken %>">
<button type="submit">Sign in</button>
这就是上面代码中提到的 `/login/password` 路由的处理方式。
router.post('/login/password', passport.authenticate('local', {
  successReturnToOrRedirect: '/',
  failureRedirect: '/login',
  failureMessage: true
}));

任何和所有的帮助将不胜感激。

技术计算

所以,当我尝试解决问题而不是在谷歌上寻找解决方案时,我想通了。我使用 BeautifulSoup 从获取 csrf 令牌/login,然后使用 POST 请求将其发送到/login/password. 这是代码

def login(session, LOGIN_URL_GET, LOGIN_URL_POST, username, password):
    page = session.get(LOGIN_URL_GET)
    soup = BeautifulSoup(page.text, "html.parser")

    csrf = soup.find('input', {'name': '_csrf'}).get('value')

    login_data = dict(username=username, password=password, _csrf=csrf, next='/')
    session.post(LOGIN_URL_POST, data=login_data, headers=dict(Referer=LOGIN_URL_GET))

然后我connect.sid像这样使用 ExpressJS 为会话提供的东西。

with requests.Session() as reqs:
    login(reqs, LOGIN_URL_GET, LOGIN_URL_POST, username, password)
    connection_sid = reqs.cookies["connect.sid"]
    reqs.close()
    do_whatever(connection_sid)

编辑:不是 100% 确定connect.sid,我应该这样做吗?

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Django使用python请求进行身份验证

使用Python请求进行Cookie身份验证

使用python和请求进行Instagram身份验证

使用Python请求进行Magiccardmarket的OAuth身份验证

403 服务器在使用soapui 获取azure 存储数据时无法对请求进行身份验证

如何使用AWS Web API和Lambda对无服务器Web请求进行身份验证?

带有护照和Nginx作为代理服务器的身份验证问题Node.js

在 REST 节点 js 服务器中进行身份验证,使用带有 Facebook 登录的 Android 客户端

Graphdb.js Node.js-使用GraphDB进行节点服务器身份验证

使用 python 请求进行身份验证 - Cookies ?有效载荷?还有什么?

使用Python请求访问Shibboleth身份验证服务器的SSL错误

Azure存储:403服务器无法对请求进行身份验证

Azure 服务器无法对请求进行身份验证

Azure API服务器无法对请求进行身份验证

身份验证(护照)足以确保Node js后端服务器的安全性?

尝试使用节点请求进行身份验证

使用请求进行身份验证后的Web抓取

使用Java http请求进行Twitch身份验证

使用Python Paramiko对SFTP服务器进行两因素(按键和键盘交互)身份验证

使用服务帐户进行GCP服务器到服务器的身份验证

如何使用令牌身份验证对 Post 请求进行身份验证?

无法使用Windows身份验证向SMTP服务器进行身份验证

使用Google身份验证在SSH服务器上进行两因素身份验证

New-AzStorageShare Powerhsell Cmdlet 失败,因为“服务器无法对请求进行身份验证”。

使用pymodm连接MongoDB服务器的Python脚本中的身份验证失败错误

使用Firebase机密使用HTTP POST请求对Firebase服务器端进行身份验证

通过POST使用请求库进行python身份验证

通过带有密码的跳转服务器进行scp,使用私钥对目标进行身份验证

Vue.js SSR检查用户已针对每个请求进行身份验证