Selenium Grid Remote Third party proxy not working

30 Views Asked by At

Currently using the selenium hub and node configuration and using the Python test connecting to hub using 4444. When I provide the proxy, the requests are not routing it through.

Using below stack: Python 3 Selenium 4.X

k8 yaml for hub

apiVersion: apps/v1
kind: Deployment
metadata:
  name: selenium-hub
  labels:
    app: selenium-hub
spec:
  replicas: 1
  selector:
    matchLabels:
      app: selenium-hub
  template:
    metadata:
      labels:
        app: selenium-hub
    spec:
      containers:
        - name: selenium-hub
          image: selenium/hub:4.0
          ports:
            - containerPort: 4444
            - containerPort: 4443
            - containerPort: 4442
          resources:
            limits:
              memory: "4096Mi"
              cpu: "4"
          livenessProbe:
            httpGet:
              path: /wd/hub/status
              port: 4444
            initialDelaySeconds: 30
            timeoutSeconds: 5
          readinessProbe:
            httpGet:
              path: /wd/hub/status
              port: 4444
            initialDelaySeconds: 30
            timeoutSeconds: 5
---
apiVersion: v1
kind: Service
metadata:
  name: selenium-hub
  labels:
    app: selenium-hub
spec:
  ports:
    - port: 4444
      targetPort: 4444
      name: port0
    - port: 4443
      targetPort: 4443
      name: port1
    - port: 4442
      targetPort: 4442
      name: port2
  selector:
    app: selenium-hub
  type: NodePort
  sessionAffinity: None

K8 Yaml for node

apiVersion: apps/v1
kind: Deployment
metadata:
  name: selenium-node-chrome
  labels:
    app: selenium-node-chrome
spec:
  replicas: 2
  selector:
    matchLabels:
      app: selenium-node-chrome
  template:
    metadata:
      labels:
        app: selenium-node-chrome
    spec:
      volumes:
        - name: dshm
          emptyDir:
            medium: Memory
      containers:
        - name: selenium-node-chrome
          image: selenium/node-chrome:4.0
          ports:
            - containerPort: 5555
          volumeMounts:
            - mountPath: /dev/shm
              name: dshm
          env:
            - name: SE_EVENT_BUS_HOST
              value: "selenium-hub"
            - name: SE_EVENT_BUS_SUBSCRIBE_PORT
              value: "4443"
            - name: SE_EVENT_BUS_PUBLISH_PORT
              value: "4442"
            - name: SE_NODE_MAX_SESSIONS
              value: "8"
            - name: SE_NODE_OVERRIDE_MAX_SESSIONS
              value: "true"
          resources:
            limits:
              memory: "4096Mi"
              cpu: "4"

Python code to connect to the server:

chrome_options = webdriver.ChromeOptions()
    chrome_options.add_argument('--disable-dev-shm-usage')
    chrome_options.add_argument('--no-sandbox')
    chrome_options.add_argument('--headless=chrome')
    proxy2 = webdriver.Proxy()
    proxy2.proxy_type = ProxyType.MANUAL
    proxy2.http_proxy = PRX
    proxy2.httpProxy = PRX
    proxy2.ssl_proxy = PRX
    proxy2.sslProxy = PRX
    proxy2.no_proxy = ""
    chrome_options.proxy = proxy2
driver = webdriver.Remote(
        command_executor="http://localhost:4444/wd/hub", options=chrome_options, 
    )

Tried this one as well


manifest_json = """
{
    "version": "1.0.0",
    "manifest_version": 2,
    "name": "Chrome Proxy",
    "permissions": [
        "proxy",
        "tabs",
        "unlimitedStorage",
        "storage",
        "<all_urls>",
        "webRequest",
        "webRequestBlocking"
    ],
    "background": {
        "scripts": ["background.js"]
    },
    "minimum_chrome_version":"22.0.0"
}
"""

background_js = """
var config = {
        mode: "fixed_servers",
        rules: {
        singleProxy: {
            scheme: "http",
            host: "%s",
            port: parseInt(%s)
        },
        bypassList: ["localhost"]
        }
    };

chrome.proxy.settings.set({value: config, scope: "regular"}, function() {});

function callbackFn(details) {
    return {
        authCredentials: {
            username: "%s",
            password: "%s"
        }
    };
}

chrome.webRequest.onAuthRequired.addListener(
            callbackFn,
            {urls: ["<all_urls>"]},
            ['blocking']
);
""" % (
    PROXY_HOST,
    PROXY_PORT,
    PROXY_USER,
    PROXY_PASS,
)

pluginfile = "proxy_auth_plugin.zip"

        with zipfile.ZipFile(pluginfile, "w") as zp:
            zp.writestr("manifest.json", manifest_json)
            zp.writestr("background.js", background_js)
        chrome_options.add_extension(pluginfile)

I observed the proxy logs and no logs present this could be the indication.

0

There are 0 best solutions below