在Python中获取HTTPS头信息

1 投票
2 回答
744 浏览
提问于 2025-04-16 20:01

我在处理HTTPS,想要获取live.com的HTTP头信息。

import urllib2

try:
    email="HelloWorld1234560@hotmail.com"
    response = urllib2.urlopen("https://signup.live.com/checkavail.aspx?chkavail="+email+"&tk=1258056184535&ru=http%3a%2f%2fmail.live.com%2f%3frru%3dinbox&wa=wsignin1.0&rpsnv=11&ct=1258055283&rver=6.0.5285.0&wp=MBI&wreply=http:%2F%2Fmail.live.com%2Fdefault.aspx&lc=1036&id=64855&bk=1258055288&rollrs=12&lic=1")
    print 'response headers: "%s"' % response.info()
except IOError, e:
    if hasattr(e, 'code'): # HTTPError
        print 'http error code: ', e.code
    elif hasattr(e, 'reason'): # URLError
        print "can't connect, reason: ", e.reason
    else:
        raise

我不想要所有的头信息,只想要Set-Cookie的信息。

如果你问这个脚本是干嘛的:它是用来检查某个邮箱在hotmail上是否可用,通过获取这个变量CheckAvail=的值。

编辑后

谢谢你的帮助……在修复后只获取Set-Cookie的信息时,我遇到了一个问题,就是在获取cookie时没有得到CheckAvail=的值。我在浏览器中打开后,看到很多信息,但没有`CheckAvail=`。打开源代码后,我找到了它!!看图片 enter image description here

2 个回答

0

这是因为你在HTTP响应中设置了'Httponly',这意味着根据规定,只有通过HTTP连接才能查看这个信息。

5

通过调用 response.info(),你会得到一个对象,这个对象是 mimetools.Message 的一个实例。简单来说,这个 mimetools.Message 是从 rfc822.Message 这个类派生出来的,而 rfc822.Message 里有一个叫 getheader() 的方法。

所以你可以这样做:

response = urllib2.urlopen("...")
print response.info().getheader("Set-Cookie") # get the value of the Set-Cookie header

不过,如果你是在检查邮件的话,我建议你使用 POP3 或 IMAP 协议,如果可以的话(Python 自带这两个协议的模块)。

撰写回答