Can';t使用python mechanize自动登录(必须“激活”特定浏览器)

Can';t使用python mechanize自动登录(必须“激活”特定浏览器),python,forms,authentication,login,mechanize,Python,Forms,Authentication,Login,Mechanize,我似乎很难登录到需要浏览器身份验证的网站。 当你第一次登录时,网站会将你重定向到一个页面,上面写着“我们已向你的电子邮件发送了一封电子邮件,请单击链接验证此浏览器。” 我正在使用python的mechanize模块。该页面将登录,但该网站从未识别“浏览器”,因此有许多“请注册此浏览器”电子邮件!我试着给出自定义标题,并按照其他示例添加cookie处理程序。。。不走运。网站认为每次我访问时,脚本都是一个新的(未经授权的)浏览器 初始化代码如下所示: self.br = mechanize.

我似乎很难登录到需要浏览器身份验证的网站。 当你第一次登录时,网站会将你重定向到一个页面,上面写着“我们已向你的电子邮件发送了一封电子邮件,请单击链接验证此浏览器。”

我正在使用python的mechanize模块。该页面将登录,但该网站从未识别“浏览器”,因此有许多“请注册此浏览器”电子邮件!我试着给出自定义标题,并按照其他示例添加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')

但每次我收到这封电子邮件:“要激活浏览器,请单击以下链接…”即使在我跟随链接并激活/验证浏览器之后。

如果要保存会话,请尝试使用函数保存cookies。例如:

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

好极了真是太棒了!我认为cj.save方法足以做到这一点——我第一次登录后立即注意到,我只收到一封“请验证此浏览器”的电子邮件。