我想使用python登錄到使用Microsoft Forefront
的網站,並檢索內部網頁的內容進行處理。登錄到使用Microsoft ForeFront「線程管理網關」的網站
我不是新來的蟒蛇,但我沒有使用任何URL庫。 我查了以下職位:
- How can I log into a website using python?
- How can I login to a website with Python?
- How to use Python to login to a webpage and retrieve cookies for later usage?
- Logging in to websites with python
我也嘗試了幾個模塊,比如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嗎?
我想從外部IP地址訪問內部網。如果我用chrome,FF和IE試試這個,我可以簡單地輸入我的名字/密碼並繼續,我不明白使用python會有什麼不同。 – theAlse 2013-02-22 13:10:04
我不是TMG專家,只是在測試環境中設置了TMG + UAG(統一接入網關)的人員。正如我所說,下一步是諮詢TMG日誌。他們應該告訴你爲什麼連接被阻止。 – 2013-02-22 19:51:57