2011-03-02 228 views
2

我是python的新手,在挣扎了一段时间之后,我几乎找到了工作的代码。Python身份验证

import urllib, urllib2, cookielib 

username = 'myuser' 
password = 'mypass' 

cj = cookielib.CookieJar() 
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj)) 
login = urllib.urlencode({'user' : username, 'pass' : password}) 
opener.open('http://www.ok.com/', login) 
mailb = opener.open('http://www.ok.com/mailbox').read() 
print mailb 

但是我打印后得到的输出只是一个重定向页面。

<html> 

<head> 

<META HTTP-EQUIV="Refresh" CONTENT="0;URL=https://login.ok.com/login.html?skin=login-page&dest=REDIR|http://www.ok.com/mailbox"> 

<HTML dir=ltr><HEAD><TITLE>OK :: Redirecting</TITLE> 

</head> 

</html> 

感谢

+0

您现在可以使用这个'cj'浏览网站。 – methyl 2011-03-02 19:21:30

回答

3

如果浏览器得到了响应,这将它解释为重定向到指定的URL的请求。

您需要对脚本进行类似的操作。您需要解析<META>标记并找到该URL,然后在该URL上执行GET操作。

+0

最后它的工作,谢谢。我也觉得我有点幸运。如果我在另一个网站尝试同样的事情,它可能无法工作。它会一直输出重定向页面?我总是可以依靠这种方法? – sophiaw 2011-03-02 20:29:50

+0

@sophiaw,谁知道ok.com会做什么?他们没有义务继续在登录时显示重定向。您需要继续测试您的应用,以确保它可以与当前版本的ok.com一起使用。 – 2011-03-02 20:38:39

+0

@ S.Lott,感谢编辑,这对OP更有帮助。 – 2011-03-02 20:39:00