Почему browsermob-proxy отказывается от подключения из скрипта Python? - PullRequest
0 голосов
/ 10 мая 2019

Я настраиваю browsermobproxy («BMP») для генерации HAR с использованием browsermob-proxy в системе Ubuntu 12.04 в качестве автономной службы, выполняемой в CLI.Проблема, с которой я сталкиваюсь, заключается в том, что при вызове через скрипт Python ниже служба BMP получает отказ в соединении через 60 секунд.Прокси-сервер запускается нормально, и сервер имеет подключение к Интернету.

Для устранения неполадок я попытался сделать следующее:

  1. Подтвердил, что сервер Ubuntu имеет подключение к Интернету (он находится в стандартной локальной сети NAT, то есть 192.168.xx со шлюзом, никакой другой прокси не задействован.1011 *

  2. Если я запускаю прокси-сервер browsermob вне сценария python, он запускается нормально (с Jetty).Я telnet'd 8080 на локальном хосте и может успешно подключиться.

  3. Я использовал 'curl --proxy 127.0.0.1:8080 "http://www.google.com/"', чтобы увидеть, еслипрокси работает в общем. С этим я не получаю отказанное соединение, но получаю ошибку 404 (я попробовал пару других URL на разных именах хостов, включая один у меня, и получил те же 404).

И я подтвердил, что в файлах журнала не было никаких странных ошибок во время этого тестирования.

Python Script "передал"

from browsermobproxy import Server
from selenium import webdriver
import json

server = Server("/home/zladmin/browsermob/browsermob-proxy-2.1.4/bin/browsermob-proxy")
server.start()
proxy = server.create_proxy()
profile = webdriver.FirefoxProfile()
profile.set_proxy(proxy.selenium_proxy())

driver = webdriver.Firefox(firefox_profile=profile)
proxy.new_har("http://stackoverflow.com", options={'captureHeaders': True})
driver.get("http://stackoverflow.com/")    

result = json.dumps(proxy.har, ensure_ascii=False)
print result

proxy.stop()    
driver.quit()

Вывод из выполнения CLI:

$ python submitted
Traceback (most recent call last):
  File "submitted", line 11, in <module>
    driver = webdriver.Firefox(firefox_profile=profile)
  File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/webdriver.py", line 174, in __init__
    keep_alive=True)
  File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 157, in __init__
    self.start_session(capabilities, browser_profile)
  File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 252, in start_session
    response = self.execute(Command.NEW_SESSION, parameters)
  File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: connection refused

Фактический результат, который я ищу во всех этих усилиях, - это возможность отправить URL-адрес и получить анализируемый файл (в данном случае HAR JSON), чтобы я мог получить все URL-адреса, используемые при рендеринге страницы (HTML, JSON, eTags, запускаемые при загрузке, перенаправления любых JS, CSS, изображений) и их время загрузки / размер.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...