使用 selenium chromedriver 将联系信息添加到 user-agent

Add contact information to user-agent using selenium chromedriver

我正在完成一个网络抓取项目,我想将我的联系电子邮件添加到 user-agent,这样如果网站管理员想就我正在做的抓取与我联系,或者想让我停下来。

我在 user-agents 上找到了以下文档:

headers = {
    "User-Agent": "my web scraping program. contact me at admin@domain.com"
}
r = requests.get("http://example.com", headers=headers)

此示例涉及请求而不是 chromedriver。我想知道是否有人知道如何在使用 selenium/chromedriver 时将这种类型的 header 信息添加到我的 user-agent 中。 到目前为止,这是我的代码:

from selenium import webdriver
import os
import re
import time
from webdriver_manager.chrome import ChromeDriverManager

chromedriver_path = os.getcwd() + '/chromedriver'
driver = webdriver.Chrome(ChromeDriverManager().install())
driver.get('www.example.com')
link_url = driver.find_element_by_tag_name('a')
time.sleep(10)
html = driver.page_source
driver.close()

我不确定如何以及在何处使用我的联系信息来定义我的 header。有任何想法吗?谢谢!

Selenium 实际上不直接支持请求 headers,因为它根本没有 API。

如果你真的必须用 selenium 发送 headers,你唯一可行的选择是使用 browsermob-proxy:https://github.com/lightbody/browsermob-proxy

这就是它的样子:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

chrome_options = Options()
chrome_options.add_argument('-start maximized')


headers = {'User-Agent': 'webscraper - email'}

server = Server(path='path to browsermob-proxy', options=headers)
server.start()
proxy = server.create_proxy().proxy
chrome_options.add_argument(f'--proxy-server{proxy}')

driver = webdriver.Chrome(options=chrome_options)

driver.get('your URL')

下面的代码只是让 selenium 浏览器 window 打开。 或者,您可以放置​​“--headless”,以便在您 运行 脚本时浏览器 window 不会打开。

chrome_options.add_argument('-start maximized')

类似地,下面的代码让 chrome webdriver 知道我们想要使用我们刚刚创建的代理服务器。这种通过代理服务器的重定向让您可以将 headers 添加到您的连接。

chrome_options.add_argument(f'--proxy-server{proxy}')