2014-03-02 3 views
1

데이터를 스크랩하기 위해 사이트에 로그인하려고합니다. Chrome Rest Client을 통해 로그인을 시도하지만 노드 서버에서 로그인하면 웹 사이트에서 status code 302이 표시됩니다.
코드nodejs 서버에서 다른 사이트에 로그인

var http = require('http'), 
    express = require('express'), 
    request = require('request'); 



var app = express(); 
    app.listen(3000); 

var request = request.defaults({jar:true}); 
app.post('/login', [express.urlencoded(), express.json()], function(req, res) { 
    console.log('You are here'); console.log(JSON.stringify(req.body.email)); 
    request.post({ 
     url: 'http://teeSpring.com/login/submitLogin', 
     form: { 
     email: "himanshu", 
     password: "himanshu" 
     } 
    }, function(error, resposne, body) { 
     if (error) { 
     console.log('Error is: '+JSON.stringify(error)); 
     } else if(body){ 
     console.log('Body is :')//+JSON.stringify(body)); 
     } else if(resposne) { 
     console.log('Response is :'+resposne.statusCode);//+JSON.stringify(resposne)); 
     res.send(resposne); 
     } else { 
     console.log('WTF'); 
     } 

    }); 

}); 
+0

가지고있는 대신에 https를 통해 타격 시도? –

+1

상태 302는 리디렉션을위한 것입니다. 괜찮을거야. lib 요청은 기본적으로 처리해야합니다. – palanik

+0

예. 'https'로 URL을 변경 한 것은 여전히 ​​같은 결과입니다. –

답변

1

당신은 이런 일을 할 수 - 리디렉션 경우, 헤더의 위치를 ​​확인하고 거기에 갈 :

else if(response) { 
    console.log('Response is :'+response.statusCode);//+JSON.stringify(response)); 
    if(response.statusCode == 302 && response.headers && response.headers.location) { 
     res.send(response.headers.location); 
    } 
    } 
+0

실제로 로그인 후 올바른 url 인'http : // teespring.com/dashboard '를 반환하고 있습니다. 하지만이 위치로 리디렉션하고 싶었습니다. –

+0

"리디렉션 됨"이란 의미가 확실하지 않습니다. 해당 위치를 얻은 후 다른 http 요청 "http.get (response.headers.location, function (res) {})"을 보내 URL의 본문을 가져옵니다. –

관련 문제