2013-04-14 47 views
1

我似乎无法登录到网站,这就需要浏览器authenticaton。 当您第一次登录时,会发生什么情况?网站将您重定向到一个页面,上面写着“我们发送了一封电子邮件到您的电子邮件,点击链接以验证此浏览器。”不能自动登录(必须“激活”特定的浏览器)

我使用Python中机械化模块。该网页将登录,但网站永远不会识别“浏览器”,因此很多“请注册此浏览器”电子邮件!我尝试给自定义标题,以及添加一个cookie处理程序作为其他例子...没有运气。每次访问时,该网站都认为脚本是新的(未经授权的)浏览器。

初始化代码如下所示:

self.br = mechanize.Browser(factory=mechanize.RobustFactory()) 
    self.br.add_handler(PrettifyHandler()) 

    cj = cookielib.LWPCookieJar() 
    self.br.set_cookiejar(cj) 

    self.br.addheaders = [('Accept', 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'), 
          ('User-agent', 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Ubuntu Chromium/24.0.1312.56 Chrome/24.0.1312.56 Safari/537.17'), 
          ('Referer', 'https://www.temp.com/logout'), 
          ('Accept-Encoding', 'gzip,deflate,sdch'), 
          ('Accept-Language', 'en-GB,en-US;q=0.8,en;q=0.6'), 
          ('Accept-Charset', 'ISO-8859-1,utf-8;q=0.7,*;q=0.3'), 
          ] 

而且我登录的代码如下所示。它填写一个简单的html表单并提交。

self.br.open('https://www.temp.com/login') 

    # Select the first (index zero) form 
    self.br.select_form(nr=0) 

    # User credentials 
    self.br.form['username'] = 'temp' 
    self.br.form['password'] = 'temp' 

    # Login 
    self.br.submit() 

    # Inventory 
    body = self.br.response().read().split('\n') 

可是每次我得到这个电子邮件:“要激活您的浏览器,请单击下面的链接......”我按照链接和激活/验证的浏览器,甚至后。

回答

0

如果要保存会话,尽量节省饼干save/load功能。例如:

cj = cookielib.LWPCookieJar() 
cj.save('cookies.txt', ignore_discard=False, ignore_expires=False) 
... 
cj.load('cookies.txt', ignore_discard=False, ignore_expires=False) 
+0

太棒了!这很好用! 我认为cj.save方法足以做到这一点 - 我立即注意到第一次登录后,我只有一个“请验证此浏览器”电子邮件。 – jorxster