2012-01-04 19 views
12

Natknąłem się na wiele tutorials explaining how to scrape public websites that don't require authentication/login, używając node.js.W jaki sposób można skrobać witryny wymagające uwierzytelniania za pomocą pliku node.js?

Czy ktoś może wyjaśnić, jak zeskrobać witryny wymagające logowania przy użyciu pliku node.js?

+1

Czy to działa? Proszę napisać próbkę kodu, jeśli tak zrobiłeś. – codecowboy

+0

Możliwy duplikat [Skrobanie witryny wymagającej uwierzytelniania za pomocą pliku node.js] (http://stackoverflow.com/questions/17765525/scraping-a-website-which-requires-authentication-using-node-js) – velop

Odpowiedz

17

Zastosowanie Mikeal's Request biblioteka, musisz włączyć obsługę plików cookie wspierać tak:

var request = request.defaults({jar: true}) 

Więc najpierw należy utworzyć nazwę użytkownika na tej stronie (ręcznie) i przekazać nazwę użytkownika i hasło jako params przy podejmowaniu POST wniosek do tej witryny. Następnie serwer odpowie ciasteczkiem, który Zapytanie zapamięta, dzięki czemu będziesz mógł uzyskać dostęp do stron, które wymagają zalogowania do tej witryny.

Uwaga: to podejście nie działa, jeśli na stronie logowania zostanie użyte coś takiego jak reCaptcha.

+0

@ alessioalex Dziękuję Ci. Spróbuję twojej sugestii i zaktualizuję status tutaj. – ekanna

+1

Czy możesz podać mi próbkę, jak to zrobić, robię to, jak powiedziałeś, ale bez powodzenia próbuję zepsuć stronę asp.net. –

+1

Przydałoby się, jeśli gdzieś zamieścisz próbkę kodu (jakiś sens lub coś w tym stylu), aby dowiedzieć się, co robisz źle. Byłoby szybciej w ten sposób. – alessioalex

5

lub używając superagent:

var superagent = require('superagent') 
var agent = superagent.agent(); 

agent jest wtedy trwałe przeglądarka, która będzie obsługiwać pobierania i ustawiania cookies, odsyłających itp Wystarczy agent.get, agent.post() jako normalne.

+0

Czy masz źródła/dokumenty dla agenta? Nie mogłem znaleźć żadnych na http://visionmedia.github.io/superagent – velop

+1

@velop https://visionmedia.github.io/superagent/#preserving-cookies – yckart

Powiązane problemy