Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Запуск browsermobproxy через прокси


(Shestavin) #1

Добрый день!

Помогите, пожалуйста, разобраться.

Возможно ли запустить browsermobproxy через другой прокси, требующий авторизацию?

 


(Mykhailo Poliarush) #2

а можно немного больше о Вашей проблеме, не совсем понятно, что Вам нужно

что вам надо сделать? что уже сделали? какие проблемы возникли?


(Shestavin) #3

Добрый день!

Тестирую сайт в локальной сети, сижу за прокси с авторизацией. Сайт содержит счетчики типа Google аналитик, внешняя сеть. Когда просто запускаю webdriver то он идет через настройки указанные в свойствах обозревателя и все счетчики отрабатывают как надо, но когда запускаю драйвер с указанием browsermob-proxy, то счетчики не отрабатывают (502 bad gateway) и не выставляют нужные мне cookies, хотя в настройках запущенного браузера прокси прописан.

Изначально думал, что проблемы с сертификатом, установил сертификат, который идет в комплекте с browsermob-proxy - не помогло.

Прописал в bat, который запускает прокси set https_proxy=https://domen\user:password@proxy:port - тоже не помогло.

В общем в замешательстве, browsermob-proxy как раз таки и нужен для парсинга и проверки этих счетчиков.


(Mykhailo Poliarush) #4

в browsermob-proxy можно устанавливать белые и черные списчки

попробуйте задать еще и их

 




    def test_single_whitelist(self):
        """
/proxy/:port/whitelist
adds a whitelist
"""
        status_code = self.client.whitelist("http://www\\.facebook\\.com/.*", 200)
        assert(status_code == 200)
 
    def test_multiple_whitelists(self):
        """
/proxy/:port/whitelist
adds a whitelist
"""
        status_code = self.client.whitelist("http://www\\.facebook\\.com/.*,http://cdn\\.twitter\\.com", 200)
        assert(status_code == 200)
 
    def test_blacklist(self):
        """
/proxy/:port/blacklist
adds a blacklist
"""
        status_code = self.client.blacklist("http://www\\.facebook\\.com/.*", 200)
        assert(status_code == 200)

пример можно посмотреть тут 

https://github.com/AutomatedTester/browsermob-proxy-py/blob/master/test/test_client.py


(Shestavin) #5

Перезагрузил компьютер :)

Теперь не стартует прокси.

bat запускается без ошибок, но http://localhost:8080/ выдает

 

HTTP ERROR: 404

Problem accessing /. Reason:

    Not Found

 


Powered by Jetty://

ОС свежая, поэтому конфликтов не может быть, так как никакого специфического софта не ставил.

 

 

INFO 03/15 07:09:55 o.b.p.Main           - Starting BrowserMob Proxy version 2.0
-beta-7
INFO 03/15 07:09:55 o.e.j.u.log          - jetty-7.3.0.v20110203
INFO 03/15 07:09:55 o.e.j.u.log          - started o.e.j.s.ServletContextHandler
{/,null}
INFO 03/15 07:09:55 o.e.j.u.log          - Started SelectChannelConnector@0.0.0.
0:8080

(Shestavin) #6

http://localhost:8080/proxy

 

 

HTTP ERROR: 500

Problem accessing /proxy. Reason:

    Sitebricks received a null reply from the resource.

 


Powered by Jetty://


(Mykhailo Poliarush) #7

я думал рестарт должен только помогать, а не вредить :)

а что вы сделали, по сравнению с тем, когда у вас прокси работал?


(Taras) #8

 

public static String proxyPort = PropertyLoader.loadProperty("proxyPort");
public static ProxyServer server = new ProxyServer(Integer.parseInt(proxyPort)); 
 
public static WebDriver getInstance(boolean useProxyToHandleHar, String browserName, String username, String password) throws Exception {
 
WebDriver webDriver = null;
DesiredCapabilities capabilities = new DesiredCapabilities();
startProxyServer(capabilities, proxyPort);
 
if (useProxyToHandleHar == true){
 
if (CHROME.equals(browserName)) {
capabilities.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
capabilities.setCapability(CapabilityType.SUPPORTS_APPLICATION_CACHE, true);
capabilities.setCapability(CapabilityType.SUPPORTS_JAVASCRIPT, true);
setChromeDriver();
webDriver = new ChromeDriver(capabilities);
 
} else if (FIREFOX.equals(browserName)) {
       webDriver  = new FirefoxDriver(capabilities); 
 
} else if (INTERNET_EXPLORER.equals(browserName)) {
capabilities.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
capabilities.setCapability(CapabilityType.SUPPORTS_APPLICATION_CACHE, true);
capabilities.setCapability(CapabilityType.SUPPORTS_JAVASCRIPT, true);
setIEDriver();
webDriver = new InternetExplorerDriver(capabilities);
 
} else if (SAFARI.equals(browserName)) {
webDriver = new SafariDriver(capabilities);
 
 
else if (IPHONE.equals(browserName)) {
try {
webDriver = new IPhoneDriver(capabilities);
} catch (Exception e) {
e.printStackTrace();
}
 
} else if (ANDROID.equals(browserName)) {
webDriver = new AndroidDriver(capabilities);
 
}
 
}
......................

(Ангелина) #9

Была такая же проблема, что  browsermob-proxy возвращал 500. В параметрах запуска browsermob-proxy можно указать внешний прокси

[~]$ curl -X POST http://localhost:9090/proxy?httpProxy=yourproxyserver.com:8080

Плюс можно указать глобальный прокси, добавив переменные среды   https_proxy=https://user:password@proxy:port и  http_proxy=http://user:password@proxy:port

Еще проверьте, какая версия java у вас установлена, необходима 1.7, тогда browsermob-proxy нормально запускается.