Selenium 403 error

Selenium Grid : Forbidden for Proxy , HTTP ERROR: 403

Selenium Grid : Forbidden for Proxy , HTTP ERROR: 403

Command to start Selenium Grid at your local

java -jar selenium-server-standalone-2.41.0.jar

Aug 20, 2014 7:44:34 PM org.openqa.grid.selenium.GridLauncher main
INFO: Launching a selenium grid server
2014-08-20 19:44:35.907:INFO:osjs.Server:jetty-7.x.y-SNAPSHOT

2014-08-20 19:44:35.952:INFO:osjsh.ContextHandler:started o.s.j.s.ServletContextHandler{/,null}
2014-08-20 19:44:35.960:INFO:osjs.AbstractConnector:Started SocketConnector@0.0.0.0:4444

Browser Console

403

Error Message from browser

Forbidden for Proxy
RequestURI=/grid/console

Powered by Jetty

Root cause analysis

To start the selenium grid, you need selenium standalone jar. That has to be executed at the local machine, or at the machine where you want to host your hub on.

For this, you need to make sure the command you are executing should be correct and complete. Recheck the above command I have added.

The command is not specifying any role, whether the Selenium grid should treat this instance as a Node or Hub.

Solution

java -jar selenium-server-standalone-2.41.0.jar -role hub
Aug 20, 2014 7:44:34 PM org.openqa.grid.selenium.GridLauncher main
INFO: Launching a selenium grid server
2014-08-20 19:44:35.907:INFO:osjs.Server:jetty-7.x.y-SNAPSHOT
2014-08-20 19:44:35.952:INFO:osjsh.ContextHandler:started o.s.j.s.ServletContextHandler{/,null}
2014-08-20 19:44:35.960:INFO:osjs.AbstractConnector:Started SocketConnector@0.0.0.0:4444

Specifying the role as the hub will solve this issue, you can make this instance as Node also for this you have to make sure that the -role parameter should get a Node as a role.

Khyati has more than 10 years of experience in quality assurance engineering.
Khyati has worked extensively on Manual and Automation testing of various technologies and domains like data quality. From last 6 years, She is leading QA Activities on Agile/Scrum projects while continuously contributing in playing role as a Scrum master, continuous integration, iteration planning, facilitating requirement analysis and closure.

On automation front, She has explored gui, web services and mobile automation.

Tools/ Technologies used:-

Selenium/WebDriver, Core Java, JUnit, TestNG, Maven, SoapUI. Jenkins, Appium, Selenium backed and selenium remote driver.

Have delve into android phone/tab of verison upto 6 (marshmallow), ios phone/i pad, and mobile websites
View all posts by Khyati Sehgal

При использовании regualr chromedriver мои тесты проходят без проблем, и я получаю результаты тестов. Когда я пытаюсь запустить Chrome без головы с питоном и селеном, я получаю ошибку 403 Forbidden на снимке экрана и selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: на консоли. Я передал все эти аргументы и получил тот же результат:

chrome_options = Options()
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--window-size=1920,1080')
chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-gpu')
chrome_options.add_argument('--allow-running-insecure-content')
chrome_options.add_argument("--headless")
driver = webdriver.Chrome(chrome_options=chrome_options)

Я также попробовал from fake_headers import Headers, но проблема все еще сохраняется

3 ответа

Лучший ответ

#!/usr/bin/python3
#try this 
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium import webdriver
import time,os
from bs4 import BeautifulSoup
from pyvirtualdisplay import Display
from fake_useragent import UserAgent
def web(url):
    display = Display(visible=0, size=(1920, 1080)) 
    display.start()
    ua = UserAgent()
    userAgent = ua.chrome
    chrome_options = Options()
    chrome_options.add_experimental_option("excludeSwitches", ["enable-automation"])
    chrome_options.add_experimental_option('useAutomationExtension', False)
    chrome_options.add_argument("--disable-blink-features=AutomationControlled")
    chrome_options.add_argument(f'user-agent={userAgent}')
    driver = webdriver.Chrome (options = chrome_options)
    driver.get(url)


