Пользовательские заголовки в Phantomjs Selenium WebDriver
В соответствии с this теперь можно изменять заголовки. Atm мне нужно изменить Accept-Language в веб-приложении PhantomJS. Этот код не работает
DesiredCapabilities.PHANTOMJS['phantomjs.page.customHeaders.Accept-Language'] = 'ru-RU'
driver = webdriver.PhantomJS()
Возможно ли каким-то образом настроить Phantomjs на отправку моего заголовка? мне все равно, где: внутри ghostdriver, phantomjs или phantomjs-webdriver.
Ответы
Ответ 1
Последняя версия (1.9.1) от PhantomJS выпущена Jun/5/2013. Запрос на растяжение объединяется Июнь /23/2013.
Если вы используете 1.9.1 версию PhantomJS, пользовательские заголовки не будут работать.
Вы должны сами создать phantomjs или подождать, пока phantomjs не сменит изменения ghostdriver и не выпустит новую версию.
- Репозиторий Clone PhantomJS
- Репозиторий клонирования ghostdriver
- копировать ghostdriver/src/* в phantomjs/src/ghostdriver рекурсивно
- построить phantomjs
Используя новые сборки phantomjs, я получил следующий результат:
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
Используйте PhantomJS 1.9.2 +.
Ответ 2
Я пишу полный пример, чтобы установить все заголовки, размер окна и прокси в 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
устанавливается в phantomjs.page.settings.userAgent
вместо phantomjs.page.customHeaders