使用Python/urllib访问带有;siteminder“;认证?
我正在尝试使用Python访问和解析一个工作中的网站。站点授权是通过siteminder完成的,因此通常的urllib/urllib2用户密码不起作用。 有人知道怎么做吗? 谢谢使用Python/urllib访问带有;siteminder“;认证?,python,url,web,siteminder,Python,Url,Web,Siteminder,我正在尝试使用Python访问和解析一个工作中的网站。站点授权是通过siteminder完成的,因此通常的urllib/urllib2用户密码不起作用。 有人知道怎么做吗? 谢谢 NoamM首先,当您通过siteminder进行身份验证时,您应该了解发生了什么。也许有相关文档,但如果没有,也不难找到:Chrome或Safari开发工具中的“网络”选项卡包含您需要的所有信息:HTTP头和每个网络请求的cookie。我也可以给你 一旦您对身份验证过程的每个步骤都有了清晰的了解,就只需要在脚本中复制相
NoamM首先,当您通过siteminder进行身份验证时,您应该了解发生了什么。也许有相关文档,但如果没有,也不难找到:Chrome或Safari开发工具中的“网络”选项卡包含您需要的所有信息:HTTP头和每个网络请求的cookie。我也可以给你
一旦您对身份验证过程的每个步骤都有了清晰的了解,就只需要在脚本中复制相同的行为。支持和。如果您需要urllib2没有提供的东西,我们可能会提供。同意Martin的观点-您只需要复制浏览器的功能。Siteminder将在成功验证后向您传递令牌。我也必须这样做,一旦我找到一个好方法,我会发布。刚刚做了这个-我知道这是一个古老的-但如果有人想这样做-使用请求库。我以前在C#中做过这件事,并使用了大量的代码——但这就是登录我的公司siteminder系统所需要的全部——很好。request.session()对象将保留重定向、头和cookie,因此您只需发布登录表单。我相信在您的环境中,变量会有所不同,但过程是相同的 text将是您想要解析的目标页面的主体,然后您可以使用xpath或其他方法来解析该页面
import requests
r = requests.session()
postUrl = "https://loginUrl"
params = { 'USER': 'user',
'PASSWORD': 'pass',
'SMENC': 'ISO-8859-1',
'SMLOCALE': 'US-EN',
'target': '/redir.shtml?GOTO=redirecturl}',
'smauthreason': '0' }
r.post(postUrl, data=params)
getUrl = "http://urlFromBehindLogInYouWantDataFrom"
output = r.get(getUrl)
print(output.text)
您是否有时间这样做过?别忘了
pip安装请求
。此外,当提供了大多数身份验证所具有的正确重定向或目标url时,您不必执行额外的get操作。