cookielib和Python中的表单身份验证问题

时间:2010-01-09 15:19:27

标签: python cookies gps cookielib

InstaMapper是一种GPS跟踪服务,可以在InstaMapper网页上实时跟踪设备时更频繁地更新设备的位置。我想让这种情况一直发生,所以我想我会编写一个python脚本来登录我的帐户并定期访问该页面。

import urllib2, urllib, cookielib

cj = cookielib.LWPCookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj)) 
urllib2.install_opener(opener)

params = urllib.urlencode(dict(username_hb='user', password_hb='hunter2')) 
opener.open('http://www.instamapper.com/fe?action=login', params)
if not 'id' in [cookie.name for cookie in cj]:
    raise ValueError, "Login failed"

# try secured page
resp = opener.open('http://www.instamapper.com/fe?page=track&device_key=abc')
print resp.read()
resp.close()

每次都会引发ValueError。如果我删除它并阅读响应,该页面认为我已禁用cookie并阻止访问该页面。为什么cj不抓住InstaMapper cookie?

是否有更好的方法让跟踪服务认为我正在不断查看我的帐户?

2 个答案:

答案 0 :(得分:0)

action=login是参数的一部分,应该进行相应的处理:

params = urllib.urlencode(dict(action='login', username_hb='user', password_hb='hunter2')) 
opener.open('http://www.instamapper.com/fe', params)

(另外,这个特定的用户名/密码组合无效,我认为你实际上在实际代码中使用了有效的用户名和密码,否则登录失败了。)

答案 1 :(得分:0)

您是否看过是否有专门用于阻止尝试的Cookie?我建议您使用Wireshark或其他检查器查看手动登录时是否存在更改cookie(通过javascript等)。

(道德说明:您可能违反了服务条款,并且给公司带来的费用远远超过您支付的费用。我过去常常运行这样的服务,每个额外的/计划外的位置更新都在0.01美元到0.05美元之间但是我确定它会降下来。)