2013-02-22 49 views
1

我想使用python登錄到使用Microsoft Forefront的網站,並檢索內部網頁的內容進行處理。登錄到使用Microsoft ForeFront「線程管理網關」的網站

我不是新來的蟒蛇,但我沒有使用任何URL庫。 我查了以下職位:

我也嘗試了幾個模塊,比如requests。仍然我無法理解這應該怎麼做,是否足以輸入用戶名/密碼?或者,我應該以某種方式使用cookie進行身份驗證?任何示例代碼將真正讚賞。

這是我的代碼至今:

import requests 

NAME = 'XXX' 
PASSWORD = 'XXX' 

URL = 'https://intra.xxx.se/CookieAuth.dll?GetLogon?curl=Z2F&reason=0&formdir=3' 

def main(): 
    # Start a session so we can have persistant cookies 
    session = requests.session() 

    # This is the form data that the page sends when logging in 
    login_data = { 
     'username': NAME, 
     'password': PASSWORD, 
     'SubmitCreds': 'login', 
    } 

    # Authenticate 
    r = session.post(URL, data=login_data) 

    # Try accessing a page that requires you to be logged in 
    r = session.get('https://intra.xxx.se/?t=1-2') 
    print r 

main() 

,但上面的代碼導致以下異常,在session.post系法:

raise ConnectionError(e) 
requests.exceptions.ConnectionError: HTTPSConnectionPool(host='intra.xxx.se', port=443): Max retries exceeded with url: /CookieAuth.dll?GetLogon?curl=Z2F&reason=0&formdir=3 (Caused by <class 'socket.error'>: [Errno 10060] A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond) 

UPDATE: 我注意到我提供了錯誤的用戶名/密碼。 一旦更新,我得到了上述代碼的HTTP-200響應,但是當我嘗試訪問任何內部站點時,我得到一個HTTP 401響應。爲什麼發生這種情況?上面的代碼有什麼問題?我應該以某種方式使用cookie嗎?

回答

0

TMG可能會因爲阻塞的連接類型而引起爭議。下一步是找出爲什麼TMG阻止您的連接嘗試。

如果您有權訪問TMG服務器,請登錄到該服務器,啓動TMG管理用戶界面(我不記得它的名稱)並查看來自IP的失敗請求的日誌地址。希望它能告訴你爲什麼連接被拒絕。

你似乎試圖通過Intranet連接到它。我看到它阻止連接的一種方式是,如果它從它認爲是在其「內部」網絡上的地址接收它們。 (TMG有兩個網絡接口,因爲它打算在兩個網絡之間使用:一個內部網絡,其資源可以抵禦威脅,另一個可能來自威脅的外部網絡。)如果它在外部網絡接口上接收到一個請求似乎來自內部網絡,它假定IP地址被欺騙並阻止連接。但是,我不能確定是否屬於這種情況,因爲我不知道此TMG服務器的內部網絡設置爲何,以及您的計算機的IP地址是否位於此內部網絡上。

+0

我想從外部IP地址訪問內部網。如果我用chrome,FF和IE試試這個,我可以簡單地輸入我的名字/密碼並繼續,我不明白使用python會有什麼不同。 – theAlse 2013-02-22 13:10:04

+0

我不是TMG專家,只是在測試環境中設置了TMG + UAG(統一接入網關)的人員。正如我所說,下一步是諮詢TMG日誌。他們應該告訴你爲什麼連接被阻止。 – 2013-02-22 19:51:57