python - 我如何修改 seleniumwire 驱动程序中的 header

标签 python selenium-webdriver http-headers seleniumwire

我想更改我的 header Http 信息,但以下代码没有任何反应。 请帮助我,问题是什么,我应该如何解决? 我希望能够在每次访问时更改用户的信息,例如 ModHeader 扩展。

import time 
  import os
  from seleniumwire import webdriver
  from selenium.webdriver.chrome.options import Options  # Import from seleniumwire
  driver = webdriver.Chrome()
  def interceptor(request):
   request.headers['User-Agent'] = 'Mozilla/6.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'] = 'os'
driver.request_interceptor = interceptor
driver.get("https://google.com")
for request in driver.requests:
  print(request.headers)
  print(request.response)
time.sleep(500)

我的问题是这样的link 在我的驱动程序数据中显示了这一点

204
sec-ch-ua: "Google Chrome";v="111", "Not(A:Brand";v="8", "Chromium";v="111"
sec-ch-ua-mobile: ?0
user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36
sec-ch-ua-arch: "x86"
sec-ch-ua-full-version: "111.0.5563.64"
sec-ch-ua-platform-version: "10.0.0"
sec-ch-ua-full-version-list: "Google Chrome";v="111.0.5563.64", "Not(A:Brand";v="8.0.0.0", "Chromium";v="111.0.5563.64"
sec-ch-ua-bitness: "64"
sec-ch-ua-model:
sec-ch-ua-wow64: ?0
sec-ch-ua-platform: "Windows"
accept: image/avif,image/webp,image/apng,image/svg+xml,image/,/*;q=0.8
x-client-data: CIv0ygE=
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,en;q=0.9
cookie: 1P_JAR=2023-03-12-22; AEC=ARSKqsLIZuIQCQoYlTRZfCg_tawXYvRiB1kDB8z1c0VRRrPAuD-iymrB8A; NID=511=rcB6Nv8Pzk7ZBKQzTcVBvMSzLfv0oqUwXU9b8LzBUfGVVEt1vkRAlZ5Lkg6fnKFbfb8jcf6tsYPVWRSe0wmd932NmGYf1vrDsxPp8nBEegoW_5nqEU2OCrKzLqDrBaBpsfeLOiXnJoz1ZJC6Cd2tqiO6XhTufWslhtromMGSRZc
User-Agent: Mozilla/6.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.63 Safari/537.36
sec-ch-ua: "Google Chrome";v="93", " Not;A Brand";v="99", "Chromium";v="93"
sec-ch-ua-mobile: ?0

最佳答案

我使用这个代码

from seleniumwire import webdriver  # Import from seleniumwire
import time
# Create a new instance of the Chrome driver (or Firefox)
driver = webdriver.Chrome()

# Create a request interceptor
def interceptor(request):
    #del request.headers['Referer']  # Delete the header first
    del request.headers['sec-ch-ua-mobile']  # Delete the header firs
    request.headers['sec-ch-ua-mobile'] = '?1'

# Set the interceptor on the driver
driver.request_interceptor = interceptor
# All requests will now use 'some_sec' for the user-agent
driver.get('https://httpbin.org/anything')
time.sleep(100)

我得到了这个答案

{
  "args": {}, 
  "data": "", 
  "files": {}, 
  "form": {}, 
  "headers": {
    "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.7", 
    "Accept-Encoding": "gzip, deflate, br", 
    "Accept-Language": "en-US,en;q=0.9", 
    "Host": "httpbin.org", 
    "Sec-Ch-Ua": "\"Google Chrome\";v=\"111\", \"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"111\"", 
    "Sec-Ch-Ua-Mobile": "?1", 
    "Sec-Ch-Ua-Platform": "\"Windows\"", 
    "Sec-Fetch-Dest": "document", 
    "Sec-Fetch-Mode": "navigate", 
    "Sec-Fetch-Site": "none", 
    "Sec-Fetch-User": "?1", 
    "Upgrade-Insecure-Requests": "1", 
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36", 
    "X-Amzn-Trace-Id": "Root=1-6411d437-6a5b738d424453642abefa89"
  }, 
  "json": null, 
  "method": "GET", 
  "origin": "5.239.189.35", 
  "url": "https://httpbin.org/anything"
}

enter image description here 但不幸的是,谷歌设置没有任何变化。 问题似乎出在哪里?

关于python - 我如何修改 seleniumwire 驱动程序中的 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75723289/

相关文章:

php - HTTP header "Content-type: multipart/mixed"导致 "400 Bad request"

python - 检查某个键是否被按下

python - 你怎么知道广播消息来自哪个接口(interface)?

python - 在 Pusher 客户端中接收事件

python-3.x - 如何在 Selenium python 中找到页面的特定元素,因为我找不到它们

maven - 如何正确配置 Selenium Maven 插件以与 Xvfb 一起运行以 headless 运行

ruby-on-rails - Ruby (Rails) 取消转义字符串 -- undo Array.to_s

python - 计算 string1 中的某个字符在 string2 中出现的次数?

java - 如何关闭出现在同一页面上的子弹出窗口

PHP:如果($Name= ='ProxiedIP')导致 500(内部服务器错误)