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

2024-10-01 04:44:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直有很多麻烦得到什么应该是一个相当简单的登录脚本在一个特定的网站上工作。我的代码可以在另一个网站(Reddit)上运行,但它不适用于:

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

尽管网页上的用户名和密码被复制到了网页上,但网页上的“用户名”和“密码”都被复制到了网页上。它不遵循重定向,应该把它带到管理页。在

这是我的代码:

# 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的唯一字符串)

除了mechanize之外,我还尝试在twill中使用以下代码:

^{pr2}$

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

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?

似乎form POST方法试图将浏览器发送到实际不是URL的位置。

任何帮助都将不胜感激


Tags: the代码brformtrueurl网页link