1

Antoniojbueno
30 Дек 2021 в 21:27

Я нашел другое решение, аналогичное первому ответу. Объяснение проблемы можно найти здесь. Это решило проблема для меня.

chrome_options = Options()
user_agent = 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.50 Safari/537.36'
chrome_options.add_argument(f'user-agent={user_agent}')
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--window-size=1920,1080')
chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-gpu')
chrome_options.add_argument('--allow-running-insecure-content')
chrome_options.add_argument("--headless")
driver = webdriver.Chrome(chrome_options=chrome_options)


0

jcoder
31 Дек 2021 в 18:57

Да, у вас была проблема с «Useragent», но рекомендуется использовать display () для веб-страниц, которые имеют защиту от ботов, хотя это решение является временным. Мой основной язык испанский


0

Antoniojbueno
31 Дек 2021 в 19:21

Я использую селен WebDriver с питоном в попытке, чтобы попытаться войти в сайте Вход страничку

Для этого я сделал следующее в python:

from selenium import webdriver 
import bs4 as bs


driver = webdriver.Chrome()
driver.get('https://app.chatra.io/')

Затем я попытаюсь проанализировать использование Beautiful Soup:

html = driver.execute_script('return document.documentElement.outerHTML')
soup = bs.BeautifulSoup(html, 'html.parser')
print(soup.prettify)

Основная проблема заключается в том, что страница никогда не загружается полностью. Когда я загружаю страницу в браузере самостоятельно, все в порядке. Однако, когда селен-webdriver пытается загрузить его, он, по-видимому, останавливается на полпути.

Любая идея почему? Любые идеи о том, как его исправить или где искать учиться?

02 янв. 2018, в 05:04

Поделиться

Источник

2 ответа

Есть несколько аспектов проблемы, с которой вы сталкиваетесь, как показано ниже:

  • Поскольку вы пытаетесь воспользоваться помощью BeautifulSoup поэтому, если вы попытаетесь использовать urlopen из urllib.request, ошибка говорит все:

    urllib.error.HTTPError: HTTP Error 403: Forbidden
    

    Это означает, что обнаружен urllib.request и HTTP Error 403: Forbidden поднят. Следовательно, использование webdriver из selenium имеет смысл.

  • Затем, когда вы сначала ChromeDriver и Chrome Website открывается и создает. Но вскоре ChromeDriver являющийся WebDriver и ChromeDriver не может проанализировать теги <head> & <body>. Вы видите минимальный заголовок как:

    <!DOCTYPE html>
    <html xmlns="http://www.w3.org/1999/xhtml" class="supports cssfilters flexwrap chrome webkit win hover web"></html>
    
  • Наконец, когда вы берете с собой помощь GeckoDriver и Firefox Quantum Website открывается и корректно выглядит следующим образом:

    Блок кода:

    from selenium import webdriver
    from bs4 import BeautifulSoup as soup
    
    driver = webdriver.Firefox(executable_path=r'C:UtilityBrowserDriversgeckodriver.exe')
    driver.get('https://app.chatra.io/')
    html = driver.execute_script('return document.documentElement.outerHTML')
    pagesoup = soup(html, "html.parser")
    print(pagesoup)
    

    Консольный выход:

    <html class="supports cssfilters flexwrap firefox gecko win hover web"><head>
    <link class="" href="https://app.chatra.io/b281cc6b75916e26b334b5a05913e3eb18fd3a4d.css?meteor_css_resource=true&amp;_g_app_v_=51" rel="stylesheet" type="text/css"/>
    <meta charset="utf-8"/>
    <meta content="IE=edge" http-equiv="X-UA-Compatible"/>
    <meta content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no, viewport-fit=cover" name="viewport"/>
    .
    .
    .
    <em>··· Chatra</em>
    .
    .
    .
    </div></body></html>
    
  • Добавление prettify к извлечению супа:

    Блок кода:

    from selenium import webdriver
    from bs4 import BeautifulSoup as soup
    
    driver = webdriver.Firefox(executable_path=r'C:UtilityBrowserDriversgeckodriver.exe')
    driver.get('https://app.chatra.io/')
    html = driver.execute_script('return document.documentElement.outerHTML')
    pagesoup = soup(html, "html.parser")
    print(pagesoup.prettify)
    

    Консольный выход:

    <bound method Tag.prettify of <html class="supports cssfilters flexwrap firefox gecko win hover web"><head>
    <link class="" href="https://app.chatra.io/b281cc6b75916e26b334b5a05913e3eb18fd3a4d.css?meteor_css_resource=true&amp;_g_app_v_=51" rel="stylesheet" type="text/css"/>
    <meta charset="utf-8"/>
    <meta content="IE=edge" http-equiv="X-UA-Compatible"/>
    <meta content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no, viewport-fit=cover" name="viewport"/>
    .
    .
    .
    <em>··· Chatra</em>
    .
    .
    .
    </div></body></html>>
    
  • Даже вы можете использовать Selenium page_source метод следующим образом:

    Блок кода:

    from selenium import webdriver
    
    driver = webdriver.Firefox(executable_path=r'C:UtilityBrowserDriversgeckodriver.exe')
    driver.get('https://app.chatra.io/')
    print(driver.page_source)
    

    Консольный выход:

