Есть ли способ загрузки и манипулирования внешним URL? - PullRequest
2 голосов
/ 28 февраля 2012

Я хочу загрузить внешний контент (из другого домена) и смоделировать навигацию, выполняя такие вещи, как программные клики и заполнение форм, возможно, с использованием JQuery.

Объяснение немного лучше: мне нужно «автоматически» перемещаться по 3 страницам, первая из них - это область входа в систему, где я должен заполнить поля для входа / передачи и отправить. В последнем случае я должен заполнить некоторые поля ввода, повторить отправку и получить все html-данные из отчета.

Я пытался использовать IFRAME и содержимое Jquery (), потом понял, что не могу этого сделать из-за очевидных проблем безопасности XSS. (http://jsfiddle.net/TbMyx/4/).

Прежде чем попробовать этот способ (на стороне клиента, js, Iframe и т. Д.), Я также попытался использовать Java. Отправка заявок POST / GET в сервлет, и я тоже не добился успеха.

Есть мысли по этому поводу? По крайней мере, это возможно задача? Я немного негативен по этому поводу, я не думаю, что это действительно возможно, исходя из моих текущих знаний, мне просто нужно подтверждение

Ответы [ 5 ]

2 голосов
/ 29 февраля 2012

Да, это возможно. Он называется Web Scraping и встречается довольно часто.

Как вы узнали, это невозможно сделать на стороне клиента с помощью JavaScript из-за ограничений безопасности.

На стороне сервера у вас есть два варианта. a) Загрузите реальный браузер и перемещайтесь по веб-сайту так же, как это сделал бы пользователь, или b) Используйте безголовый браузер, который в основном представляет собой библиотеку, имитирующую настоящий браузер.

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

Для Java HTMLUnit - отличная библиотека. Держите под рукой запрос / ответ fiddler, поскольку возможно, что браузер отправляет файлы cookie или заголовки, отличные от HtmlUnit. Как правило, если вы сопоставляете все заголовки, которые отправляет браузер, веб-сайт ответит правильно.

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

Для этой цели вы можете использовать Selenium / WebDriver. Имейте в виду, что запуск браузера в серверной среде на самом деле требует больших ресурсов и занимает больше времени.

1 голос
/ 28 февраля 2012

Нет, это невозможно с помощью JavaScript, если вы не снизите настройки безопасности до уровня ПОЖАЛУЙСТА, ПОЛУЧИТЕ МОЙ БАНКОВСКИЙ СЧЕТ.

Вы можете вести себя как браузер на сервере, если они не вызывают вас за то, что вы бот. Следовательно, почему ваша публикация в JAVA, вероятно, не удалась, или вы не отправляете правильную информацию о куки / сеансе с сообщениями. Получите Fiddler, и следите за трафиком, и попытайтесь воссоздать его.

0 голосов
/ 28 февраля 2012

Да, вы не можете.

Навигация возможна путем изменения URL внешнего контента (открытые окна, рамки).

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

Но вы никогда не получите доступ к содержимому этой другой страницы, возможно, это будут "html данные изсообщить "или элементам", чтобы "программно нажать".

0 голосов
/ 28 февраля 2012

Я знаю, что именно этого вы и хотите, но попробуйте селен.

0 голосов
/ 28 февраля 2012

Я использовал Selenium для взаимодействия с веб-формами в Java.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...