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

时间:2015-10-20 11:58:18

标签: python python-requests

我最初使用正确的凭据使用了登录网站的请求。然后我尝试使用一些无效的用户名和密码。我仍然得到200的响应状态。然后我理解响应状态告诉相应的网页是否被击中。所以现在我怀疑的是如何验证我是否真的使用正确的凭据登录网站

3 个答案:

答案 0 :(得分:0)

网站响应的状态代码完全取决于其实施情况;如果您尝试登录Web服务,则更有可能获得非200响应。如果登录尝试在普通网站上产生了非200响应,则它需要一个特殊的处理程序,而不是200响应,正常页面提示您(可能是人类用户,而不是脚本)带有指示登录失败的视觉提示。

如果您登录的网站无论成功或失败都会返回200,您可能需要使用lxml或BeautifulSoup之类的内容来查找成功或失败的指示(可能是您正在使用已经处理了你正在登录访问的任何内容。

答案 1 :(得分:0)

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

因此,对于普通的HTML响应,您通常会期望代码200适用于几乎所有内容。

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

答案 2 :(得分:0)

一个简单的例子如下所示:

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