我正在尝试使用 Python 脚本登录网站,存储我收到的 cookie,然后使用相同的 cookie 访问网站的会员专用部分。我已经阅读了有关该主题的几篇文章和答案,但没有一个答案对我有用。
以下是我尝试访问的网站登录页面的 HTML 代码。
<form action="/login?task=user.login" method="post">
<fieldset>
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="70" nowrap="">Username </td>
<td width="260"><input type="text" name="username" id="username" value="" class="validate-username" size="25"/></td>
</tr>
<tr>
<td width="70" nowrap="">Password </td>
<td width="260"><input type="password" name="password" id="password" value="" class="validate-password" size="25"/></td>
</tr>
<tr>
<td colspan="2"><label style="float: left;width: 70%;" for="modlgn_remember">Remember Me</label>
<input style="float: right;width: 20%;"id="modlgn_remember" type="checkbox" name="remember" class="inputbox" value="yes"/></td>
</tr>
<tr>
<td colspan="2" width="100%"> <a href="/reset-password"> Forgot your password?</a></td>
</tr>
<tr>
<td colspan="2" width="100%"> <a href="/username-reminder">Forgot your username?</a></td>
</tr>
<tr>
<td colspan="2"><button type="submit" class="button cta">Log in</button></td>
<!-- <td colspan="1"><a href="/--><!--">Register Now</a></td>-->
</tr>
</tbody>
</table>
<input type="hidden" name="return"
value="aHR0cHM6Ly9maWYuY29tLw=="/>
<input type="hidden" name="3295f23066f7c6ab53c290c6c022cc4b" value="1" /> </fieldset>
</form>
这是我自己用来尝试登录的代码。
from requests import session
payload = {
'username': 'MY_USERNAME',
'password': 'MY_PASSWORD'
}
s = session()
s.post('https://fif.com/login?task=user.login', data=payload)
response = s.get('https://fif.com/tools/capacity')
从我读过的所有内容来看,这应该有效,但事实并非如此。我已经为此苦苦挣扎了两天,所以如果你知道答案,我会喜欢这个解决方案。
作为参考,以下是我查看过的所有其他 StackOverflow 帖子,希望能找到答案:
- Python 请求和持久会话
- 使用 Python 请求登录站点
- 使用python登录网站
- 如何使用Python的Requests模块“登录”网站?
- Python:请求会话登录 Cookie
- 如何使用Python登录网页并检索cookie以供以后使用?
- cUrl 登录然后 cUrl 下载
您应该发布所有必需的数据,您可以使用bs4解析登录页面以获取您需要的值:
from requests import session
from bs4 import BeautifulSoup
data = {
'username': 'MY_USERNAME',
'password': 'MY_PASSWORD'
}
head = {"User-Agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36"}
with session() as s:
soup = BeautifulSoup(s.get("https://fif.com/login").content)
form_data = soup.select("form[action^=/login?task] input")
data.update({inp["name"]: inp["value"] for inp in form_data if inp["name"] not in data})
s.post('https://fif.com/login?task=user.login', data=data, headers=head)
resp = s.get('https://fif.com/tools/capacity')
如果您发出请求并查看 chrome 工具或 firebug,表单数据如下所示:
username:foo
password:bar
return:aW5kZXgucGhwP29wdGlvbj1jb21fdXNlcnMmdmlldz1wcm9maWxl
d68a2b40daf7b6c8eaa3a2f652f7ee62:1
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)