2012-04-16 64 views

回答

1

首先,您應該瞭解當您通過siteminder進行身份驗證時發生了什麼。也許有它的文檔,但如果不是這樣的話,不難發現:Chrome或Safari的開發人員工具中的「網絡」選項卡提供了所有您需要的信息:每個網絡請求都包含HTTP頭和Cookie。 Firebug也可以給你。

一旦您清楚瞭解身份驗證過程每一步發生的情況,只需在腳本中複製相同的行爲即可。 urllib2支持cookiesheaders。如果你需要urllib2不提供的東西,PycURL可能會做。

1

同意馬丁 - 你只需要複製瀏覽器的功能。一旦成功通過身份驗證,Siteminder會向您傳遞一個令牌。我也必須這樣做,一旦找到一個好方法就會發布。

+0

你有沒有想過這樣做? – 2015-01-09 23:40:35

0

只是做了這個 - 我知道它是一個老人 - 但如果其他人想要這樣做 - 使用請求庫。我之前在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) 
相關問題