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
DesiredCapabilit
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"
}
...
Use PhantomJS 1.9.2+.
I write a full example to set all headers , window size and proxy in selenium phantomjs:
from selenium import webdriver
def init_phantomjs_driver(*args, **kwargs):
headers = { 'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language':'zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3',
'User-Agent': 'Mozilla/5.0 (Windows NT 6.2; WOW64; rv:47.0) Gecko/20100101 Firefox/47.0',
'Connection': 'keep-alive'
}
for key, value in headers.iteritems():
webdriver.DesiredCapabilities.PHANTOMJS['phantomjs.page.customHeaders.{}'.format(key)] = value
webdriver.DesiredCapabilities.PHANTOMJS['phantomjs.page.settings.userAgent'] = 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36'
driver = webdriver.PhantomJS(*args, **kwargs)
driver.set_window_size(1400,1000)
return driver
def main():
service_args = [
'--proxy=127.0.0.1:9999',
'--proxy-type=http',
'--ignore-ssl-errors=true'
]
driver = init_phantomjs_driver(service_args=service_args)
driver.get('http://cn.bing.com')
userAgent
is set in phantomjs.page.settings.userAgent
instead of phantomjs.page.customHeaders