gpt4 book ai didi

python - 使用Python登录https网站

转载 作者:太空宇宙 更新时间:2023-11-04 10:09:08 24 4
gpt4 key购买 nike

我刚开始在 stackoverflow 上发帖,所以请不要咬人!我不得不求助于开一个帐户并寻求帮助,以避免我的头再撞到 table 上......

我正在尝试登录以下网站 https://account.socialbakers.com/login在 python 中使用请求模块。似乎 requests 模块是我要去的地方,但 session.post() 函数对我不起作用。我不知道这种形式是否有什么独特之处,或者网站是 https://

登录表单如下:

<form action="/login" id="login-form" method="post" novalidate="">
<big class="error-message">
<big>
<strong>
</strong>
</big>
</big>
<div class="item-full">
<label for="">
<span class="label-header">
<span>
Your e-mail address
</span>
</span>
<input id="email" name="email" type="email"/>
</label>
</div>
<div class="item-list">
<div class="item-big">
<label for="">
<span class="label-header">
<span>
Password
</span>
</span>
<input id="password" name="password" type="password"/>
</label>
</div>
<div class="item-small">
<button class="btn btn-green" type="submit">
Login
</button>
</div>
</div>
<p>
<a href="/email/reset-password">
<strong>
Lost password?
</strong>
</a>
</p>
</form>

基于以下帖子 How to "log in" to a website using Python's Requests module?除其他外,我尝试了以下代码:

url = 'https://account.socialbakers.com/login'
payload = dict(email = 'Myemail', password = 'Mypass')
with session() as s:
soup = BeautifulSoup(s.get(url).content,'lxml')
p = s.post(url, data = payload, verify=True)
print(p.text)

然而,这只是再次给我登录页面,但似乎并没有让我登录

我在表格中检查过我指的是输入“电子邮件”和“密码”的正确名称。我也试过显式地传递 cookie。建议使用 verify=True 参数来处理网站是 https 的事实。

我无法弄清楚此表单与链接帖子中的表单有何不符/有何不同。

谢谢

编辑:将 p = s.get 更新为 p = s.post

最佳答案

检查了网站。它发送密码的 SHA3 哈希值而不是明文发送。您可以在 script.js 的第 111 行中看到这一点它包含在主页中,如下所示:

<script src="/js/script.js"></script>

head 标签内。

因此您需要在发送 POST 请求时复制此行为。我找到了 pysha3很好地完成这项工作的库。

所以先安装pysha3通过运行 pip install pysha3(必要时提供 sudo)然后运行下面的代码

import sha3
import hashlib
import request

url = 'https://account.socialbakers.com/login'
myemail = "abhigolu10@gmail.com"
mypassword = hashlib.sha3_512(b"st@ck0verflow").hexdigest() #take SHA3 of password
payload = {'email':myemail, 'password':mypassword}
with session() as s:
soup = BeautifulSoup(s.get(url).content,'lxml')
p = s.post(url, data = payload, verify=True)
print(p.text)

您将获得正确的登录页面!

关于python - 使用Python登录https网站,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39358781/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com