我正在尝试使用机械化连接网页,但我收到了http 401错误.
这是我的代码;
import base64,mechanize url = "http://www.dogus.edu.tr/dusor/FrmMain.aspx" user = "user" pwd = "pwd" br = mechanize.browser() br.set_handle_robots(False) br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(),max_time=1) br.addheaders = [('User-agent','Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')] br.add_password(url,user,pwd) #br.addheaders.append(('Authorization','Basic %s' % base64.encodestring('%s:%s' % (user,pwd)))) print br.open(url).read()
add_password和addheaders都不起作用.是因为我从未指定过领域吗?我怎样才能获得该网页使用的领域?我正在使用的用户名和密码是正确的,因为我可以使用带有这些凭据的chrome登录.
解决方法
您用作示例页面的站点需要
NTLM身份验证.您可以通过查看返回的HEADER字段来查看此信息.例如curl -I http://www.dogus.edu.tr/dusor/FrmMain.aspx返回:
HTTP/1.1 401 Unauthorized Content-Length: 1293 Content-Type: text/html Server: Microsoft-IIS/7.0 WWW-Authenticate: Negotiate WWW-Authenticate: NTLM X-Powered-By: ASP.NET Date: Mon,07 Apr 2014 21:24:09 GMT
行WWW-Authenticate:NTLM说,使用哪种身份验证方法.我认为这个问题Use python mechanize to log into pages with NTLM authentication的答案对你有帮助.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。