pythonseleniumselenium-webdriverphantomjsghostdriver

Custom headers in Phantomjs Selenium WebDriver


According to this it is possible now to modify headers. Atm i need to modify Accept-Language in PhantomJS webdriver. This code doesn't work

DesiredCapabilities.PHANTOMJS['phantomjs.page.customHeaders.Accept-Language'] = 'ru-RU'
driver = webdriver.PhantomJS()

Is it possible somehow to configure Phantomjs to send my header? i don't care where: inside ghostdriver, phantomjs or phantomjs-webdriver.


Solution

  • The latest version (1.9.1) of PhantomJS is release Jun/5/2013. The pull request is merged Jun/23/2013.

    If you are using 1.9.1 version of PhantomJS, custom headers will not work.

    You have to build phantomjs yourself or wait until phantomjs merge ghostdriver changes and release new version.

    Using newly build phantomjs I got following result:

    from selenium import webdriver
    
    webdriver.DesiredCapabilities.PHANTOMJS['phantomjs.page.customHeaders.Accept-Language'] = 'ru-RU'
    driver = webdriver.PhantomJS()
    driver.get('http://httpbin.org/headers')
    print(driver.page_source)
    

    ...
    {
      "headers": {
        "Connection": "close",
        "Host": "httpbin.org",
        "Accept-Encoding": "gzip",
        "Accept-Language": "ru-RU",
        "User-Agent": "Mozilla/5.0 (Unknown; Linux i686) AppleWebKit/534.34 (KHTML, like Gecko) PhantomJS/1.10.0 (development) Safari/534.34",
        "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"
      }
     ...
    

    UPDATE

    Use PhantomJS 1.9.2+.