Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/125.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Python/urllib访问带有;siteminder“;认证?_Python_Url_Web_Siteminder - Fatal编程技术网

使用Python/urllib访问带有;siteminder“;认证?

使用Python/urllib访问带有;siteminder“;认证?,python,url,web,siteminder,Python,Url,Web,Siteminder,我正在尝试使用Python访问和解析一个工作中的网站。站点授权是通过siteminder完成的,因此通常的urllib/urllib2用户密码不起作用。 有人知道怎么做吗? 谢谢 NoamM首先,当您通过siteminder进行身份验证时,您应该了解发生了什么。也许有相关文档,但如果没有,也不难找到:Chrome或Safari开发工具中的“网络”选项卡包含您需要的所有信息:HTTP头和每个网络请求的cookie。我也可以给你 一旦您对身份验证过程的每个步骤都有了清晰的了解,就只需要在脚本中复制相

我正在尝试使用Python访问和解析一个工作中的网站。站点授权是通过siteminder完成的,因此通常的urllib/urllib2用户密码不起作用。 有人知道怎么做吗? 谢谢
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操作。