我需要使用Python从我公司的Sharepoint站点抓取数据,但我被困在身份验证阶段。我尝试过使用requests_ntlm
的HttpNtlmAuth
、requests_negotiate_sspi
的HttpNegotiateAuth
和mechanize
,但都不起作用。我是网络刮擦的新手,我已经被这个问题困了好几天了。我只需要获得HTML源代码,这样我就可以开始过滤我需要的数据。请任何人在这个问题上给我一些指导。
我尝试过的方法:
import requests
from requests_negotiate_sspi import HttpNegotiateAuth
# this is the security certificate I downloaded using chrome
cert = 'certsharepoint.cer'
response = requests.get(
r'https://company.sharepoint.com/xxx/xxx/xxx/xxx/xxx.aspx',
auth=HttpNegotiateAuth(),
verify=cert)
print(response.status_code)
错误:
[X509: NO_CERTIFICATE_OR_CRL_FOUND] no certificate or crl found (_ssl.c:4293)
另一种方法:
import sharepy
s = sharepy.connect("https://company.sharepoint.com/xxx/xxx/xxx/xxx/xxx.aspx",
username="username",
password="password")
错误:
Invalid Request: AADSTS90023: Invalid STS request
第一种方法中的证书似乎有问题,研究无效的STS请求没有提出任何对我有效的解决方案。
另一种方法:
import requests
from requests_ntlm import HttpNtlmAuth
r = requests.get("http://ntlm_protected_site.com",auth=HttpNtlmAuth('domain\\username','password'))
错误:
403 FORBIDDEN
将requests.get与头部一起使用,如下所示:
headers = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) '
'AppleWebKit/537.11 (KHTML, like Gecko) '
'Chrome/23.0.1271.64 Safari/537.11',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Charset': 'ISO-8859-1,utf-8;q=0.7,*;q=0.3',
'Accept-Encoding': 'none',
'Accept-Language': 'en-US,en;q=0.8',
'Connection': 'keep-alive'}
auth = HttpNtlmAuth(username = username,
password = password)
responseObject = requests.get(url, auth = auth, headers=headers)
返回200响应,而使用不带标头的requests.get将返回403禁止响应。但是,返回的HTML没有任何用处,因为它是此页面的HTML:
此外,从requests.get responseObject = requests.get(url, headers=headers)
中删除auth参数不会改变任何事情,因为它仍然返回一个200响应,其中包含“我们无法登录”页面的相同HTML。
发布于 2021-08-31 12:42:36
我通过使用https://pypi.org/project/sharepy/2.0.0b1.post2/而不是https://pypi.org/project/sharepy/连接到了我公司的sharepoint
使用当前版本的sharepy (1.3.0)和以下代码:
s = sharepy.connect("https://company.sharepoint.com",
username=username,
password=password)
responseObject = (s.get("https://company.sharepoint.com/teams/xxx/xxx/xxx.aspx"))
我得到了这个错误:
Authentication Failure: AADSTS50126: Error validating credentials due to invalid username or password
但是使用带有相同代码的sharepy 2.0.0b1.post2不会返回任何错误,并且成功地向sharepoint验证了。
https://stackoverflow.com/questions/68985077
复制相似问题