首页 > 解决方案 > 如何在 selenium 网格节点之间保留和共享身份验证数据?

问题描述

我在 docker 中使用硒网格。我想登录到我想在并行运行许多任务之前抓取的网站。一般来说,我想登录然后保留身份验证数据并在我的所有节点之间共享。有可能还是有更好的方法来做到这一点?因为当我并行运行所有任务时,我没有身份验证数据,我需要在每个任务上登录

我的作曲:

services:
  selenium-hub:
    image: selenium/hub:3.141.59-20210311
    container_name: selenium-hub
    environment:
      GRID_MAX_SESSION: 16
    ports:
      - "4442:4442"
      - "4443:4443"
      - "4444:4444"

  chrome:
    image: selenium/node-chrome:3.141.59-20210311
    volumes:
      - /dev/shm:/dev/shm
    depends_on:
      - selenium-hub
    environment:
      HUB_HOST: selenium-hub
      HUB_PORT: 4444
      NODE_MAX_SESSION: 5
      NODE_MAX_INSTANCES: 5

标签: pythondockerseleniumaccess-tokenselenium-grid

解决方案


我没有找到如何重用会话,但我找到了如何自己做。首先我登录然后保存cookies

# login logic...
cookies = driver.get_cookies()

之后,我可以将这些 cookie 设置到我的所有节点。

# Before setup your cookies go to related doamin. Without this cookies will not be setup

for cookie in cookies:
    driver.add_cookie(cookie)

推荐阅读