Я настраиваю browsermobproxy («BMP») для генерации HAR с использованием browsermob-proxy в системе Ubuntu 12.04 в качестве автономной службы, выполняемой в CLI.Проблема, с которой я сталкиваюсь, заключается в том, что при вызове через скрипт Python ниже служба BMP получает отказ в соединении через 60 секунд.Прокси-сервер запускается нормально, и сервер имеет подключение к Интернету.
Для устранения неполадок я попытался сделать следующее:
Подтвердил, что сервер Ubuntu имеет подключение к Интернету (он находится в стандартной локальной сети NAT, то есть 192.168.xx со шлюзом, никакой другой прокси не задействован.1011 *
Если я запускаю прокси-сервер browsermob вне сценария python, он запускается нормально (с Jetty).Я telnet'd 8080 на локальном хосте и может успешно подключиться.
Я использовал '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, изображений) и их время загрузки / размер.