当前位置:  开发笔记 > 编程语言 > 正文

有没有办法抓取一个带有Actionscript的网页??? 我得到一个SecurityError

如何解决《有没有办法抓取一个带有Actionscript的网页???我得到一个SecurityError》经验,为你挑选了1个好方法。

我试图抓取一个带有actionscript的网页,但不断收到此错误(例如试图抓住github.com):

[SWF] /get-webpage.swf - 解压缩后2,708字节错误:请求者从 http:// localhost:4567/get-webpage.swf请求资源http://github.com 由于缺乏策略而被拒绝文件权限.

*安全沙箱违规* 与http://github.com的连接暂停 - 不允许从http:// localhost:4567/get-webpage.swf

有没有办法在Actionscript中使这个工作?该crossdomain.xml文件如何发挥作用?根据我的理解,一个网站从crossdomain.xml根本上说明了一个swf可以访问他们的东西.那是对的吗?我需要做什么才能完成上述工作?我正在使用的代码基本上是这样的:

var request:URLRequest = new URLRequest("http://github.com")
var loader:URLLoader = new URLLoader();
loader.addEventListener(Event.COMPLETE, complete);
loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, error);
loader.load(request);

function complete(event:Event):void {
  trace(event.target.data);
}

function error(event:SecurityErrorEvent):void {
  trace(event.text);
}

在HTML文件中使用此文件:

var flashvars = {};
var params = {allowscriptaccess: "always"};
var attributes = {id: "my_flash", name: "my_flash"};
swfobject.embedSWF("/get-webpage.swf", "flash_content", "50%", "50%", "10.0.0", "playerProductInstall.swf", flashvars, params, attributes, swfHasLoadedSir);

有可能绕过那个安全错误吗?



1> John Balling..:

简短的答案,没有.

MEDIUM ANSWER,NO.我看到github在这里有一个跨域xml策略. https://github.com/crossdomain.xml

这是Flash尝试从其他域中提取内容时自动加载的文件.

这个xml文件说,只允许github上的flash吸收数据.所以github明确表示他们不希望你使用flash来加载他们的任何内容.



  
    
    

我认为这种闪存行为的原因是人们+公司会相信闪存.我认为这种机制可以防止大规模的DOS攻击(想想一个加载在新闻网站上的Flash Banner,比如github,它可能会造成巨大的负担).

您可以通过电子邮件发送github并将您的域名添加到他们在crossdomain文件中的列表中,但这可能需要一些时间和许多政治.

长期回答,是的.您可以使用PHP或其他方式创建一个HTTP代理来引入网页.PHP或代码必须在加载SWF文件的同一域上运行.例如youdomain.com/folder/proxy.php.你必须基本上要求这个代理在PHP中获取一个网页并将结果返回到flash.整个过程有点痛苦,特别是如果您正在使用必须发送参数或HTTP标头的Web服务.您可以在线安装开源PHP代理文件.

祝好运!回到Megan Fox看变形金刚2.哦耶.

推荐阅读
云聪京初瑞子_617
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有