python - 无法使用 python mechanize 自动登录(必须 "activate"特定浏览器)

标签 python forms authentication login mechanize

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

我正在使用 python 的 Mechanize 模块。该页面将登录,但是该网站永远不会识别“浏览器”,因此许多“请注册此浏览器”电子邮件!我尝试根据其他示例提供自定义 header 以及添加 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')

然而,每次我收到这封电子邮件时:“要激活您的浏览器,请单击以下链接...”,即使在我点击链接并激活/验证浏览器之后也是如此。

最佳答案

如果您想保存 session ,请尝试使用 save/load 保存 cookie。功能。例子:

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

关于python - 无法使用 python mechanize 自动登录(必须 "activate"特定浏览器),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16004322/

相关文章:

python - 如何连接两个数据帧,但在发生冲突时仅从一个数据帧中获取值?

javascript - 使用/javascript 创建表单并将变量传递给函数

php - laravel 中的 Eloquent 和数据库身份验证驱动程序有什么区别

javascript 表单验证未按预期工作

security - 允许用户稍后添加密码的身份验证系统?

java - Google App Engine - 仅对 POST 方法应用安全约束?

python - 在 matplotlib 颜色图中选择起始颜色

python - 字典不会以字符串作为键更新

python - 如何获得从每个列表中选择一个元素的所有组合?

javascript - jQuery:验证最初隐藏的字段