【问题标题】:How to set headers in python selenium chrome webdriver如何在 python selenium chrome webdriver 中设置标题
【发布时间】:2017-09-09 13:21:47
【问题描述】:

我找不到如何在 selenium chrome webdriver (python) 中设置请求标头。我需要设置“主机”标题。我试过了:

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 设置标题:(

【问题讨论】:

    标签: python selenium selenium-chromedriver


    【解决方案1】:
    请求标头中的

    Host 是 服务器(目标)的名称,由您的 driver.get(url) 设置。

    【讨论】:

    • 我需要使用不同的host 标头向本地主机发送请求。我该怎么做?
    • 所以服务器认为你的浏览器在别的地方?你不能,不是真的。您不会将您的主机名发送到服务器,而是通过 TCP 连接,这意味着服务器将获取您的 IP 地址。服务器可能会进行反向查找以尝试从 IP 确定主机名,但不会自动进行。代理允许您通过使用中间路由“更改”您的 IP,但这听起来也不是您想要的。
    猜你喜欢
    • 1970-01-01
    • 2019-01-19
    • 1970-01-01
    • 2022-01-02
    • 1970-01-01
    • 2017-02-14
    • 2019-11-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多