<html class="supports cssfilters flexwrap firefox gecko win hover web">

<head>
  <link rel="stylesheet" type="text/css" class="" href="https://app.chatra.io/b281cc6b75916e26b334b5a05913e3eb18fd3a4d.css?meteor_css_resource=true&amp;_g_app_v_=51">
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no, viewport-fit=cover">

  <!-- platform specific stuff -->
  <meta name="msapplication-tap-highlight" content="no">
  <meta name="apple-mobile-web-app-capable" content="yes">

  <!-- favicon -->
  <link rel="shortcut icon" href="/static/favicon.ico">

  <!-- win8 tile -->
  <meta name="msapplication-TileImage" content="/static/win-tile.png">
  <meta name="msapplication-TileColor" content="#ffffff">
  <meta name="application-name" content="Chatra">

  <!-- apple touch icon -->
  <!--<link rel="apple-touch-icon" sizes="256x256" href="/static/?????.png">-->

  <title>··· Chatra</title>

  <style>
    body {
      background: #f6f5f7
    }
  </style>

  <style type="text/css"></style>
</head>

<body>



  <script async="" src="https://www.google-analytics.com/analytics.js"></script>
  <script type="text/javascript" src="/meteor_runtime_config.js"></script>

  <script type="text/javascript" src="https://app.chatra.io/9153feecdc706adbf2c71253473a6aa62c803e45.js?meteor_js_resource=true&amp;_g_app_v_=51"></script>



  <div class="body body-layout">
    <div class="body-layout__main main-layout">
      <aside class="main-layout__left-sidebar">
        <div class="left-sidebar-layout">
        </div>
      </aside>
      <div class="main-layout__content">
        <div class="content-layout">


          <main class="content-layout__main is-no-fades js-popover-boundry js-main">

            <div class="center loading loading--light">
              <div class="content-padding nothing">


                <em>··· Chatra</em>


              </div>
            </div>

          </main>
        </div>
      </div>
    </div>
  </div>
</body>
</html>

DebanjanB
02 янв. 2018, в 07:08

Поделиться

Прежде всего, эта проблема также воспроизводится для меня в последнем Chrome (с chromedriver 2.34 — также в последнее время) — пока не уверен, что происходит на данный момент. Обходной путь: Firefox работал для меня отлично.


И я добавлю дополнительный шаг между driver.get() и синтаксисом HTML — явное ожидание, чтобы страница правильно загружалась до тех пор, пока желаемое условие не будет истинным:

import bs4 as bs
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC


driver = webdriver.Firefox()
driver.get('https://app.chatra.io/')

wait = WebDriverWait(driver, 10)
wait.until(EC.visibility_of_element_located((By.ID, "signin-email")))

