如何检查swf flash文件是否实现了clickTAG?

时间:2011-04-20 10:28:12

标签: php actionscript flash clicktag

我们一直在开发联盟系统,并希望以某种方式检测已编译的SWF广告是否实施了clickTAG。有没有办法自动化这个过程?

5 个答案:

答案 0 :(得分:0)

当我调试flash横幅时,我使用flasm(http://www.nowrap.de/flasm.html windows + linux)来反编译swf文件。您既可以输出到控制台(-d),也可以将其转储到文件中:

$ flasm -d file.swf> out.txt

然后在文件/输出中搜索clickTag / clickTAG。

  • 需要exec权限。

答案 1 :(得分:0)

这是一个复杂的问题。

建议的解决方案仅针对不正确的点击标签(例如clickTAG vs clickTag)。以下是其他潜在问题: - 没有可点击的图层,没有点击代码 - 具有硬编码URL的可点击图层 - 可点击的图层仅覆盖横幅的一小部分 - AS3中的所有上述内容(flasm仅支持AS2)

答案 2 :(得分:0)

http://adopstools.net允许您提交swf并检查点击标签以及其他内容

答案 3 :(得分:0)

如果我已正确理解您需要做什么,应该可以通过加载广告来构建半自动测试swf,然后模拟其显示树中所有内容的点击。

您可以使用URLRequest的data属性将参数传递给加载的swf,如下所示:

var loader:Loader = new Loader();
var req:URLRequest = new URLRequest("ad.swf");
var clickTagURL:String = "http://www.example.com";
req.data = new URLVariables("clickTAG=" + clickTagURL + "&clickTag=" + clickTagURL + "&clicktag=" + clickTagURL);
loader.load(req);

(虽然你需要在浏览器中运行它或者独立,因为Flash IDE会抱怨查询字符串参数。)

然后你可以递归地通过触发点击的显示列表:

testClicks(loader.content as DisplayObjectContainer);

function testClicks(target:DisplayObjectContainer):void {
    var numC:uint = target.numChildren;
    for (var i:uint = 0; i < numC; i++) {

        target.getChildAt(i).dispatchEvent(new MouseEvent(MouseEvent.CLICK));

        if (target.getChildAt(i) is DisplayObjectContainer) {
            testClicks(target.getChildAt(i) as DisplayObjectContainer);
        }
    }
}

如果您将测试广告设置为受信任的文件夹,或使用调试播放器,您将能够看到是否有任何点击导致广告打开网址。

如果开发人员使用了MOUSE_DOWNMOUSE_UP,也可能会触发{{1}}和{{1}},显然这不会像jdangu提到的那样显示非常小的点击区域等问题,但希望它有用基本测试。

答案 4 :(得分:0)

您可以使用像www.adbannerking.com这样的点击标签检查器。它会显示SWF文件中的点击标签。该软件甚至允许您相应地更改点击标签,而无需源文件(.fla)。同时,您可以快速同时检查/更改x个SWF文件。