2013-12-10 90 views
0

我正在使用NodeJS創建一個小型應用程序來訪問我的Intranet上的打印機Web界面。我使用require模塊連接模塊和cheerio模塊來解析/顯示數據。Can NodeJS可以從網站保存會話,然後像瀏覽器一樣操作並瀏覽所述網站?

不幸的是,其中一臺打印機使用登錄表單(與html header認證相關)。我正在使用request.post函數併發送正確的參數,如果這是成功的,那麼我通過cheerio.load(new url here)找到需要的DOM中的信息 - 但這不成功,我被重定向到「Session Timed Out」頁面。

我需要的方式來保持會議從最初的POST請求,然後重新使用時,請求與我需要的信息的新頁面。

這可能嗎?

+0

嗨,只是一個想法,如果你有提琴手啓用,你可以嘗試比較從節點應用程序發送的發佈請求和來自普通瀏覽器的發佈請求,看看有什麼缺失/不同? – Ming

+0

嗨@Ming我會嘗試一下小提琴手,我從來沒有嘗試過。感謝您的輸入 – Alex

回答

0

您需要確保您存儲了會話cookie,打印機將在成功登錄後發回並將其包含在所有後續請求中。您可以使用request library{jar: true}選項來執行此操作。確保使用請求提交登錄表單,然後請求加載HTML的下一頁,然後將該HTML傳遞給cheerio,而不是讓cheerio直接加載URL,因爲cheerio的請求將不包括必要的會話cookie。

+0

嗨,彼得,謝謝你的回答,我已經添加了{jar:true}並且初始連接正在工作,但我不知道如何訪問第二個請求的cookie /會話? – Alex

+0

只需使用相同的請求對象來做出任何後續請求,並且它應該具有cookie和cookie。有關示例,請參閱請求文檔。 –