我使用Python的urllib和urllib2进行自动登录。我也在使用HTTPCookieProcessor来自动处理cookie。代码有点像这样:
o = urllib2.build_opener( urllib2.HTTPCookieProcessor() )
# assuming the site expects 'user' and 'pass' as query params
p = urllib.urlencode( { 'username': 'me', 'password': 'mypass' } )
# perform login with params
f = o.open( 'http://www.mysite.com/login/', p )
data = f.read()
f.close()
# second request
t = o.open( 'http://www.mysite.com/protected/area/' )
data = t.read()
t.close()
现在,重点是我不想在下载http://www.mysite.com/login/的内容时浪费带宽,因为我想要做的就是接收cookie(它们在Headers中)。此外,我首次登录时,网站会将我重定向到http://www.mysite.com/userprofile(即f.geturl()= http://www.mysite.com/userprofile)。
那么有什么方法可以避免在第一个请求中获取内容吗?
P.S。请不要问我为什么要避免传输内容的小网络使用。虽然内容很小,但我仍然不想下载它。
答案 0 :(得分:0)
只需发送HEAD
个请求而不是GET
个请求。你可以使用Python的httplib
来做到这一点。
这样的事情:
import httplib, urllib
creds = urllib.urlencode({ 'username': 'me', 'password': 'mypass' });
connection = httplib.HTTPConnection("www.mysite.com")
connection.request("HEAD", "/login/", creds)
response = connection.getresponse()
print response.getheaders()