Това наистина зависи от мащаба на вашия проект. Ако е просто случаен, не напълно автоматизиран, силно бих препоръчал Firefox Addon.
Аз съм точно в средата на подобен проект. Той трябва да анализира DOM на страница, генерирана с помощта на Javascript. Написването на браузър от страна на сървъра беше твърде трудно, така че се обърнахме към някои други технологии: Adobe AIR, Firefox Addons, потребителски скриптове и т.н.
Fx addon е страхотен, ако нямате нужда от автоматизация. Скрипт може да анализира страницата, да ви покаже резултатите, да ви помоли да коригирате частите, за които не е сигурно, и накрая да публикува данните в някакъв бекенд. Имате достъп до целия DOM, така че не е необходимо да пишете JS/CSS/HTML/какъвто и да е анализатор (това би било адска работа!)
Друг начин е Adobe AIR. Тук имате по-голям контрол върху приложението — можете да го стартирате във фонов режим, като правите целия парсинг и анализ без ваше участие. Недостатъкът е - нямате достъп до всички DOM на страниците. Единственият начин да преминете през това е да настроите прост прокси, който извлича целеви URL адрес, добавя малко Javascript (за създаване на надежден-ненадежден пясъчен мост)... Това е мръсен хак, но работи.
Редактиране: В Adobe AIR има два начина за достъп до DOM на чужд уебсайт:
- Заредете го чрез Ajax, създайте обект HTMLLoader и подайте отговора в него (
loadString
метод IIRC)
- Създайте iframe и заредете сайта в ненадеждна пясъчна среда.
Не помня защо, но първият метод се провали за мен, така че трябваше да използвам другия (мисля, че имаше някои причини за сигурност, които не можах да заобиколя). И трябваше да създам пясъчна кутия за достъп до DOM на сайта. Ето малко за занимаване с пясъчни мостове. Идеята е да се създаде прокси, което добавя прост JS, който създава childSandboxBridge
и излага някои методи на родителя (в този случай: приложението AIR). Съдържанието на скрипта е нещо като:
window.childSandboxBridge = {
// ... some methods returning data
}
(бъдете внимателни — има ограничения за това, което може да бъде предадено през пясъчната кутия — със сигурност няма сложни обекти! използвайте само примитивните типове)
И така, проксито основно подправя всички заявки, които връщат HTML или XHTML. Всички останали бяха преминати непроменени. Направих това с помощта на Apache + PHP, но със сигурност може да се направи с истински прокси с някои плъгини/персонализирани модули. По този начин имах достъп до DOM на всеки сайт.
край на редакцията.
Третият начин, за който знам, най-трудният начин — настройте среда, подобна на тази в browsershots. Тогава използвате firefox с автоматизация. Ако имате Mac OS X на сървър, можете да играете с ActionScript, за да извърши автоматизацията вместо вас.
И така, да обобщим:
- PHP/сървърен скрипт — трябва да внедрите свой собствен браузър, JS двигател, CSS анализатор и т.н. и т.н. Напълно под контрол и вместо това автоматизирани.
- Firefox Addon — има достъп до DOM и всички други неща. Изисква потребител да работи с него (или поне отворена firefox сесия с някакъв вид автоматично презареждане). Приятен интерфейс за потребителя, който да ръководи целия процес.
- Adobe AIR — изисква работещ настолен компютър, по-трудно от създаването на Fx addon, но по-мощен.
- Автоматизиран браузър — по-скоро проблем с програмирането за настолни компютри, отколкото уеб разработката. Може да се настрои на linux терминал без графична среда. Изисква майсторски хакерски умения. :)
person
Maciej Łebkowski
schedule
01.06.2009