Рубрика «phantomjs»

Конференция BLACK HAT USA. Ботнет из миллиона браузеров. Часть 1

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

Конференция BLACK HAT USA. Ботнет из миллиона браузеров. Часть 2 - 1

Вы можете выбрать изображение баннера достаточно большого размера, вставить его сюда и присвоить ему URL, так, чтобы после нажатия на баннер пользователь переходил на нужный сайт. Владельцы этой рекламной сети предоставляют опцию HTML JavaScript, это звучит очень хорошо.
Мы начали с того, что показано в верхней части слайда и должны были пойти через весь процесс утверждения, что было, наверное, самое сложное в нашем исследовании. Это произошло не по тем причинам, о которых вы подумали, а потому, что они не очень хорошо представляют значение JavaScript и особо об этом не заботятся. На самом деле они заботились о том, чтобы объявление выглядело красиво и работало как реклама, так что я не мог продолжать идти нашим невидимым путём и просто разметить где-то на заднем плане наш мистический код JavaScript.

Мы вставили скрипт выполнения кода, который разработал Джереми, вы видите его в текстовом поле в нижнем окне, и он был утверждён рекламщиками без всяких проблем. Однако мы хотели иметь возможность перенастроить его в любой момент, чтобы разнообразить исследования, потому что такие вещи, как URL-адреса, часто меняются. Но если бы мы захотели попробовать что-то новое, нам бы заново пришлось пережить процесс утверждения. Это не занимает много времени, но просто раздражает, потому что иногда они одобряли это, а иногда им что-то в этом не нравилось и нам приходилось вносить изменения.

Конференция BLACK HAT USA. Ботнет из миллиона браузеров. Часть 2 - 2

Например, один раз почтовое приложение раскрыло теги скриптов, весь код JavaScript исчез, и мне пришлось его переместить. Пришлось объяснять им, почему здесь нужно поставить меньше на 1 знак, а там на 1 знак больше, после чего они сообщили, что объявления не отображаются должным образом, в общем, это было весело.Читать полностью »

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

Почему хаб-роутер?

Потому что он регистрирует в себе узлы и перенаправляет запросы из вне на конкретный узел.
Читать полностью »

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

Как появилась идея написать этот проект?

После того, как появилась необходимость в парсинге сайтов в больших количествах я попытался реализовать такую штуку с помощью selenium grid, потом взял selenoid. selenoid подошел, но там было много того, что мне было не нужно, например версии и варианты браузеров, а также, самое главное, это отсутствие auto scaling (но selenoid не для этого). 90% времени кластер простаивает, а потом появляется большая нагрузка, с которой сервер не справляется. Получается большие расходы на железо, которое почти все время не работает, да еще и не справляется. Я подумал, что было бы здорово, если бы по мере поступления нагрузки — количество исполняемых браузеров бы увеличивалось, а как нагрузка пропадает и браузеры удаляются. К счастью такое можно реализовать, например, через AWS EC2.
Читать полностью »

Чтобы непрерывно улучшать большие клиентские интерфейсы, нужна мощная система автотестов. Разработчик Яндекса Дмитрий Андриянов dima117 кое-что про это знает — пару месяцев назад он поделился своим опытом на Я.Субботнике в Нижнем Новгороде.

— Сегодня я расскажу, как мы в Директе пишем модульные тесты на веб-интерфейс. Мы в целом посмотрим, чем тесты на интерфейс отличаются от других тестов. Рассмотрим два подхода к написанию тестов: с помощью Selenium и с помощью Headless-браузеров. И в конце покажу инструмент, который мы написали в Директе для запуска тестов в Headless Chrome.
Читать полностью »

Для обычного пользователя программы, которые мы пишем — это магия. Фронт, бэк — неважно. Человек нажимает на кнопку в браузере, и вдруг случается чудо. Но мы-то знаем, что это не чудо, а результат упорной работы.

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

Это происходит само собой, просто по статистике? Если набрать достаточное количество докладов, всё получится автомагически? Как бы не так. Всё подстроено. Как программу на JS проектируют архитекторы, так и за каждой конференцией стоит команда отличных инженеров, которые проектируют её специальным образом. Они проектируют не только структуру, но и вместе с докладчиками «отлаживают» каждый доклад, строчка за строчкой, раз за разом. Проводят кросс-ревью, оценку, починку багов. Пишутся специальные инструменты и выкладываются на GitHub. И так до тех пор, пока не скомпилируется хорошо работающая, безбажная конференция.

