3

What I want: A headless browser with private navigation and loggin to HTTPS proxy automatically

What I tried:
- PhantomJS -> Deprecated
- Google Chrome -> Proxy work but not with Headless
- Firefox -> Headless OK Private nav OK but can't use username and password in proxy connection

I have 4 variables, pxy["host"] ("xx.xx.xx.xx:xx"), pxy["username"], pxy["password"]
With Firefox I made some test
Test 1 - capabilities with prompt

capabilities['proxy'] = {'proxyType': 'MANUAL',
                'httpProxy': pxy["host"],
                'ftpProxy': pxy["host"],
                'sslProxy': pxy["host"],
                'noProxy': ''
                }

That's open a prompt in firefox to type login and password. I tried to use alert functions to send keys in alert form but it not work with firefox.

Test 2 - capabilities with credentials

capabilities['proxy'] = {'proxyType': 'MANUAL',
                'httpProxy': pxy["host"],
                'ftpProxy': pxy["host"],
                'sslProxy': pxy["host"],
                'socksUsername': pxy['login'],
                'socksPassword': pxy['password']
                }

That's make an error:

selenium.common.exceptions.InvalidArgumentException: Message: Invalid proxy configuration entry: socksPassword

Test 3 - firefox preferences

ip = pxy["host"].split(":")[0]
port = pxy["host"].split(":")[1]
firefox_profile.set_preference("network.proxy.type", 1)
firefox_profile.set_preference("network.proxy.http", ip)
firefox_profile.set_preference("network.proxy.http_port", port)
firefox_profile.set_preference("network.proxy.socks_username", pxy["login"])
firefox_profile.set_preference("network.proxy.socks_password", pxy["password"])

That's doesn't do anything, just keep my ip...

Test 4 - Extensions ?
I think I can use an extension like closeproxyauth.xpi (too old) to set my proxy but I'm not sure what I did. When I use firefox_profile.add_extension(extension=extension_path), No extension appear in browser but path is correct.
I tried to use driver.install_addon(extension=extension_path, temporary=True) but he never found my path

1 Answer 1

3

Dup of: How to set proxy AUTHENTICATION username:password using Python/Selenium

Selenium-wire: https://github.com/wkeeling/selenium-wire

Install selenium-wire

pip install selenium-wire

Import it

from seleniumwire import webdriver

Auth to proxy

options = {
'proxy': {
    'http': 'http://username:password@host:port',
    'https': 'https://username:password@host:port',
    'no_proxy': 'localhost,127.0.0.1,dev_server:8080'
    }
}
driver = webdriver.Firefox(seleniumwire_options=options)

Warning
Take a look to the selenium-wire cache folder. I had a problem because it take all my disk space. You have to remove it sometimes in your script when you want.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.