Парсинг сайтов на Python | Обходим обнаружение парсера с Selenium Stealth

Поделиться
HTML-код
  • Опубликовано: 14 ноя 2024

Комментарии • 139

  • @zproger
    @zproger  2 года назад +12

    Исходный код - t.me/codeblog8/112
    На этом канале также публикуются полезные статьи,
    не забывайте подписываться, чтобы не пропустить :)

    • @maksimluzin1121
      @maksimluzin1121 Год назад

      Мужик, ты крут!!! 👍

    • @Romthalas
      @Romthalas 6 месяцев назад

      Благодарю! Очень выручил!

  • @Идиотсюда-о3ю
    @Идиотсюда-о3ю 2 года назад +3

    СПАСИБО Автору за этот обучающий курс.
    Своё изучение в Selenium я решил начать с этого курса и я рад тому что я смог первым делом найти именно его. Все рассказано понятным языком и к тому же ролики быстро и подробно показывают определённые аспекты в этом языке.

  • @pashahous
    @pashahous 2 года назад +35

    Интересно было бы увидеть, логику разбиения кода на файлы, создание классов и т.п. Спасибо за очередной урок. Лайк.

    • @zproger
      @zproger  2 года назад +8

      Спасибо, сделаю такое видео пожалуй

    • @СергейСинюк-и5м
      @СергейСинюк-и5м Год назад +1

      @@zproger - Подскажите есть ли такое видео?

    • @СергейСинюк-и5м
      @СергейСинюк-и5м Год назад +1

      @@zproger - Я сегодня завтра постараюсь разбить на структуры и очень хотел бы вашей оценки. Если вы не против)

    • @zproger
      @zproger  Год назад +1

      Недавно вышло на канале: ruclips.net/video/SS8KtothcAQ/видео.html

    • @ДаниилВитковский-м1в
      @ДаниилВитковский-м1в Год назад

      @@zprogerривет, подскажи пожалуйста как решить проблему с закрытием браузера хром? Я написал банальный код что бы он просто его открыл, команды закрыть не давал. Где я только не искал решение этой проблемы , не могу найти 😢
      Windows 10, использовал webdrivermanager

  • @flueriexeflueriexe7040
    @flueriexeflueriexe7040 2 года назад +2

    Спасибо большое, очень рад, что попал на этот канал

  • @user-te1dz
    @user-te1dz 2 года назад +7

    Спасибо за информацию, очень понравилось.

  • @СергейСинюк-и5м
    @СергейСинюк-и5м Год назад +2

    Как по мне идеальный формат видео (выполнение реальной работы) - вообще очень было интересно как говориться будни программиста посмотреть и какой код пишите в реале (как говориться хотелось бы прикоснуться к реальному продукту)

  • @flueriexeflueriexe7040
    @flueriexeflueriexe7040 2 года назад +7

    И поздравляю с видео больше 10 минут! Вот только такой формат и давайте, хоть покушать успеваю, а то за 5 минут еще остается

    • @zproger
      @zproger  2 года назад +1

      Понял принял :)

  • @ramzbew5674
    @ramzbew5674 2 года назад +2

    Спасибо ! Мужик ! У тебя самый крутой канал !

    • @zproger
      @zproger  2 года назад

      Благодарю

  • @seoonlyRU
    @seoonlyRU 2 года назад +3

    огонь, ловите лукас от СЕООНЛИ

    • @zproger
      @zproger  2 года назад

      Благодарю :)

  • @mak32
    @mak32 2 года назад +8

    Красавчик! Очень крутое видео, впрочем как и всегда 🙂
    Было бы круто увидеть автоматизацию действий не в вебе, а просто на компе

    • @zproger
      @zproger  2 года назад +7

      Есть библиотека PyWinAuto, возможно дойдут до неё руки
      и я сделаю видео :)

    • @mak32
      @mak32 2 года назад +1

      @@zproger о! Спасибо! Даже за направление спасибо, потому что пробовал через win32 + pyautogui, но wib32 почему то не работала, как в видосах... А pyautogui ну прям слишком топорно по пикселям вымерять...

    • @Gigantovod
      @Gigantovod 2 года назад

      @@zproger шикарно! Ждём когда дойдут руки до PyWinAuto!!

  • @knocker6970
    @knocker6970 Год назад

    Благодарю автора за урок ! Для меня было очень интересно и познавательно...

  • @MultiBigkush
    @MultiBigkush 2 года назад +3

    Спасибо за видео! Сделай пожалуйста в следующем видео пример того, как можно спарсить номер на авито. Он представлен там как картинка. Через json авито подменяет номер из объявление, в итоге парсится совсем другой номер.

  • @blin_dog2793
    @blin_dog2793 2 года назад

    Впервые у вас. Учусь программировать. Пока даже не джун, потому ищу всю информацию, которая может помочь в развитии. Если позволите, дам немного критики: вы уж очень быстро некоторые моменты делаете, что я не успеваю понять, что конкретно произошло и почему надо так. Но эта придирка меркнет в сравнении с тем, насколько полезен был данный контент в целом. Пожалуйста, делайте больше таких видео. 299ый лайк+подписка

  • @cactusmusicchannel4357
    @cactusmusicchannel4357 Год назад

    Автору огромное спасибо!

  • @gorestea705
    @gorestea705 2 года назад +1

    спасибо тебе за видео!

  • @Gigantovod
    @Gigantovod 2 года назад +1

    Не знаю кому как, а для меня это очень-очень залипательный канал... Автор, прошу снять видео по коду для накрутки лайков на Ютубе... Обязуюсь испытать на "кошках", а лайки накрутить на Ваш канал! Спасибо огромное за Ваш труд! Мое уважение!

    • @zproger
      @zproger  2 года назад +2

      Благодарю, рад что принес пользу

  • @berg4mut
    @berg4mut 2 года назад +1

    Отличное видео! рабочий group_size = driver.find_element(By.CLASS_NAME, "tourPage__container").find_element(By.CLASS_NAME, "tourPageRight").find_element(By.CLASS_NAME, "middle").find_element(By.CLASS_NAME, "size_group").find_element(By.CLASS_NAME, "right").text

    • @ZK-mu4hq
      @ZK-mu4hq Год назад

      Ни ваш вариант ни даже так не работает :( group_size = driver.find_element(By.CLASS_NAME, "tourPage__container").find_element(By.CLASS_NAME, "tourPageRight").find_element(By.CLASS_NAME, "tourPage__main__sidebar").find_element(By.CLASS_NAME, "middle").find_element(By.CLASS_NAME, "size_group").find_element(By.CLASS_NAME, "right").text

  • @55sintez
    @55sintez 2 года назад +1

    Вот это бомба, спасибо!

    • @zproger
      @zproger  2 года назад

      Благодарю :)

  • @johannex.
    @johannex. 2 года назад +1

    Очень познавательно и понятно объяснено. Но так и не удалось запарсить сайт магазина днс ) Какая-то навороченная защита у них

  • @rjohanan8032
    @rjohanan8032 2 года назад +1

    спасибо, отличное видео
    > 5:32 ... в один файл хотя так делать не стоит ...
    - хотелось бы, на самом деле, "как стоит" посмотреть
    лево руля, уже был такой комментарий, ждём видео "как стоит"

    • @zproger
      @zproger  2 года назад

      Будет видео об этом :)

  • @ЕвгенийВолков-п2я
    @ЕвгенийВолков-п2я 2 года назад +1

    Там где парсили размер группы, и не работал просто text, можно сделать .get_attribute('innerText'). У меня так заработало, и никакой CSS_SELECTOR не потребовался

  • @tvojKot
    @tvojKot 2 года назад +2

    крутое видео

    • @zproger
      @zproger  2 года назад

      Спасибо

  • @h-freed
    @h-freed 2 года назад +2

    Наконец-то я нашел то, что долго искал - парсинг информации не только с листингов карточек, но и по ссылкам. Огромное спасибо за видео!
    Хочу спросить, как такое же сделать с сохранением в CSV, а не в JSON?

    • @Igor245390
      @Igor245390 Год назад

      используйте библиотеку pandas

  • @user-ym5ge5zo88
    @user-ym5ge5zo88 Год назад

    Интересно было бы увидеть методы для обхода парсинга без использования Selenium. Так как он работает довольно медленно. Интересно было бы глянуть на какие-то опесорсы от программистов, которые нашли методы для обхода парсинга без использования эмулятора браузера

    • @Issei_X
      @Issei_X 11 месяцев назад

      В итоге нашел что нибудь побыстрее?

  • @BorisenkoV89
    @BorisenkoV89 2 года назад +2

    Бы ло бы интересно посмотреть реализацию с авторизацией (возможно через сторонний сервис(Гугл, ВК, ОК и т.д) с решением капчи)

    • @zproger
      @zproger  2 года назад

      Хорошая идея, спасибо

  • @ioptaable
    @ioptaable 2 года назад +3

    Спасибо за видео! Если будет возможность и желание прошу рассказать как можно в selenium скролить страницу - бывают сайты, которые подгружают информацию по факту скрола.

    • @zproger
      @zproger  2 года назад +3

      Это можно сделать примерно так:
      from selenium.webdriver.common.keys import Keys
      html = driver.find_element_by_tag_name('html')
      html.send_keys(Keys.DOWN)

    • @stoparb357
      @stoparb357 2 года назад +1

      js код исполняешь на скролл вниз и все

    • @СергейСинюк-и5м
      @СергейСинюк-и5м Год назад

      @@stoparb357 подробнее можно? или может пример есть?

  • @fedrhmelnikov
    @fedrhmelnikov 2 года назад +2

    Опыт мне подсказывает что там скорее всего было несколько классов size_group и надо было юзать find_element[S] и выбрать из списка. Css selector меняется чаще чем class name и его только на крайняк. И кстати, прежде чем юзать какой нить селектор или class_name, xpath и тд его лучше для начала в самом же браузере проверить. В хроме не знаю но в мазиле есть такая возможность.

    • @zproger
      @zproger  2 года назад +1

      Спасибо за развернутый комментарий, думаю и в JS консоли можно такое реализовать, но как-то не подумал об этом на тот момент, но идея хорошая

  • @return_1101
    @return_1101 2 года назад +2

    Я сейчас только учу это. Да, у меня есть много чему учится.

  • @СергейСинюк-и5м
    @СергейСинюк-и5м Год назад

    Ответ найден) смотрите под комментарием)
    Извините за назойливость, интересует один вопрос как при определении функции или класса аннотировать тип переменной :() ну вы поняли надеюсь суть вопроса)
    Это для того чтобы методы IDE-шка подсказывала.
    Заранее спасибо.

    • @СергейСинюк-и5м
      @СергейСинюк-и5м Год назад

      from selenium.webdriver import Chrome as Driver
      class Parsing():
      def __init__(self, response: Driver ):
      self.res = response
      тем самым мы аннотируем аргумент response объектом класса вебдрайверChrome - следовательно нам доступны все методы.

  • @michaelschumacher8276
    @michaelschumacher8276 2 года назад +2

    чтобы улучшить дедукцию читая текст задирай голову в верх чтобы слюни не мешали . и записывай короткими частями чтобы красивее казалось а не так как будто ты только что с пробежки . и прекрати пожалуйста выделять приставки "кы" и "Вы" там кстати нет ы !!! от тебя после 1 видоса бесит но блин настолько офигенный контент что просто спасибо и спасибо хочется говорить и несколько лайкосов поставить .

    • @zproger
      @zproger  2 года назад +2

      Спасибо xDD

  • @petrpetroleov5038
    @petrpetroleov5038 Год назад

    Добрый день. Спасибо за видео.
    Скажите , пожалуйста, я правильно понимаю что в видео вы парсите сайт не открывая при этом браузер?

  • @55sintez
    @55sintez 2 года назад +2

    А будут видео там где все распределено по файлам или классам, как делают опытные разработчики?

    • @zproger
      @zproger  2 года назад +2

      Да, сделаю обязательно

  • @flory_gamedev
    @flory_gamedev Год назад

    Спасибо попробую так спарсить сайт который не мог из за защиты

  • @yevgeniisafronov7572
    @yevgeniisafronov7572 Год назад

    Здравствуйте, классный урок, все получилось. А можно ли запускать такой скрипт на FTP сервере?

  • @Wolfoffreedom111
    @Wolfoffreedom111 Год назад

    Трудно ли реализовать бота , который будет парсить сайты на товары которые очень трудно найти в наличии. Чтоб получать уведомления со ссылкой на товар когда он будет в продаже? Было бы круто иметь такого бота)).

  • @flueriexeflueriexe7040
    @flueriexeflueriexe7040 2 года назад +2

    Здравствуйте. Спасибо большое за видео, было очень познавательно, но скажите, пожалуйста, меня вот очень сильно заинтересовала эта вот оболочка стеалтх над селениумом, ведь стеалтх в переводе означает "скрытный". Вот скажите, пожалуйста, при разработке игры, где ты типа грибок и прыгаешь по супермарио можно ли грибочек сделать невидимым или скрытным, то есть дать ему оболочку стеалтх, чтобы вот геймплей был более завораживающим?!

    • @zproger
      @zproger  2 года назад +1

      Здравствуйте, всё верно xDD

  • @АнтонБраун-й7я
    @АнтонБраун-й7я 2 года назад +1

    Привет, спасибо за видео, где берешь заказы по фрилансу ?

    • @zproger
      @zproger  2 года назад +1

      Спасибо за фидбэк, заказчиков ищу в соц.сетях

  • @ВладиславАврелий
    @ВладиславАврелий Месяц назад

    когда дойдете до вывода print(titile) произойдет октрытие браузера с ошибкой 404

  • @_OverNiko_
    @_OverNiko_ 2 года назад +2

    300 уже есть, даже 413 )) Думаю пора рассмотреть мультипроцесс, асинхронность и данную ошибку -
    [0429/203926.357:ERROR:ssl_client_socket_impl.cc(999)] handshake failed; returned -1, SSL error code 1, net_error -101
    Думаю у многих она есть, в инете есть опции которые типа скрывают ошибки, но нет )

    • @zproger
      @zproger  2 года назад

      Мультипроцессинг и потоки уже есть на канале, асинхронность пока только в планах :)

    • @_OverNiko_
      @_OverNiko_ 2 года назад +1

      ​ @ZProger [ IT ] Кстати, как тебе идея сделать видео про правильную разбивку кода на файлы, тип когда не всё в одном пишешь, а когда разбиваешь код на части и пихаешь его в разные файлы связанные друг с другом

    • @zproger
      @zproger  2 года назад +1

      Хорошая идея, как-то сделаю видос

  • @andrej1034
    @andrej1034 6 месяцев назад

    подскажите возможно ли входить(авторизоваться) на сайт через запрос reqvest (используя selenium) и потом на сайте осуществлять клики?

  • @gokigolden_king6154
    @gokigolden_king6154 Год назад +1

    Здравствуйте. Мы задались целью спарсить ОЛХ Узбекистана. Мы использовали datacool но программа ОЛХ распознает и блокирует нас. Скажите пожалуйста не могли бы вы используя тот механизм, о котором шла речь в видео сделать парсер для ОЛХ узбекистана?

  • @Andyuiux
    @Andyuiux 2 года назад +1

    Занимательная лекция!!)
    Однако я столкнулся с проблемой: ERROR:ssl_client_socket_impl.cc(983)] handshake failed; returned -1, SSL error code 1, net_error -101
    Cмотрел решение на стаке, но не помогло. Что я делаю не так?

  • @СергейЛавидов
    @СергейЛавидов 2 года назад +1

    А теперь это не работает выдает selenium.common.exceptions.InvalidArgumentException: Message: invalid argument: Invalid parameters :-(

  • @Ju8Sho
    @Ju8Sho Год назад

    Здравствуйте как парсер видео в сайте если видео платный😊 такой урок можете сделать? Пожалуйста

  • @liker12345ffff
    @liker12345ffff 2 года назад +1

    Что за композиция 15:50?

  • @АлександрК-ш
    @АлександрК-ш 2 года назад +1

    Здравствуйте. У меня в окне браузера на долю секунды появляется красного цвета содержимое, а потом перекрашивается в зеленое. Так нормально или какая - то проблема есть?

  • @АндрейОт
    @АндрейОт 2 года назад +1

    пробую сделать свой первый парсер по авито и вот столкнулся с проблемой ошибки 403-т.е авито палит парсинг и отказывает. Как решить проблему помогите(
    через requests не варик, через cURL тоже сейчас попробовал-тоже самое.
    Слышал про selenium, но это единственный вариант?

  • @OMTheVASYA
    @OMTheVASYA 2 года назад +2

    А в чём разница с Selenium? То есть Селениум так плох, что ему нужна библиотека Стелс?

    • @zproger
      @zproger  2 года назад +3

      Нет никакой разницы, selenium-stealth это просто оболочка которая патчит основной Selenium, чтобы его не палили как автоматизацию. А селениум палят потому что у него и не было задачи обойти это, так как инструмент создан для тестирования сайтов, а не для автоматизации.

  • @kirill_good_job
    @kirill_good_job 2 года назад

    на 16:11 говорите что будете использовать старый не актуальный метод и не используете его, не понятно, почему ?

  • @flueriexeflueriexe7040
    @flueriexeflueriexe7040 2 года назад +2

    Только скажите, пожалуйста, я вот гражданин ЭрЭф и вот сейчас происходит очень сложная геополитическая ситуация, при которой нам, возможно, отключат эти вот западные интернеты ваши все
    Вот было бы видео, где вы бы объяснили, как вот попасть на различные ресурсы сети Интернет, которые находятся под ограничением, иначе говоря, заблокированы на территории определенной страны. Вот я просто не знаю, но, как говорят, существуют какие-то вот средства на три буквы (другие три буквы), которые позволяют вот это дело все обходить, как бы быть в одной стране, но этот компутер думает, что в другой, было бы очень здорово!

    • @zproger
      @zproger  2 года назад +1

      Можно использовать VPN)

    • @WinnyX
      @WinnyX 2 года назад

      Я сейчас ахуел...

  • @куку-б4ь
    @куку-б4ь 2 года назад +1

    ZProger [ IT ], сейчас делаю автологгер аккаунт на сайт, можешь сказать как обойти блокировку за мультиаккаунты(2и более аккаунта на 1 сайте)
    Достаточно ли просто поменять прокси айпи и юзер агент? что можешь посоветовать сделать что бы обеспечить анонимность?

    • @zproger
      @zproger  2 года назад

      Сайт может и по отпечаткам браузера палить, можно их тоже менять

    • @куку-б4ь
      @куку-б4ь 2 года назад

      @@zproger как скрыть отпечатки?

    • @куку-б4ь
      @куку-б4ь 2 года назад

      @@zproger и какие еще знаешь методы? если ответишь буду благодарен

  • @maxiedp
    @maxiedp 10 месяцев назад

    эх, если бы cloudflare не мог обнаружить selenium...) я уже очень много времени бьюсь над этой проблемой

  • @kirill_good_job
    @kirill_good_job 2 года назад +1

    AttributeError: 'list' object has no attribute 'find_elements'
    как ошибку исправить ?

  • @ДжонСмит-ч5ь
    @ДжонСмит-ч5ь Год назад

    Странно что результат в json а не какой нибудь sql

  • @back_to_life0
    @back_to_life0 2 года назад +2

    А если это cloudflare защита

    • @zproger
      @zproger  2 года назад +1

      Есть библиотеки для обхода

    • @back_to_life0
      @back_to_life0 2 года назад +1

      @@zproger а для php ? Можно хоья бы название библиотеки...

    • @_cosmos_
      @_cosmos_ 10 месяцев назад

      Можем дать ссылку на нее?@@zproger

  • @ismoilnarziev9333
    @ismoilnarziev9333 2 года назад

    Очень важное код...спасибо )) а можно не каждий раз открыть хром...мы можем один раз открывать и в качестве индек.хтмл сохраним и дальнейшее с этим разбираться...
    Я с beautifulsoup написал но encoding ="cp1251" не работает...

    • @zproger
      @zproger  2 года назад

      Интересный подход, спасибо

  • @SalamAleikum-e2z
    @SalamAleikum-e2z Год назад

    Как динамику парсить?

  • @jailyssneust2189
    @jailyssneust2189 Год назад

    Вопрос. Почему парсит значения через раз? Всё правильно, ссылки парсит все, но title или же цену парсит через раз. Непонятно..

    • @jailyssneust2189
      @jailyssneust2189 Год назад

      Вместо .text нужно использовать .get_attribute('innerText')

  • @Никита-м8р2г
    @Никита-м8р2г 9 месяцев назад

    Не помогает, сайт блокирует доступ

  • @kirill_good_job
    @kirill_good_job Год назад

    здравствуйте, вылезла такая ошибка, подскажите, что делать ?
    MaxRetryError: HTTPConnectionPool(host='localhost', port=50115): Max retries exceeded with url: /serl (Caused by NewConnectionError(': Failed to establish a new connection: [WinError 10061] Подключение не установлено, т.к. конечный компьютер отверг запрос на подключение'))

  • @stroyka03
    @stroyka03 2 года назад +2

    автор а можно парсер встроить в свой сайт

  • @shustriy1980
    @shustriy1980 2 года назад +1

    Самое интересное и не показал: как правильно писать программу, выделять в отдельные классы и тд

    • @zproger
      @zproger  2 года назад +1

      Для этого сделаю другое видео :)

  • @liveworkdie
    @liveworkdie 6 месяцев назад

    Увы, этот скрипт не пройдёт проверку bot detection на browserscan. Селениум стелс совсем не стелс.

  • @crazyhowling2203
    @crazyhowling2203 2 года назад +2

    selenium-stealth не работает на последних версиях селениум+гугл,, это стоит упомянуть я считаю

    • @ФроловМихаил-т4м
      @ФроловМихаил-т4м 2 года назад +1

      можно по подробнее, пожалуйста.
      У меня при использовании selenium-stealth, пишет следующее "Сайт может не работать с VPN

    • @_cosmos_
      @_cosmos_ 10 месяцев назад

      вчера пробовал selenium webdriver тест пройшел@@ФроловМихаил-т4м

  • @Survivalminercaft
    @Survivalminercaft 2 года назад +1

    Эта библиотека мне не помогает в принципе. Сайт забанит в любом случае, если хорошая защита

    • @zproger
      @zproger  2 года назад

      Можете дать пример сайта, где эта библиотека не помогает? Попробую обойти защиту

    • @daffyteam
      @daffyteam 2 года назад

      @@zproger авито забанит я думаю

    • @Андрей-ж6ь4ж
      @Андрей-ж6ь4ж 2 года назад

      @@zproger bet365 не дает залогиниться с селена стелс
      Причем раньше давала
      На санисофт показывает красным строки с webgl
      Можете дать совет как решить проблему?

  • @gvozdyara9563
    @gvozdyara9563 Год назад +2

    Это же мой сайт!!!
    Хи

    • @zproger
      @zproger  Год назад +1

      серьёзно? :D

    • @gvozdyara9563
      @gvozdyara9563 Год назад +1

      @@zproger нет, но было бы весело, если бы нашелся владелец сайта )

  • @DeDokYouTube
    @DeDokYouTube 2 года назад +2

    Ютуб с этой библиотекой работает через раз, хз почему. То попускает в акк, то выкидывает мол у вас браузер не безопасный, не могу понять в чем прикол

    • @zproger
      @zproger  2 года назад +1

      У ютуба очень жесткая защита в этом плане, может не прокатить

    • @DeDokYouTube
      @DeDokYouTube 2 года назад +1

      @@zproger Нашел решение))

  • @theprogramersofpyinfinity
    @theprogramersofpyinfinity Месяц назад

    Я пошол парсить openai

  • @back_to_life0
    @back_to_life0 Год назад +1

    Это всё шляпа) cloudflare если не обходит
    То смысла в этом бреде нет.

  • @AlexAlex-ei7zf
    @AlexAlex-ei7zf 2 месяца назад

    Теперь это жопашная жопа((( Гугл определяет и не дает авторизироваться. До жопы этот Стелс

  • @ramzbew5674
    @ramzbew5674 Год назад +1

    Всë эта херня не рабочая. Попробуй напиши авторег фейсбука или протонмейл, я тогда поверю, а так ролик болтовня простая

    • @zproger
      @zproger  Год назад +1

      Ну так это лишь инструмент, понятное дело что он не будет работать абсолютно для всех сайтов и обходить любой вид защиты.

  • @pythonavr
    @pythonavr 2 года назад +2

    Осуждаю воровство информации

    • @zproger
      @zproger  2 года назад +7

      Нельзя своровать то, что итак в открытом доступе

    • @pythonavr
      @pythonavr 2 года назад +2

      @@zproger обычно на сайтах во всяких условиях использования написано что информацию можно использовать в личных целях, но не в коммерческих. На мой взгляд, это всё равно что прийти в магазин и брать там продукты просто так, тип они в открытом доступе - так не делают, потому что за это накажут. Жаль что людей останавливает не совесть, а угроза наказания

    • @zproger
      @zproger  2 года назад +5

      Согласен с вами, только в данном случае эти данные даже помогут админам сайта, так как заказчик по сути если и будет использовать их в коммерческих целях, то он будет и тем самым продвигать услуги на этом сайте, что принесет их владельцам прибыль.

    • @pythonavr
      @pythonavr 2 года назад +2

      @@zproger а ок, я так далеко не мыслю((