如何使用python中的请求验证我们是否正确登录到网站?

2024-03-28 22:02:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我最初使用正确的凭据使用请求登录到网站。然后我尝试了一些无效的用户名和密码相同。我的回复状态仍然是200。然后我了解到响应状态会显示相应的网页是否被点击。所以现在我的疑问是如何验证我是否真的使用了正确的凭据登录到该网站


Tags: 网页密码网站状态用户名
3条回答

站点响应的状态代码完全取决于它们的实现;如果您尝试登录到web服务,则更有可能得到非200响应。如果一个登录尝试在一个正常的网站上产生了一个非200响应,那么它需要一个特殊的处理程序,而不是一个200响应,一个正常的页面提示你(可能是一个人类用户,而不是一个脚本)一个视觉提示,表明登录失败。你知道吗

如果您登录的站点无论成功或失败都返回200,那么您可能需要使用lxml或BeautifulSoup之类的工具来查找成功或失败的迹象(您可能已经在使用它来处理您登录访问的任何内容)。你知道吗

下面是一个简单的例子:

p_session = requests.Session()    
signin_response = p_session.post(signin_url,
                                 data=logininfo,
                                 headers=headers,
                                 verify=False,#verify ssl
                                 )
#print out the response content, which is in the form of dictionary
print signin_response.content

#according to the output, you may have ideas to judge whether login or not, according to the keys
#one way to fetch the value of key is:
print signin_response.json()[u'reply_msg']#assume reply_msg is one of the keys

HTTP状态码通常用于浏览器,或者用于客户端与服务器对话的API。对于普通的网站,使用状态码来获取语义错误信息并不是很有用。过度使用那里的状态码甚至可能导致浏览器无法正确呈现响应。你知道吗

因此,对于正常的HTML响应,您通常希望几乎所有内容都使用代码200。你知道吗

为了检查错误,您必须检查来自HTML响应的特定于应用程序的错误输出。找出这些迹象的一个好方法是,尝试使用无效凭据从浏览器登录,然后检查呈现的输出。或者许多网站在你登录后也会显示某种用户菜单,检查它的存在以确定你是否登录了。当它不存在时,登录可能会失败。你知道吗

相关问题 更多 >