使用python mechanize访问Sharepoint网站

1 投票
3 回答
2264 浏览
提问于 2025-04-16 17:47

我正在尝试使用 mechanize 访问 Sharepoint,但遇到了 401 错误。以下是我使用的代码:

import mechanize

url = "http://sharepoint:8080/foo/bar/foobar.aspx"

br.addheaders = [('User-agent', 'Mozilla/4.0(compatible; MSIE 7.0b; Windows NT 6.0)')]
br.add_password(url, 'domain\\user', 'myPassword')
r = br.open(url)
html = r.read()

我是不是漏掉了什么?

3 个回答

0

在查看mechanize 文档的用法时,你只需要提供用户名(比如 'john_doe'),试试看这个。

...
br.add_password(url, 'username_string', 'myPassword')
r = br.open(url)
html = r.get_data() # r.get_data() can be called many times without calling seek
0

试试这个:

br.addheaders = [('User-agent', 'Mozilla/4.0(compatible; MSIE 7.0b; Windows NT 6.0)'), ('Authorization', 'Basic %s:%s' % ('domain\\user', 'myPassword'))]

而不是这个:

br.addheaders = [('User-agent', 'Mozilla/4.0(compatible; MSIE 7.0b; Windows NT 6.0)')]

如果你的SharePoint服务器支持基本认证,这样做应该可以。

1

你有没有试过用 Python Ntlm 来访问 SharePoint 呢?

Ntlm 文档里的例子会告诉你怎么用 Urllib2 来使用它。下面是用 mechanize 进行 NTLM 认证的代码。

import mechanize
from ntlm import HTTPNtlmAuthHandler
pass_manager = mechanize.HTTPPasswordMgrWithDefaultRealm()
passman.add_password(None, url, user, password)
auth_NTLM = HTTPNtlmAuthHandler.HTTPNtlmAuthHandler(pass_manager)

browser = mechanize.Browser()
browser.add_handler(auth_NTLM)

r = browser.open(url)
html = r.read()

撰写回答