Я настраиваю прокси так:
proxy_opts = Proxy()
proxy_opts.proxy_type = ProxyType.MANUAL
proxy_opts.socks_proxy = 'socks5://localhost:9050'
proxy_opts.socks_username = 'foo'
proxy_opts.socks_password = 'bar'
capabilities = DesiredCapabilities.CHROME
proxy_opts.add_to_capabilities(capabilities)
options = Options()
options.add_experimental_option('excludeSwitches', ['enable-logging'])
driver = webdriver.Chrome(executable_path='libs/chromedriver.exe', options=options, desired_capabilities=capabilities)
Трассировка (последний последний вызов):
File "registration.py", line 249, in
registration()
File "registration.py", line 182, in registration
driver = webdriver.Chrome(executable_path='libs/chromedriver.exe', options=options, desired_capabilities=capabilities)
File "C:\Python37\lib\site-packages\selenium\webdriver\chrome\webdriver.py", line 81, in __init__
desired_capabilities=desired_capabilities)
File "C:\Python37\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 157, in __init__
self.start_session(capabilities, browser_profile)
File "C:\Python37\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 252, in start_session
response = self.execute(Command.NEW_SESSION, parameters)
File "C:\Python37\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 321, in execute
self.error_handler.check_response(response)
File "C:\Python37\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.InvalidArgumentException: Message: invalid argument: cannot parse capability: proxy
from invalid argument: Specifying 'socksProxy' requires an integer for 'socksVersion'
Другой вариант:
options.add_argument('--proxy-server=socks5://{}@localhost:9050'.format('foo:bar'))
driver = webdriver.Chrome(executable_path='libs/chromedriver.exe', options=options)
В этомВ этом случае ошибок нет, но при запуске браузера сразу «Не удается загрузить страницу».
Опция без авторизации работает (но меня это не устраивает).
После этогоЯ пытаюсь сделать это для Firefox
proxy = '127.0.0.1:9050'
capabilities = DesiredCapabilities.FIREFOX
capabilities['proxy'] = {'proxyType': 'MANUAL',
'socksProxy': proxy,
'socksVersion': 5}
# capabilities['proxy']['socksUsername'] = 'foo')
# capabilities['proxy']['socksPassword'] = 'bar')
driver = webdriver.Firefox(desired_capabilities=capabilities, executable_path='libs/geckodriver.exe')
С socksUsername и socksPassword у меня есть ошибка: Traceback (последний вызов был последним):
File "registration.py", line 275, in <module>
registration('FIREFOX')
File "registration.py", line 198, in registration
driver = webdriver.Firefox(desired_capabilities=capabilities, executable_path='libs/geckodriver.exe')
File "C:\Python37\lib\site-packages\selenium\webdriver\firefox\webdriver.py", line 174, in __init__
keep_alive=True)
File "C:\Python37\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 157, in __init__
self.start_session(capabilities, browser_profile)
File "C:\Python37\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 252, in start_session
response = self.execute(Command.NEW_SESSION, parameters)
File "C:\Python37\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 321, in execute
self.error_handler.check_response(response)
File "C:\Python37\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.InvalidArgumentException: Message: Invalid proxy configuration entry: socksPassword
Без socksUsername и socksPassword он работает хорошо, какэто хром.Мне все равно, где решить эту проблему: Chrome или Firefox, мне просто нужно решение.