Używam następującego kodu opartego na przykładzie loadspeed.js, aby otworzyć witrynę https: //, która również wymaga uwierzytelnienia serwera http.
var page = require('webpage').create(), system = require('system'), t, address;
page.settings.userName = 'myusername';
page.settings.password = 'mypassword';
if (system.args.length === 1) {
console.log('Usage: scrape.js <some URL>');
phantom.exit();
} else {
t = Date.now();
address = system.args[1];
page.open(address, function (status) {
if (status !== 'success') {
console.log('FAIL to load the address');
} else {
t = Date.now() - t;
console.log('Page title is ' + page.evaluate(function () {
return document.title;
}));
console.log('Loading time ' + t + ' msec');
}
phantom.exit();
});
}
Nie ładuje strony przez cały czas. Co tu może być nie tak? Czy zabezpieczone witryny mają być obsługiwane inaczej? Witryna może być jednak pomyślnie dostępna z przeglądarki.
Właśnie zaczynam od Phantoma w tej chwili i uważam, że zbyt dobrze jest przestać się bawić, mimo że nie posuwam się naprzód z tym problemem.
źródło
Problem jest najprawdopodobniej spowodowany błędami certyfikatu SSL. Jeśli uruchomisz phantomjs z opcją --ignore-ssl-errors = yes , powinno przystąpić do ładowania strony tak, jak gdyby nie było błędów SSL:
Widziałem kilka witryn, które miały problemy z nieprawidłową implementacją swoich certyfikatów SSL lub wygasły, itp. Pełna lista opcji wiersza poleceń dla phantomjs jest dostępna tutaj: http://phantomjs.org/api/command-line. html . Mam nadzieję, że to pomoże.
źródło
phantomjs --ignore-ssl-errors=yes script.js
--ignore-ssl-errors=yes
opcja powinna znajdować się przed nazwą skryptu. Dziękuję za zwrócenie uwagi.Należy pamiętać, że od 16.10.2014 PhantomJS domyślnie używa SSLv3 do otwierania połączeń HTTPS. W związku z niedawno ogłoszoną luką POODLE, wiele serwerów wyłącza obsługę SSLv3.
Aby to obejść, powinieneś być w stanie uruchomić PhantomJS z:
Miejmy nadzieję, że PhantomJS zostanie wkrótce zaktualizowany, aby TLSv1 stał się domyślnym zamiast SSLv3.
źródło
napotkał ten sam problem ...
--ignore-ssl-errors = tak nie wystarczyło, aby to naprawić, musiałem zrobić jeszcze dwie rzeczy:
1) zmienić agenta użytkownika
2) wypróbować wszystkie protokoły ssl, jedyny, który działał był tlsv1 dla tej strony
Mam nadzieję, że to pomoże ...
źródło
Doświadczyłem tego samego problemu (casperjs 1.1.0-beta3 / phantomjs 1.9.7). Użycie --ignore-ssl-errors = yes i --ssl-protocol = tlsv1 rozwiązało problem. Użycie tylko jednej z opcji nie rozwiązało tego problemu.
źródło
Otrzymywałem
Tworzenie ze źródła naprawiło to za mnie. Nie zapomnij użyć stworzonych przez siebie phantomjów. (zamiast / usr / local / bin / phantomjs, jeśli go masz)
źródło
Jeśli ktoś używa Phantomjs z Sahi,
--ignore-ssl-errors
opcja musi znaleźć się w twoim pliku browser_types.xml. U mnie to zadziałało.źródło
O co chodzi
shebang
?Jeśli używasz shebang do wykonywania
phantomjs
skryptów, użyj następującego wiersza shebangUżyj dowolnej z powyższych odpowiedzi. Osobiście podoba mi się,
--ignore-ssl-errors=yes
ponieważ weryfikacja certyfikatu z podpisem własnym moich serwerów WWW jest nieistotna.źródło
Żadna z pozostałych odpowiedzi nie pomogła mi; możliwe, że konkretne witryny, z którymi pracowałem, były zbyt wybredne ze względu na ich nagłówki HTTP. Oto, co zadziałało:
Dowiedziałem się, że PhantomJS używa "Keep-Alive" (pisanego wielką literą), a połączenie nie było utrzymywane przy życiu. :)
źródło
Dostawałem
SSL Handshake Failed
wczoraj. Próbowałem wielu kombinacji opcji phantomJS (--ignore-ssl-errors=yes
itp.), Ale żadna z nich nie działała.Aktualizacja do phantomJS 2.1.1 naprawiła to.
Skorzystałem z instrukcji instalacji phantomJS na https://gist.github.com/julionc/7476620 , zmieniając wersję phantomJS na 2.1.1.
źródło
Na komputerze, na którym próbujesz uruchomić phantomjs, aby połączyć się ze zdalnym serwerem, uruchom „openssl ciphers”. Skopiuj i wklej wymienione szyfry do opcji wiersza poleceń --ssl-ciphers = "". Informuje to łączący serwer sieciowy, które szyfry są dostępne do komunikacji z klientem. Jeśli nie ustawisz tych dostępnych na swoim komputerze, może użyć dowolnego szyfru, którego twój komputer nie rozumie, że domyślne nowoczesne przeglądarki robią to, co jest używane jako ustawienie domyślne.
źródło
Jedyną rzeczą, która działała dla mnie, było podniesienie phantomjów z 1,9x do 2.x;)
źródło