html = driver.execute_script('return document.documentElement.outerHTML')
soup = bs.BeautifulSoup(html, 'html.parser')
print(soup.prettify())

Обратите внимание, что вам также необходимо вызвать prettify() — это метод.

alecxe
02 янв. 2018, в 02:49

Поделиться

Ещё вопросы

  • 0Ионные вложенные представления нагружают друг друга
  • 0Как значения Null программно реализуются в базе данных mysql? [Дубликат]
  • 0Написать регулярное выражение в preg_replace
  • 1Как установить ширину столбцов группы кендогрид
  • 1Вход в Google в приложении ASP.Net MVC для использования Gmail API
  • 0Кэшировать статические HTML-страницы с помощью переменных get
  • 0Значение Integer в предложении GROUP BY
  • 0Вызов метода подкласса. Указатель против не указателя
  • 1знать о вставке удалить и обновить данные в gridview в C #
  • 1как реализовать приостановку обработчика для другого действия, выполняющего это действие
  • 1API календаря Google не может получить идентификатор цвета
  • 0Обновить содержимое с помощью jquery
  • 0отделите каждую букву с помощью jquery
  • 0Как конвертировать закодированную базу 64 в UTF-16LE в javascript / jquery
  • 0Cakephp: разделить логику между моделью и контроллером
  • 0Как передать переменную в контроллер из директивы, которая находится за пределами контроллера?
  • 1Пустой канал в плагине страницы Facebook (встроенный виджет каналов)
  • 1Vuejs — передать слот вложенному ребенку
  • 1Редактирование списка передано как аргумент, кажется, не работает
  • 0SQL-запрос для получения идентификатора YouTube из встроенного кода
  • 0Обнаружение IE не работает
  • 1Имена папок Unicode для Android в Eclipse, приводящие к неправильной сборке
  • 0угловые данные начальной загрузки не отображаются должным образом
  • 1Разница между методами Matrix <T> Divide (двойной скаляр) и Matrix <T> DivideByThis (двойной скаляр) в MathNet Numerics?
  • 0AngularJS как получить логическое значение
  • 0мой setTimeout не работает правильно
  • 0ошибка constexpr статического шаблона
  • 1Модификация XML из разных задач одновременно
  • 0Как двустороннее связывание localStorageService в AngularJs?
  • 1Как заставить страницу выполнения Windows обновиться, когда она выходит на передний план?
  • 0Структура данных с TTL
  • 0не могу получить то, что я хранил в базе данных с помощью php кода pdo [дубликата]
  • 0Использовать For Loop для вывода имени в массиве?
  • 0Чтение данных из файла — сохранение в переменных или чтение снова и снова
  • 1Python — первое слово не включается в поиск
  • 1невозможно запустить ноутбук на сервере Python Linux
  • 1Доступно ли гео-фехтование с полигонами и динамическими объектами на Android?
  • 1NMOCK3 — Ожидается.Один.Метод
  • 1Пространства имен XML для Primefaces 4.0
  • 0Сопоставление строки (в первой таблице) с несколькими столбцами (во второй таблице) из таблицы с использованием MySQL
  • 1Как повторить эту функцию
  • 0JQuery выбрать все элементы с одинаковым именем класса
  • 1Как запрограммировать средство выбора изображений в Android? [Дубликат]
  • 1Свойство AD — System.Byte [] — какую кодировку конвертировать в строку?
  • 0Uncaught Error: вызов неопределенной функции mysqli_connect ()
  • 0Как использовать ng-show, когда в массиве существует ключ с определенным значением?
  • 1Как установить текстуру динамически на MeshPhongMaterial?
  • 0CSS padding в элементах li> a
  • 1Как отобразить сообщение о прогрессе?

Сообщество Overcoder

Понравилась статья? Поделить с друзьями:
  • Select failed error code 10038 сделана попытка выполнить операцию на объекте не являющемся сокетом
  • See r2r is against business warez txt ошибка
  • Sedo fss ru ошибка сервера код состояния 500
  • Securom launcher gta 4 ошибка
  • Security kerberos ошибка 4