Наверное, каждый иногда хотел пообщаться с разработчиками тех инструментов, которыми мы все пользуемся. К примеру, кто хотел бы сказать пару ласковых создателям React или Node.js? А кто хотел бы узнать от них парочку тайн о внутренней кухне проекта?

Это интервью — с разработчиками конференции HolyJS 2017 Moscow, с её Программным комитетом. Мы будем обсуждать:

  • какие сложности возникают при разработке программы конференции и как их побеждают;
  • кто допущен к сакральному процессу отбора докладов и нужно ли для этого быть богом JavaScript;
  • совместима ли работа в ПК с обычной жизнью;
  • какие доклады стоит послушать и на какие ни в коем случае не стоит приходить хипстерам;
  • кучу рандомных интересных фактов.

«Блендер на 28 докладов, каждый из которых равен десяти статьям» — интервью с Программным комитетом HolyJS 2017 Moscow - 1Читать полностью »

Информация, находящаяся в свободном доступе на веб-сайтах сети Интернет, с одной стороны, кажется общедоступной — если что-то выложено в сеть, то это можно скопировать тем или иным способом. С другой — при попытках автоматизировать сбор и анализ таких данных с какой-нибудь целью (например веб-поиска или статистики), как оказывается, возникает множество проблем в деталях. Поэтому не удивительно, что успешные системы такого рода единичны в глобальном масштабе — Google, Bing, Baidu и Яндекс. В данной статье приведу некоторые примеры с которыми столкнулся лично автор в попытках отладить сбор данных о рынке труда (вакансии, резюме и зарплаты) с публичных веб-сайтов. Это может пригодиться тем, кто вдохновится идеями типа I Don't Need No Stinking API: Web Scraping For Fun and Profit и решит парсить контент с чужих сайтов напрямую вместо того, чтобы договориться с владельцами о доступе к данным по API или другим эффективным способом.Читать полностью »

Представьте: вы работник стартапа, сварганили по-быстрому прототип и постепенно начинаете его развивать. И вот вам уже хочется, чтобы во время очередного спешного релиза не приходилось перепроверять все разделы сайта вручную (руками директора по продукту). Конечно, можно нанять отдельного тестировщика, но на это в вашем LEAN-стартапе бюджета не дают — «лучше давайте купим наконец-то кофе-машину». Знакомо?

И тут кто-то произносит слово «автотесты».

И сразу начинается: это целая история, это очень сложно, это очень дорого, от этого будет больше вреда, чем пользы и вообще это кровавый Enterprise и СЕЛЕНИУМ.

Как настроить простую систему автотестов без Java и Selenium - 1Читать полностью »

Добрый день, дорогие друзья.

Недавно, сидя на диване, я задумался о том, что хочется мне сделать своего паука, который что-то бы смог качать с веб сайтов. Но качать он должен был бы не простой загрузкой, а как настоящий милый добрый браузер (т.е. JavaScript чтобы исполнялся).

В моей голове всплыли такие интересные штуки, как Selenium, PhantomJS, Splash и всякое подобное. Все эти штуки были мне немного втягость. Вот какие причины я выявил:

  • Дело в том, что я хотел бы писать на своем любимом питоне, потому что очень не люблю JavaScript, а это уже означает, что большая часть уже не работала бы (или пришлось их как-то склеивать, что тоже отстой).
  • Читать полностью »

Беглый анализ открытых данных показывает, что ежедневно в среднем 5 человек оставляют заявки на создание калькулятора на биржах фриланса — а еще несколько сотен интересуются вопросом в поиске. Часто запросы стандартны — и, конечно, на рынке сложился целый набор готовых предложений: от плагинов для конкретных CMS до калькуляторов, которые можно приобрести у студий. Рекорд, обнаруженный нами (см. в первом комментарии) — 24 999 рублей за довольно обычное решение.

Да, рынок есть рынок. Но поскольку мы в основном работаем с людьми, чьи сайты сделаны на конструкторах, у них нет 25 тысяч на один виджет, возникло желание написать калькулятор, которым они смогли бы пользоваться самостоятельно — и без изучения HTML, JS, JQuery и CSS.

Делаем более-менее универсальный калькулятор услуг для сайта - 1

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

Читать полностью »

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

Если вам интересно узнать, как генерировать изображения из простых картинок с помощью PhantomJS и небольшой магии, то добро пожаловать под кат!

Читать полностью »