Поделюсь некоторыми знаниями и техническими деталями, сразу оговорюсь что с некоторого времени я являюсь поклонником открытого ПО и Linux, итак поехали...
Почему CURL не может спарсить многие современные сайты? - потому что он не умеет JavaScript. Сейчас много сервисов, к примеру тот же VK построены на асинхронных запросах без перегрузки странички, контент подгружается в DOM дерево (структура документа после обработки скриптами, если простыми словами) при помощи AJAX и подобных технологий.
Чтобы понять что и как - попробуйте при помощи CURL спарсить последние 200 сообщений со стены любой группы ВКонтакте. Попробуйте получить HTML исходник какого-то сайта к которому подключена защита от DDOS при помощи CloudFlare или другого сервиса, который требует включенного JavaScript.
Примеров еще можно привести много, сейчас любой парсинг без движка JS - это не парсинг.
Простой живой пример: попробуйте получить список свободных прокси без включенного JS (для FireFox можно установить дополнение NoScript) или при помощи CURL, PHP file_get_contents... вот с этой странички
http://www.freeproxylists.com/anon/1463748668.html
Вы получите почти пустой HTML исходник, а теперь включите JS и...о магия!!! на страничке появился список сотни свободных проксей (IP - порт).
Таким образом, если на сайте контент (картинки, текст, ссылки...) подгружаются при помощи JavaScript то простой запрос исходника HTML документа без пост-обработки при помощи JS не вернет вам нужного результата.
Теперь о софте.
1) XHE - он же Xedant Human Emulator, xWeb, умеет эмулировать любые действия в браузере IE, есть многопоточность, возможность писать скрипты автоматизации на PHP (есть готовые классы с функциями под клаву, мышь, картинки, капчи, системные утилиты и т.п.).
Это по сути Windows-приложение обгортка для ослика ИЕ (Internet Explorer) с простым и функциональным API, под который написаны готовые вспомогательные PHP-скрипты-классы.
Как это работает: Приложение-обертка IE открывает на машине порт (например 7010 или другой) и принимает к нему подключения. Все что нужно для управления браузером - подключиться к порту, например телнетом и отправить ему команду в виде строки с параметрами. К примеру для клика мышкой в браузере с координатами 504,937 нужно отправить строчку "Mouse.Click?x=504&y=937"
Согласитесь, не очень удобно. Поэтому для упрощения управления разработчиками этой программы была написана целая пачка скриптов (классы), которые запускаются на локальном интерпретаторе PHP и по своей сути подключаются к порту 7010 и посылают туда команды. Таким образом для того же клика мышкой в браузере с координатами 504,937 нужно вызвать в PHP скрипте метод $mouse->click(100, 200); - так явно проще и понятнее.
Итак что мы имеем: браузер с возможностью полной автоматизации, скрипты можно писать на любом языке, подключаясь по TCP к порту 7010 и отправляя туда команды. Скрипты можно писать используя готовые классы функций и методов на PHP, полистать классы можно на humanemulator.net.
С этой программой я работал достаточно плотно и даже когда-то писал целую систему с веб-мордой на PHP+AJAX+MYSQL, регались аккаунты, почты, постились сообщения в ВК, собирались прокси, ADDURиLки....потом забросил.
Для себя выделил два основных минуса - это цена на лицензию и ее продление, а также отсутствие возможности нормального масштабирования. Программа-эмулятор работает только на Windows и для запуска на одной машине нужна одна лицензия (порядка 300$ по тому времени), более предпочтительно иметь подобный инструмент на Linux, где можно будет запускать своих роботов-трудяг на множестве VPSок, да и производительность будет получше, все таки не нужно подгружать в память разный хлам, который идет в комплекте с Windows.
2) ZennoPoster - очень мощный продукт, авторы сделали гениальный комбайн, который после небольшого обучения сможет оседлать даже домохозяйка (оседлать...но не кататься по полной). По сути это также интернет-браузер с целым комплексом надстроек для автоматизации, парсинга, постинга, ботинга, кликинга, граббинга и т.п. занятий.
Огромный плюс данного софта - то что все собрано в куче и в одном месте, это такой себе центр управления и рекрутинга для виртуальных цифровых работников в сфере интернета, которые не ленятся, не ноют, не требуют повышения зарплаты (хотя случается...апгрейд компа иногда не помешает) и делают то что им прописано (в скриптах).
Продукт хороший но избыточный если нужно сделать какое-то простое задание на автомате, к тому же своей наработкой (скриптом) вы не сможете поделиться с другими если у них нет лицензии Зенки, демо-версия очень урезана.
Для тех кто умеет программировать, скорее всего что ковыряние в интерфейсе покажется не очень приятным занятием, захочется написать простой скрипт на каком-то языке вместо часового клацанья по текстовых поляv и чекбоксам. Хотя...в Зенке предусмотрен API и можно подключить свои скрипты, написанные на удобном языке, работать по подобному принципу взаимодействия как и с XHE.
Для себя выделил такие минусы:
Первый минус - платный продукт (хотя за такие возможности отдать денежку не жалко), полностью закрытый проприетарный код (параноикам и безопасникам такое не подойдет), мало ли что хитрые разработчики могли в нем упрятать, хочется доверять но все же проверять...а проверить не получится (как вариант сидеть на шухере в команде с WireShark и TCPDump).
Второй минус - опять же привязанность к MS Windows, аренад VPS с данной ОС это не дешевое удовольствие и снова у нас будут в пустую тратиться драгоценные ресурсы системы на запуск всякого встроенного в продукт MS мусора, загрузку разных обновлений, которые для моей задачи н#х не нужны.
Здесь же мы опять столкнемся с проблемой масштабирования и гибкости, будем привязаны как лошадь к дереву в ожидании хозяина.
3) Firefox, PhantomJS и Selenium - не зря я привел эту связку как альтернативу выше приведенным проприетарным пациентам. Для использования данных инструментов и библиотек нужно иметь навыки программирования или же просто желание - остальное подтянется в процессе.
Selenium - это система для написания автоматических тестов приложений, но никто нам не мешает применить ее для автоматизации разной рутины в браузере где нужен JavaScript. К Селениуму можно привязать разные браузеры (драйверы), к примеру тот же Firefox или Хром, а можно прикрутить PhantomJS.
PhantomJS - Headless WebKit scriptable with a JavaScript API. Безглавый (не нужен графический интерфейс) движок браузера на основе WebKit с поддержкой JavaScript и со своим API. Используя данную штукенцию в связке с Selenium мы сможем написать скрипт автоматизации какой-то работы в инете, выгрузить такой скрипт на Linux VPS где есть только консоль (без графического рабочего стола) и запустить на выполнение.
На лицо экономия ресурсов, денег.
Все приведенные продукты с открытым исходным кодом и свободными лицензиями, их код можно подправить под себя, поделиться своими наработками или найденными багами с сообществом разработчиков по всему миру, к тому же знания данных технологий и навыки работы с ними могут пригодиться при устройстве на высокооплачиваемую работу.
Если хотите попробовать данные технологии то наиболее простой и дружелюбный язык вам в помощь, это - Python (Питончик). По селениуму есть неплохие статьи на Хабре, также подружитесь с StackOverflow, GitHub - там есть много примеров и решений разных задач.
Какой продукт лучше: XHE, ZennoPoster, Selenium+друзья? - пусть каждый выберет для себя из своих возможностей и перспектив, подумает хочет ли он иметь полный контроль или же пользоваться готовыми наработками за некоторую плату и привязанность. Для каждого из продуктов найдется свой поклонник и противник.
Я не являюсь большим гуру, так что за какие-то неточности или незнания в изложенных выше примерах прошу сильно не ругать, я также как и многие только учусь )
Буду рад если эта мини-статья принесет кому-то пользу, откроет новые возможности и побудит к новым идеям (хорошим и во благо).