2013-12-10 3 views
0

NodeJS를 사용하여 인트라넷의 프린터 웹 인터페이스에 액세스 할 수있는 작은 응용 프로그램을 만듭니다. 난 require 모듈을 연결하고 cheerio 모듈을 사용하여 데이터를 구문 분석/표시합니다.NodeJS는 웹 사이트에서 세션을 저장 한 다음 브라우저처럼 작동하고 상기 웹 사이트를 탐색 할 수 있습니까?

프린터 중 하나는 로그 인 양식을 사용합니다 (html 헤더 인증과 함께 사용). request.post 함수를 사용하고 올바른 매개 변수를 보내는 경우 이것이 성공하면 cheerio.load(new url here)을 통해 필요한 DOM의 정보를 찾습니다. 그러나 성공하지 못하고 "세션 시간 초과"페이지로 리디렉션됩니다.

초기 POST 요청에서 세션을 유지하고 필요한 정보로 새 페이지를 요청할 때 다시 사용해야합니다.

이것이 가능합니까?

+0

안녕하세요, 피들러를 사용하도록 설정 한 경우 노드 앱에서 보낸 게시물 요청과 일반 브라우저의 게시물 요청을 비교해 볼 수 있습니까? – Ming

+0

안녕하세요 @ 나는 피들러를 시도 할 것입니다, 나는 전에 이것을 시도한 적이 없다. 입력 해 주셔서 감사합니다. – Alex

답변

0

성공적인 로그인 후에 프린터가 보내고 모든 후속 요청에 포함시키는 세션 쿠키를 저장해야합니다. 이렇게하려면 {jar: true} 옵션과 함께 request library 옵션을 사용할 수 있습니다. Cheerio의 요청에 필요한 세션 쿠키가 포함되지 않으므로 cheerio가 직접 URL을로드하는 것과 달리 로그인 양식을 제출하려면 요청을 사용하고 HTML의 다음 페이지를로드하도록 요청한 다음 해당 HTML을 cheerio로 전달하십시오.

+0

Peter 님, 답변 해 주셔서 감사 드리며 {jar : true}를 추가했으며 두 번째 요청에 대해 쿠키/세션에 액세스하는 방법을 모르지만 초기 연결이 작동하고 있습니까? – Alex

+0

동일한 요청 개체를 사용하여 모든 후속 요청을 만들고 쿠키가있는 쿠키 항아리가 있어야합니다. 예제는 요청 문서를 참조하십시오. –