网站登录后,Mechanize不会遵循重定向

时间:2014-06-22 13:26:10

标签: python mechanize twill

我在获取应该是一个非常简单的登录脚本以在特定网站上工作时遇到了很多麻烦。 我的代码适用于其他网站(Reddit),但它不起作用:

https://eo-sso-idp.eo.esa.int/idp/umsso20/login

提交表单并打印响应后,浏览器似乎位于带有HTML的页面上,尽管保存在本地HTML文件中,但我的网站“无法找到”(从控制台输出复制并粘贴到记事本文本中)文件)用户名和密码复制到相应的表单字段中。它不遵循应将其带到管理页面的重定向。

这是我的代码:

# Create a new mechanize Browser instance
br = mechanize.Browser()

# Set browser options
br.set_handle_equiv(True)
br.set_handle_redirect(True)
br.set_handle_referer(True)
br.set_handle_robots(False)
br.set_handle_redirect(mechanize.HTTPRedirectHandler)
br.set_handle_refresh(mechanize.HTTPRefreshProcessor(), max_time=1)

# Open the login URL
br.open("https://eo-sso-idp.eo.esa.int/idp/umsso20/admin")
for link in br.links():
    if link.text == "Login":
        br.follow_link(link)

# Select the first form
br.select_form(nr=0)
# Enter the username and password
br["cn"] = username
br["password"] = password
# Submit the form
response = br.submit()
print response.read()

(之所以我将浏览器设置为遵循指向登录页面的链接而不是直接转到它,是因为该页面似乎生成了一个附加到登录URL的唯一字符串)

除了机械化之外,我尝试使用twill的以下代码:

browser = get_browser()
browser.go("https://eo-sso-idp.eo.esa.int/idp/umsso20/admin")
browser.follow_link("Login")
fv("1", "cn", username)
fv("1", "password", password)
submit("1")
showlinks()

但是这段代码会产生错误:

MissingSchema: Invalid URL u'/idp/umsso20/login?fn=T2dWam0zYUZLVTh5Z3dwWGNMZmlKdz09&act=NWNDNlZhNnAwaEUzbFVGV3FZaStLUT09&pars=dEN6SzZDY3hsQmtWYjNWMDhjdWRXTW1ON2FFSFFYK2JvemtXSFczMFRuRWtGQjgwOWRjVFRsQVZUVlZMeDNmd0VDM25hSkNvWGZ1NkI0NjJWcGFNY0ZaNlFSN2JqL3RFUTJYM3NIRWdvbWJGVmo1bmhGNElYV2YyY2l4NmNIcWJZeVlLN2NFYnQrTzNaS2luRzJ2UTlnPT0ie': No schema supplied. Perhaps you meant http:///idp/umsso20/login?fn=T2dWam0zYUZLVTh5Z3dwWGNMZmlKdz09&act=NWNDNlZhNnAwaEUzbFVGV3FZaStLUT09&pars=dEN6SzZDY3hsQmtWYjNWMDhjdWRXTW1ON2FFSFFYK2JvemtXSFczMFRuRWtGQjgwOWRjVFRsQVZUVlZMeDNmd0VDM25hSkNvWGZ1NkI0NjJWcGFNY0ZaNlFSN2JqL3RFUTJYM3NIRWdvbWJGVmo1bmhGNElYV2YyY2l4NmNIcWJZeVlLN2NFYnQrTzNaS2luRzJ2UTlnPT0ie?

似乎POST方法正在尝试将浏览器发送到实际上不是URL的内容。

非常感谢任何帮助

0 个答案:

没有答案