NodeJS
によるログインが必要なWebサイトをスクレイピングするためにPOST
を使用しようとしています。ログインすると、GET
で別のWebページにアクセスできます。
現在の最初の問題はログインです。ログイン情報にrequest
を使用してPOST
を使用しようとしましたが、取得した応答がログインしていないようです。
exports.getstats = function (req, res) {
request.post({url : requesturl, form: lform}, function(err, response, body) {
res.writeHeader(200, {"Content-Type": "text/html"});
res.write(body);
res.end();
});
};
ここでは、戻ってきたページを転送していますが、戻ってきたページにはまだログインフォームが表示されており、別のページにアクセスしようとすると、ログインしていませんと表示されます。
クライアント側のセッションとCookieデータを維持する必要があると思いますが、その方法を理解するのに役立つリソースが見つかりません。
フォローアップとして、私は zombiejs を使用して、必要な機能を取得しました
Cookie jarを作成し、関連するすべてのリクエストに同じjarを使用する必要があります。
var cookieJar = request.jar();
request.post({url : requesturl, jar: cookieJar, form: lform}, ...
理論的には、ログインユーザーとしてGETを使用してページをスクレイピングできるはずですが、実際のログインコードが機能するのは一度だけです。ログインPOSTへの応答の説明に基づくと、実際にはまだ正しく機能していない可能性があるため、ログインコードの問題を最初に修正するまでcookie jarは役に立ちません。
request.jar();
は私には機能しませんでした。そのため、ヘッダーレスポンスを使用して、次のような別のリクエストを作成しています。
request.post({
url: 'https://exampleurl.com/login',
form: {"login":"xxxx", "password":"xxxx"}
}, function(error, response, body){
request.get({
url:"https://exampleurl.com/logged",
header: response.headers
},function(error, response, body){
// The full html of the authenticated page
console.log(body);
});
});
実際、この方法はうまく機能しています。 = D