Не удается получить HTML с помощью PhantomJS и драйвера селен с сервера Debian

Я разрабатываю программу на python, которая использует Selen (привязки Python для веб-драйверов) и PhantomJS (безголовый WebKit с поддержкой JavaScript API) для загрузки и взаимодействия с веб-сайтами.

Когда я использую эту программу на локальном компьютере / сети Ubuntu, она корректно загружает сайты; Я могу сбросить все свои HTML:

распечатать webdriver.page_source

Когда я запускаю его на сервере, эта строка только печатает

<html><head></head><body></body></html>

Похоже, сервер ответил на запрос пустой HTML-страницей.

Эта проблема возникает на 2 сайтах, но программа работает правильно для третьего сайта. Это заставляет меня думать, что это проблема сети больше, чем проблема программирования (?). Сервер предоставляется провайдером VPS.

С сервера я могу пропинговать сервер одного из веб-сайтов, который отвечает на пустой HTML, что заставляет меня думать, что я не занесен в черный список ip и не забанен.

Вот вывод netstat -tulpen (запускается на сервере):

tcp 0 0 0.0.0.0:41207 0.0.0.0:* LISTEN 0 267296 22458 / phantomjs
tcp 0 0 0.0.0.0:38457 0.0.0.0:* LISTEN 0 267294 22463 / phantomjs
tcp 0 0 0.0.0.0:33667 0.0.0.0:* LISTEN 0 267295 22461 / phantomjs

Я не знаю, как отладить это / понять, что происходит.

Обновление: после некоторого тестирования я создал JS-скрипт, который напрямую использует PhantomJS для вывода HTML-содержимого страницы и регистрации ошибок.

Это дает

Не удалось загрузить адрес Ошибка создания контекста SSL (ошибка:140A90C4: подпрограммы SSL:func(169): причина (196))

Так что это может быть связано с PhantomJS или чем-то, что его блокирует.

1 ответ

Определив, что ошибка, похоже, исходит от PhantomJS, я поиграл с ее параметрами и параметрами.

Похоже, что версия, которую я запускал на сервере (1.9.8), не работает для некоторых веб-сайтов, с которыми мне нужно взаимодействовать.

Я установил 2.1.1 (версия, которую я запускал на клиенте) на сервере, и теперь она работает хорошо.

Другие вопросы по тегам