2012-02-26 50 views
1

我試圖自動化在我的大學裏獲取我當前的學生記錄的過程。在瀏覽器中,該過程涉及到輸入我大學的URL,然後單擊登錄鏈接,然後我輸入密碼和用戶名輸入https:// URLed頁面。然後從那裏輸入一個或兩個鏈接和閱讀頁面上的一些文字。現在,我的問題是,我該怎麼做才能做到這一點,但採用自動化的方式,因此我的記錄將顯示在命令行中。網址中的https://表示我認爲它使用SSL是否有某些庫可以處理此問題?另外,登錄頁面上的「提交」按鈕我很確定使用JavaScript,是否有庫來處理這個問題?用Python控制SSL網站

我確定我錯過了我的問題描述中的某些內容,所以請詢問您是否理解我的問題或需要更多信息。

PS。我不太熟悉互聯網協議,我也是Python的新手。事實上,我開始爲這個項目研究它。但是,我很熟練使用C語言,而且我對C++很滿意。

在此先感謝。 Michael,

回答

0

您不必模擬您在瀏覽器中執行的所有操作。

首先。 https/ssl沒有問題,只要你不必驗證它們(看起來你不需要),urllib2.urlopen將會處理它們。

二。當你點擊「提交」瀏覽器時,用你的用戶名,密碼和其他一些數據向服務器發送一個請求。該請求的類型可能是POST。作爲響應服務器可能會向您發送一個會話ID的cookie。因此,您只需調查服務器請求的確切格式(例如使用FireBug),然後從服務器的響應中獲取cookie。

三。只需使用該cookie來瀏覽網站上的頁面即可。 This可能會有所幫助。

P.S.正如你所看到的,答案中有太多'可能'的字眼 - 確切的認證過程可能與上面描述的不同,你必須自己調查。

+0

您應該避免使用HTTPS的'urllib2',因爲它不驗證證書(請參閱鏈接文檔中的紅框),這會使連接容易受到MITM攻擊。 (同樣適用於'httpclient',除非你添加了代碼來驗證證書。)像pycurl這樣的東西將是更好的選擇。 – Bruno 2012-02-27 09:28:29

0

Roman的回答是很好的建議:當您的腳本可以直接調用HTTP方法時,您通常不需要像真正的用戶那樣行事。

但是,如果您不熟悉網站所需的HTTP操作的逆向工程,那麼另一種方法是使用Selenium,這是一種用於模擬與網頁交互的工具。 Selenium通常被Web應用程序開發人員用來測試他們的應用程序,但它也可以用作現有網站的自動客戶端。