Обновить
Комментарии 12
Так, а где собственно обход из заголовка, увидел только улучшение (усложнение) архитектуры самого парсера. Или там все элементарно оказалось и задача превратилась из обхода защиты в ускорение парсинга?
Сам обход берет на себя селениум. Получив js код от сервера, он его спокойно выполняет, обращается к серверам защиты, доказывает, что он браузер и получает валидные куки. А валидных кук достаточно, чтобы сборщик, для системы, выглядел как обычный пользователь.
Чего собственно и требовалось добиться.
Строго говоря, это не обход. Изначальная версия не имела ведь селениума, верно? Вот если бы она у вас заработала, то был бы обход. А так, как правильно выше уже сказали, это усложнение архитектуры.
Вопрос обхода инкапсулы без селениума – штука интересная, для Scrapy раньше был отдельный плагин для этого, но перестал работать с новыми версиями инкапсулы.
Пожалуй, вы правы. Но надеюсь, такой вариант тоже кому то пригодится.
Если вдруг натолкнетесь на работающий с текущими версиями инкапсулы обход силами голого питона, буду очень признателен, если отпишетесь тут!
Зачем использовать selenium когда существует puppeteer (https://github.com/puppeteer/puppeteer/blob/v5.5.0/docs/api.md)?
Я не сталкивался с этой библиотекой. А Selenium мне уже известен.
Это библиотека nodejs которая напрямую работает с браузером. Без всяких webdriver и selenium. Так же есть в ней возможность обходить fingerprint.
Спасибо поизучаю. Правда в javascript компетенций очень мало.
Доводилось вам сравнивать его с phantomjs? Если да, что можете сказать?
phantomjs — проект закрыт. Вначале puppeteer хотели сделать на основе phantomjs, но разработчики пришли к выводу, что это будет не очень. Мне приходилось работать и с phantomjs и с puppeteer. Могу сказать, что phantomjs — это фактически chromium, а puppeteer — можно применять к уже реальному браузеру — chrome. Если phantomjs использовать для подключения к webdriver, то все равно головная боль… (https://github.com/detro/ghostdriver) selenium => phantomjs. Puppeteer в этом случае выглядит более привлекательно: puppeteer(NodeJs) => browser chrome. Как говорится почувствуйте разницу. И кстати puppeteer и chromedriver напрямую соединяется к chrome remote debugger port. Более того, сейчас есть возможность (покрайней мере эксперементально) использовать аналог puppeteer для других браузеров (https://github.com/puppeteer/puppeteer/blob/v5.5.0/docs/api.md#puppeteerlaunchoptions): puppeteer.launch([options])
options
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.