Короткий ответ на ваш вопрос - «Нет»; cURL не поддерживает JavaScript (и, вероятно, никогда не будет, поскольку это не то, для чего он создан), а также не поддерживает библиотеки для PHP. Ниже приведен список опций:
Обратный инжиниринг JavaScript
Если вам нужно сделать это только один раз, то переключение инструментов, вероятно, не лучшее решение (с совместимостью с кодовой базой и всем этим). В этом случае вы можете попробовать вручную эмулировать эффекты JavaScript в вашем коде; если он говорит window.location="example.com"
, вы выбираете example.com; если он заполняет и отправляет форму, вы отправляете запрос POST. Тем не менее, вы, вероятно, устали от этого довольно быстро - я знаю, что сделал.
В этом конкретном случае, если вы пытаетесь захватить страницу, на которую вы перенаправлены, вы можете попытаться использовать strpos
и substr
для разделения мета-перенаправления, вставляемого JavaScript , чтобы добраться до URL, и просто следуйте этому.
Альтернативы PHP / cURL
Для PHP в настоящее время нет никаких инструментов (насколько я знаю), которые позволили бы вам выполнять JavaScipt (или Flash), с чем вы в конечном итоге столкнетесь при очистке; и я долго искал решение. (Если вы найдете что-нибудь, пожалуйста, дайте мне знать.) Итак, когда вы в конце концов устанете «эмулировать» нужные сценарии на странице.
Обратите внимание, что в основном вы будете использовать инструменты для веб-приложений тестирование ; они просто пригодны для чистки.
Watir : лучший инструмент для полного выполнения JavaScript и Flash, который я нашел на данный момент, - Watir , который позволяет вам управлять экземпляром любого крупного браузера от Ruby; Я знаю, что он был перенесен на Java и .Net, но я никогда не использовал ни одну из этих реализаций. Обратите внимание, что Watir также имеет очень доступную реализацию для XPath:
Механизация : веб-библиотека, имеющая реализации на самых популярных языках (те, о которых я знаю, по крайней мере, на Ruby, Python и (я полагаю, оригинал) на Perl.
Селен : как упоминает Хисока, Селен также является уважаемым инструментом.
HtmlUnit : еще один хороший инструмент (который иногда ломается в JavaScript, и, насколько я знаю, не реализует выполнение Flash) - HtmlUnit , как библиотека Java. Я использовал это некоторое время, и это произвело на меня впечатление «громоздкости», и этот инструмент является инструментом тестирования веб-приложений. (Что плохо, так как вам, вероятно, не нужны отчеты об ошибках HTML и CSS.)
(Обратите внимание, что это ни в коем случае не полный список.)
Примеры кода
Пример использования Watir:
browser = Watir::Browser.new
browser.goto("example.com")
browser.h1(:xpath, "//h1[@id='header']").click