2017-04-13 76 views
1

我無法找到如何在selenium chrome webdriver(python)中設置請求頭文件。我需要設置「主機」標題。我tryed說:如何在Python中設置頭文件selenium chrome webdriver

from selenium import webdriver 
from pyvirtualdisplay import Display 
from selenium.webdriver import DesiredCapabilities 


url = 'http://localhost:888/test' 

display = Display(visible=0, size=(800, 800)) 
display.start() 

desired_capabilities = DesiredCapabilities.CHROME.copy() 
desired_capabilities['chrome.page.customHeaders.host'] = 'test.local' 

driver = webdriver.Chrome('/tmp/chromedriver', 
          desired_capabilities=desired_capabilities) 

driver.get(url) 

而且結果:

GET /test HTTP/1.1 
Host: localhost:888 
Connection: keep-alive 
Upgrade-Insecure-Requests: 1 
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/53.0.2785.143 Chrome/53.0.2785.143 Safari/537.36 
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 
Accept-Encoding: gzip, deflate, sdch 
Accept-Language: en-US,en;q=0.8 

所以,我預計頭host:test.local卻發現Host: localhost:888

我做錯了嗎?我找不到如何使用Chrome的設置頭的webdriver :(

回答

0

在請求頭Host服務器(目標)的名稱,而這由你driver.get(url)

+0

設置我需要發送請求到本地主機不同的'主機'頭部,我怎麼能這樣做? –

+0

所以服務器認爲你的瀏覽器是在別的地方?你不能,不是真的,你不會發送你的主機名到服務器,而是一個TCP連接,這意味着服務器會得到你的IP地址,服務器可能會做反向查詢來試圖從IP中確定主機名,但不會自動地進行。代理允許你使用中間路由來「更改」你的IP,但這聽起來不像你在找什麼河 – pbuck

相關問題