Я разрабатываю программу на python, которая использует селен (привязки webdriver к 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:* СЛУШАТЬ 0 267296 22458 / phantomjs
tcp 0 0 0.0.0.0:38457 0.0.0.0:* СЛУШАТЬ 0 267294 22463 / phantomjs
tcp 0 0 0.0.0.0:33667 0.0.0.0:* СЛУШАТЬ 0 267295 22461 / phantomjs
Я не знаю, как это отладить / понять, что происходит.
Обновить : После некоторого тестирования я создал JS-скрипт, который напрямую использует PhantomJS для дампа HTML-содержимого страницы и регистрации ошибок.
Это дает
НЕ удалось загрузить адрес Ошибка создания контекста SSL (ошибка: 140A90C4: подпрограммы SSL: func (169): причина (196))
Так что это может быть связано с PhantomJS или чем-то, что его блокирует.
Определив, что ошибка, похоже, исходит от PhantomJS, я поиграл с его параметрами и параметрами.
Похоже, что версия, которую я запускал на сервере (1.9.8), не работает для некоторых веб-сайтов, с которыми мне нужно взаимодействовать.
Я установил 2.1.1 (версию, которую я запускал на клиенте) на сервере, и теперь она хорошо работает.