1

在驱动无头 chrome 浏览器时,我正在尝试使用 selenium-wire 替换标题。我希望在 Docker 容器中运行 python 代码,因此需要一种无头方法。我已经根据这个例子编写了代码:https ://newbedev.com/setting-request-headers-in-selenium 。

当我运行下面的代码以观察发送的请求时,很明显没有应用对标头的修改。

  • User-Agent 标头仍报告“HeadlessChrome/91.0.4472.114”而不是“Chrome/93.0.4577.63”
  • 3 个新的 'sec-ch' 标头未添加到请求中。

任何想法为什么会发生这种情况以及如何解决这个问题?

我的代码如下:

from time import sleep
import requests
from seleniumwire import webdriver
from selenium.webdriver.chrome.options import Options

# Create a request interceptor
def interceptor(request):
    del request.headers['User-Agent']  # Delete the header first
    request.headers['User-Agent'] = 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.63 Safari/537.36'
    request.headers['sec-ch-ua'] = '"Google Chrome";v="93", " Not;A Brand";v="99", "Chromium";v="93"'
    request.headers['sec-ch-ua-mobile'] = '?0'
    request.headers['sec-ch-ua-platform'] = '"Linux"'
    #sleep(0.1)

print("Starting a new web session...")

chrome_options = Options()
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-gpu')
chrome_options.add_argument('--disable-dev-shm-usage')
chrome_options.add_argument("--window-size=1920,1080")
chrome_options.add_argument("--remote-debugging-port=9222")
chrome_options.add_argument('--remote-debugging-address=0.0.0.0')
#driver = webdriver.Chrome("/usr/bin/chromedriver", options=chrome_options)
driver = webdriver.Chrome(options=chrome_options)

# Set the interceptor on the driver
driver.request_interceptor = interceptor

print("Getting website...")
driver.get('https://www.google.com/')

# Access requests via the `requests` attribute
for request in driver.requests:
    print(request.headers)
    print(request.response)

print("Waiting indefinitely...")
while True:
    sleep(1)

docker上的输出如下:

worker    | Starting a new web session...
worker    | Getting website...
worker    | {'Host': 'www.google.com', 'Connection': 'keep-alive', 'Upgrade-Insecure-Requests': '1', 'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/91.0.4472.114 Safari/537.36', 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9', 'Sec-Fetch-Site': 'none', 'Sec-Fetch-Mode': 'navigate', 'Sec-Fetch-User': '?1', 'Sec-Fetch-Dest': 'document', 'Accept-Encoding': 'gzip, deflate, br', 'Accept-Language': 'en-US'}
worker    | 200 OK
worker    | {'Host': 'www.google.com', 'Connection': 'keep-alive', 'sec-ch-ua': '', 'sec-ch-ua-mobile': '?0', 'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/91.0.4472.114 Safari/537.36', 'Accept': 'image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8', 'Sec-Fetch-Site': 'same-origin', 'Sec-Fetch-Mode': 'no-cors', 'Sec-Fetch-Dest': 'image', 'Referer': 'https://www.google.com/', 'Accept-Encoding': 'gzip, deflate, br', 'Accept-Language': 'en-US', 'Cookie': 'CONSENT=PENDING+999'}
worker    | 200 OK

... truncated to remove similar requests / responses

worker    | Waiting indefinitely...

4

0 回答 0