Базовая аутентификация для безопасного прокси с использованием Browsermob_proxy, Selenium и PhantomJS - PullRequest
0 голосов
/ 16 октября 2018

Эта текущая настройка работает нормально, если прокси не требует базовой аутентификации прокси.Если прокси-сервер требует аутентификации, этот код просто создает этот образ: Доступ к кэшу запрещен

Текущая настройка

browsermob_proxy -> Selenium с PhantomJS ---> ИНТЕРНЕТ

Как и где я могу передать учетные данные прокси-серверу?

from browsermobproxy.server import Server
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
from selenium import webdriver
server = Server("\\browsermob-proxy")
server.start()


proxy_host = "123.456.789.123" 
proxy_port = "12345"           


def init_proxy(server, proxy_host, proxy_port):

    proxy = server.create_proxy({
    'httpProxy' : "{0}:{1}".format(proxy_host,proxy_port),
    'httpsProxy': "{0}:{1}".format(proxy_host,proxy_port),
    'sslProxy'  : "{0}:{1}".format(proxy_host,proxy_port)
    })
    return proxy

def init_driver(proxy):
    service_args = ['--proxy=' + proxy.proxy,'--ignore-ssl-errors=true', '--web-security=false',]
    dcap = dict(DesiredCapabilities.PHANTOMJS)
    dcap["phantomjs.page.settings.userAgent"] = ('Mozilla/5.0 \
    (Linux; Android 5.1.1; Nexus 6 Build/LYZ28E) AppleWebKit/537.36 \
    (KHTML, like Gecko) Chrome/44.0.2403.20 Mobile Safari/537.36')
    driver = webdriver.PhantomJS(desired_capabilities=dcap, service_args=service_args)
    driver.get("http://www.spyber.com")
    driver.save_screenshot('1.png')
    server.stop()
    driver.quit()


proxy = init_proxy(server, proxy_host, proxy_port)
init_driver(proxy)

Неудачные предложения:

Добавление аутентификации в service_args

'--proxy-auth=john:1234'

Вызов URL с учетными данными

driver.get("http://john:1234@www.spyber.com")
...