Ответ 1
Это то, что сработало для меня:
В моем случае я более подробно рассмотрел возможности драйвера PhantomJS:
dcap = dict(DesiredCapabilities.PHANTOMJS)
dcap["phantomjs.page.settings.userAgent"] = "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/53 (KHTML, like Gecko) Chrome/15.0.87"
service_args = [
'--proxy=5.135.176.41:3123',
'--proxy-type=http',
]
phantom = webdriver.PhantomJS(js_path, desired_capabilities=dcap, service_args =service_args)
print(phantom.capabilities)
Выход был:
{'databaseEnabled': False, 'handlesAlerts': False, 'rotatable': False, 'browserConnectionEnabled': False, 'browserName': 'phantomjs', 'takesScreenshot': True, 'nativeEvents': True, 'locationContextEnabled': False, 'phantomjs.page.settings.userAgent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/53 (KHTML, like Gecko) Chrome/15.0.87', 'platform': 'linux-unknown-64bit', 'version': '2.1.1', 'applicationCacheEnabled': False, 'driverName': 'ghostdriver', 'webStorageEnabled': False, 'javascriptEnabled': True, 'cssSelectorsEnabled': True, 'proxy': {'proxyType': 'direct'}, 'acceptSslCerts': False, 'driverVersion': '1.2.0'}
Это означает, что userAgent был правильно установлен ('phantomjs.page.settings.userAgent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/53 (KHTML, like Gecko) Chrome/15.0.87'
), но каким-то образом он не принял прокси-сервер, который я установил с помощью сервисов-аргументов. Манипулирование возможностей вручную, как это, получилось довольно неплохо:
dcap = dict(DesiredCapabilities.PHANTOMJS)
dcap["phantomjs.page.settings.userAgent"] = "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/53 (KHTML, like Gecko) Chrome/15.0.87"
phantom = webdriver.PhantomJS(js_path, desired_capabilities=dcap)
phantom.capabilities["acceptSslCerts"] = True
phantom.capabilities["proxy"] = {"proxy": "5.135.176.41:3123",
"proxy-type": "http"}
max_wait = 20
phantom.set_window_size(1024, 768)
phantom.set_page_load_timeout(max_wait)
phantom.set_script_timeout(max_wait)
phantom.get(url)
Спасибо за этот вопрос, я довольно долго смотрел на прокси с PhantomJS, и этот вопрос привел меня на правильный путь. Надеюсь, это поможет!