Search code examples
pythonseleniumsocks

How can I set socks4 proxy for selenium?


i need to set socks version 4 but i have a lot of search but i can't find my answer. finally i wrote this codes but i get error

prox = Proxy()
prox.proxy_type = ProxyType.MANUAL
prox.autodetect = False
prox.socks_proxy = '<ip>:<port>'
capabilities = webdriver.DesiredCapabilities.CHROME
prox.add_to_capabilities(capabilities)
browser = webdriver.Chrome(executable_path=chrome_driver_path, options=chrome_options, desired_capabilities=capabilities)
browser.get('https://www.google.com')

My Error

selenium.common.exceptions.InvalidArgumentException: Message: invalid argument: cannot parse capability: proxy
from invalid argument: Specifying 'socksProxy' requires an integer for 'socksVersion'

Solution

  • PROXY = "127.0.0.1:9150"
    webdriver.DesiredCapabilities.CHROME['proxy'] = {
        "httpProxy": PROXY,
        "ftpProxy": PROXY,
        "sslProxy": PROXY,
        "proxyType": "MANUAL",
        "socksProxy": PROXY,
        "socksVersion":5
    
    }
    

    you can use desired capabilities , you don't have to pass it as you are updating the capabilities for chrome directly

    else you can also use

    PROXY = "127.0.0.1:9150"
    caps= webdriver.DesiredCapabilities.CHROME.copy()
    caps['proxy'] = {
        "httpProxy": PROXY,
        "ftpProxy": PROXY,
        "sslProxy": PROXY,
        "proxyType": "MANUAL",
        "socksProxy": PROXY,
        "socksVersion":5
    
    }
    driver = webdriver.Chrome(desired_capabilities=caps)