我正在创建一个python脚本,它将登录到torrent网站并获取最新的种子。
from bs4 import BeautifulSoup
from requests import session
payload = {
'action': 'takelogin.php',
'username': 'username',
'password': 'password'
}
with session() as c:
c.post('https://www.bitsoup.me/login.php', data=payload)
request = c.get('https://www.bitsoup.me/browse.php?cat=19')
print request.headers
print request.text
当我尝试上面的脚本时,我得到了
<tr><td align=center class=main style="padding-top: 20px; padding-bottom: 20px">
<h1>Not logged in!</h1>
<p><b>Error:</b> The page you tried to view can only be used when you're logged in.</p>
<form method="post" action="takelogin.php">
<p>Note: You need cookies enabled to log in.</p>
<table border="0" cellpadding=5>
<tr><td class=rowhead>Username:</td><td align=left><input type="text" size=40 name="username" /></td></tr>
<tr><td class=rowhead>Password:</td><td align=left><input type="password" size=40 name="password" /></td></tr>
<tr><td colspan="2" align="center"><input type="submit" value="Log in!" class=btn></td></tr></table>
<input type="hidden" name="returnto" value="/browse.php?cat=19" />
</form>
我的有效负载设置是否正确?它还说“你需要启用cookie才能登录”,所以我必须在我的脚本中设置cookie功能吗?
答案 0 :(得分:1)
这是纯粹的推测,因为如果没有帐户,我无法重现您的问题。
我认为问题实际上是您向错误的网址发布了POST
。您希望POST到表单的目标,而不是登录页面。原因是您希望模拟登录页面正在执行的操作,POST
到takelogin.php
站点。
尝试从有效负载中删除action
,然后将post
替换为以下内容。
c.post('https://www.bitsoup.me/takelogin.php', data=payload)
我推断这是因为我在POST
到takelogin.php
时只得到“密码不正确”的HTML,并且OP的原始POST没有任何有趣的内容。