Как сделать так, чтобы в LWP :: UserAgent была установлена ​​Flash? - PullRequest
8 голосов
/ 06 февраля 2010

У меня есть Perl-скрипт, который использует LWP :: UserAgent для загрузки веб-страницы, которую он затем обрабатывает с использованием регулярных выражений. Проблема в том, что части веб-страницы, которые являются обычным HTML, не возвращаются в LWP :: UserAgent, поскольку сайт распознает, что в браузере не установлена ​​Flash, и вместо этого возвращает HTML, побуждая нас загрузить Flash вместо соответствующего HTML нам нужно разобрать.

Как я могу сделать так, чтобы в LWP :: UserAgent была установлена ​​флэш-память на веб-сервере, с которого мы запрашиваем страницу? Я использую следующий код для инициализации LWP :: UserAgent:

use LWP::UserAgent;
my $ua = LWP::UserAgent->new(cookie_jar => { },requests_redirectable => [ ]);
$ua->agent('Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:9.9.9.9) Gecko/20079999 Firefox/2.0.0.1');
$ua->timeout(10);

Заранее спасибо за помощь!

Ответы [ 3 ]

1 голос
/ 06 февраля 2010

Я бы порекомендовал вам использовать Firebug для этого - очень хороший и мощный аддон для FF. Я согласен с Майклом, что сервер может узнать такую ​​информацию о клиенте только из отправленных ему заголовков или из скрипта, который запускается на клиенте и может общаться с сервером (JavaScript, Flex, ...). Для случая JavaScript вы можете попытаться отключить его во временном FF и попытаться перезагрузить страницу: если сервер ответит вам так же, как и для LWP, то вы знаете ответ.

0 голосов
/ 12 февраля 2010

Оба @Michael & @dma_k были правильными. Сервер не проверял, была ли установлена ​​флэш-память в LWP :: UserAgent. Вместо этого по какой-то причине возвращенный контент не был правильно выгружен, пока мы пытались отладить скрипт. К сожалению, мы не нашли способ исправить это, но после некоторых проб и ошибок мы выяснили, как вытащить соответствующие поля со страницы. Извините, что нет правильного ответа на этот вопрос.

0 голосов
/ 06 февраля 2010

Сайт, вероятно, проверяет, установлена ​​ли flash с использованием javascript. Часто этот тест только на стороне клиента и не должен влиять на страницу. Но, возможно, они запускают асинхронный запрос, сообщающий серверу, что флэш-память установлена. Чтобы проверить это, вам нужно скачать TamperData, загрузить окно TamperData из меню инструментов и обновить страницу. Окно покажет вам все запросы, которые выполняются, и вы можете проверить их. Если есть какой-либо запрос, такой как http://whatever.com/flash_test.php?flash_installed=true, вы можете воспроизвести этот запрос, используя LWP.

Другой вариант - декомпилировать приложение flash. Это очень легко сделать, и часто вы получаете полный исходный код, включая комментарии к коду, а вот бесплатная пробная версия .

...