如何使LWP::UserAgent看起来已安装Flash?

如何使LWP::UserAgent看起来已安装Flash?,flash,perl,lwp-useragent,Flash,Perl,Lwp Useragent,我有一个Perl脚本,用于下载网页,然后使用正则表达式进行处理。问题是,网页的常规HTML部分没有返回到LWP::UserAgent,因为该站点识别出浏览器没有安装Flash,而是返回HTML,提示我们下载Flash,而不是需要解析的相应HTML 如何使LWP::UserAgent看起来已将flash安装到我们请求页面的web服务器上?我正在使用以下代码初始化LWP::UserAgent: use LWP::UserAgent; my $ua = LWP::UserAgent->new(c

我有一个Perl脚本,用于下载网页,然后使用正则表达式进行处理。问题是,网页的常规HTML部分没有返回到LWP::UserAgent,因为该站点识别出浏览器没有安装Flash,而是返回HTML,提示我们下载Flash,而不是需要解析的相应HTML

如何使LWP::UserAgent看起来已将flash安装到我们请求页面的web服务器上?我正在使用以下代码初始化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);

提前感谢您的帮助

该网站可能正在测试flash是否使用javascript安装。通常,此测试仅限于客户端,因此不应影响页面。但他们可能发出了一个异步请求,告诉服务器安装了flash。要对此进行测试,您需要下载TamperData,从工具菜单加载TamperData窗口并刷新页面。该窗口将显示所有被激发的请求,您可以检查它们。如果有类似的请求,则可以使用LWP重播此请求


另一个选择是反编译flash应用程序。这是非常容易做到的,通常你会得到完整的源代码,包括代码注释,下面是一个例子

我建议您使用这一功能-非常好而且功能强大的FF插件。我同意Michael的观点,服务器只能从发送给他的头文件中,或者从运行在客户机上并可以与服务器对话的脚本(JavaScript、Flex等)中了解有关客户机的此类信息。对于JavaScript,您可以尝试在FF临时中禁用它并尝试重新加载页面:如果服务器的回答与LWP相同,则您知道答案。

两个@Michael和@dma_k都是正确的。服务器未检查LWP::UserAgent是否已安装闪存。相反,由于某种原因,当我们试图调试脚本时,返回的内容没有被正确转储。不幸的是,我们没有找到解决这个问题的方法,但经过一些尝试和错误之后,我们找到了如何从页面中提取适当的字段。很抱歉,这个问题没有正确答案。

FireBug在这里也不错。重要的是捕获客户端和服务器之间的对话,以便您可以复制相关的位。是的,似乎是这样:是的,firebug很好,但它提供的流量信息比篡改数据少。“下载一个网页,然后使用正则表达式进行处理”。哦,伙计。看看这页:我在哪里回答这个问题。简而言之,如果检测是在头Accept/User代理中完成的,那么这很简单。如果使用flash或javascript进行检测,则可能会更加困难。无论如何,您都需要知道向服务器发送的是什么,以及返回的是什么。