Python 3.x Python请求登录
我正在创建一个python脚本,它将登录到torrent站点并获取最新的torrentPython 3.x Python请求登录,python-3.x,beautifulsoup,python-requests,Python 3.x,Beautifulsoup,Python Requests,我正在创建一个python脚本,它将登录到torrent站点并获取最新的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.
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>
没有登录!
错误:您试图查看的页面只能在登录时使用
注意:您需要启用cookies才能登录
用户名:
密码:
我的有效载荷设置正确吗?它还说“您需要启用cookie才能登录”,所以我必须在脚本中设置cookie功能吗?这纯粹是猜测,因为我无法在没有帐户的情况下再现您的问题 我认为问题实际上是您向错误的URL发出了
POST
。您希望发布到表单的目标,而不是登录页面。原因是您希望模拟登录页面正在执行的操作,即POST
到takelogin.php
站点
尝试从有效负载中删除操作
,并用以下内容替换您的post
c.post('https://www.bitsoup.me/takelogin.php', data=payload)
我推断这是因为我在
POST
到takelogin.php
时只得到了“密码不正确”的HTML,而OP的原始帖子没有什么意思。听起来你的脚本没有正确发布登录cookie。不幸的是,只有拥有帐户的人才能真正帮助你,因为在没有实际帐户的情况下无法调试此特定问题:(@merlin2011:(网站禁用了新的注册,这很糟糕,但是你能澄清一下登录cookie部分吗?你可以先试试我的答案,让我知道这是否有效。我只是做了一些戳,看起来关于cookie的消息会显示出来,而不管你是否启用和禁用cookie。而且,它看起来像是库。)您正在使用的“应该处理cookies”。@sevol,您知道什么,我想我错了。我可以不需要帐户就帮您P@sevol请考虑接受这个答案,如果它解决了你的问题。我猜你错了,但同时也是正确的!如果你陷入洪灾,你应该尝试这个网站,一旦注册再次打开。@塞沃,请帮我一个忙。如果打开,请留下评论。:PIf you want我可以向您发送邀请。我刚刚记得我还有4条:)我需要您的电子邮件。