使用Python / urllib通过“siteminder”身份验证访问网站?

时间:2012-04-16 06:19:16

标签: python url web siteminder

我正在尝试使用Python访问和解析网站。站点授权是通过siteminder完成的,因此通常的urllib / urllib2用户密码不起作用。 有谁知道如何做到这一点? 谢谢 NoamM

3 个答案:

答案 0 :(得分:2)

刚刚做到这一点 - 我知道这是一个老人 - 但如果有其他人想要这样做 - 请使用请求库。我以前在C#中做过这个并且使用了大量的代码 - 但这只需要登录我的公司siteminder系统 - 很好。 request.session()对象将保留重定向,标题和cookie - 所以您需要担心的是发布登录表单。我确定您的环境中的变量会有所不同,但过程将是相同的。

output.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)

答案 1 :(得分:1)

首先,您应该了解通过siteminder进行身份验证时发生的情况。也许有相关的文档,但如果没有,那就不难发现:Chrome或Safari的开发人员工具中的网络选项卡具有您需要的所有信息:每个网络请求的HTTP标头和Cookie。 Firebug也可以给你。

一旦您清楚了解身份验证过程的每个步骤发生了什么,只需在脚本中复制相同的行为即可。 urllib2支持cookiesheaders。如果你需要urllib2没有提供的东西,PycURL可能会这样做。

答案 2 :(得分:1)

同意Martin - 您需要复制浏览器的功能。成功通过身份验证后,Siteminder将向您传递令牌。我也必须这样做,一旦我找到一个好方法就会发布。

相关问题