Niektóre części wikipedii wyglądają inaczej po zalogowaniu. Chciałbym zaprosić strony użytkowników, aby wyglądały tak, jakbym był zalogowany.
Czy istnieje sposób, aby wget takie strony użytkownika?
http://en.wikipedia.org/wiki/User:A
to jest strona logowania:
http://en.wikipedia.org/w/index.php?title=Special:UserLogin&returnto=Login&campaign=ACP3
Odpowiedzi:
Prosty sposób: zaloguj się w przeglądarce i przekaż ciasteczka do wget
Najłatwiejsza metoda: ogólnie rzecz biorąc, musisz dostarczyć wget lub curl z (zalogowanymi) ciasteczkami z określonej witryny, aby mogły pobierać strony tak, jakbyś był zalogowany .
Jeśli używasz przeglądarki Firefox, łatwo to zrobić za pomocą dodatku Eksportuj pliki cookie . Zainstaluj dodatek i:
cookies.txt
plik (możesz zmienić nazwę pliku / miejsce docelowe).Otwórz terminal i użyj
wget
z--load-cookies=FILENAME
opcją, npcurl --cookie cookies.txt ...
(Spróbuję zaktualizować tę odpowiedź dla użytkowników Chrome / Chromium)
Trudny sposób: użyj curl (najlepiej) lub wget do zarządzania całą sesją
--cookie-jar
lub wget z--save-cookies --keep-session-cookies
opcjami, wraz z metodą HTTP / S PUT, aby zalogować się na stronie, zapisać pliki cookie logowania, a następnie użyć ich do symulować przeglądarkę.źródło
grep mydomain cookies.txt > mydomain-cookies.txt
Kolejne łatwe rozwiązanie, które działało dla mnie bez instalowania żadnych dodatkowych elementów:
To da ci polecenie, które możesz wkleić bezpośrednio do powłoki, która ma wszystkie dane uwierzytelniające, np
Następnie możesz zmodyfikować adres URL w poleceniu, aby pobrać cokolwiek chcesz.
źródło
Dzięki cURL obsługa plików cookie na dwa sposoby jest naprawdę łatwa.
curl www.target-url.com -c cookie.txt
następnie zapisze plik o nazwie cookie.txt. Ale musisz się zalogować, więc trzeba używać --data z argumentami takich jak:curl -X --data "var1=1&var2=2" www.target-url.com/login.php -c cookie.txt
. Po uzyskaniu zalogowanego pliku cookie możesz wysłać go za pomocą:curl www.target-url.com/?user-page.php -b cookie.txt
Wystarczy użyć -c (--cookie) lub -b (--cookie-jar), aby zapisać i wysłać.
Uwaga 1: Korzystanie z cURL CLI jest dużo łatwiejsze niż PHP i może szybsze;)
Aby zapisać końcową zawartość, możesz łatwo dodać
> filename.html
do polecenia cURL, a następnie zapisać pełny kod HTML.Uwaga 2 na temat „pełnego”: nie można renderować javascript za pomocą cURL, wystarczy pobrać kod źródłowy.
źródło
-X
parametr oznacza „do post”, ale użycie--data=xxx
-X
jest niejawne, więc na pewno możesz je usunąć.-b
jestread cookie
Dla tych, którzy nadal są zainteresowani tymi pytaniami, istnieje bardzo przydatne rozszerzenie Chrome o nazwie CurlWGet, które pozwala wygenerować żądanie
wget
/curl
ze środkami uwierzytelniającymi itp. Za pomocą jednego kliknięcia. Aby zainstalować to rozszerzenie, wykonaj następujące czynności:Cieszyć się!
źródło
Wpis na blogu Wget with Firefox Cookies pokazuje, jak uzyskać dostęp do pliku danych sqlite, w którym Firefox przechowuje swoje pliki cookie. W ten sposób nie trzeba ręcznie eksportować plików cookie do użycia z wget. Komentarz sugeruje, że nie działa z sesyjnymi plikami cookie, ale działał dobrze w witrynach, z którymi próbowałem.
źródło
spójrz na cliget dla Firefoksa.
Kiedy masz zamiar pobrać, w ostatnim oknie dialogowym pobierania pojawi się opcja skopiowania pliku do schowka jako curl.
źródło
Próbowałeś tego?
źródło
Wypróbuj coś takiego:
Zobacz także ten link:
Jak pobrać tę stronę za pomocą wget?
źródło
> filename.html
aby zapisać dane wyjściowe w bieżącym katalogu lub umieścić pełną ścieżkę do pliku. Dotyczy to zarówno systemów Linux, jak i Windows.W przypadku bardziej skomplikowanych loginów opartych na witrynach internetowych należy również rozważyć użycie skryptu Python i modułu imitującego przeglądarkę, takiego jak http://wwwsearch.sourceforge.net/mechanize/ zamiast
curl
lubwget
.W ten sposób sesyjne pliki cookie są obsługiwane automatycznie, możesz podążać za linkami i wypełniać formularze logowania, a zatem „skryptować” się przez proces logowania, jakbyś korzystał z przeglądarki internetowej.
źródło