如何检查 swf 闪存文件是不是实现 clickTAG?

Posted

技术标签:

【中文标题】如何检查 swf 闪存文件是不是实现 clickTAG?【英文标题】:How do I check if an swf flash file implements clickTAG?如何检查 swf 闪存文件是否实现 clickTAG? 【发布时间】:2011-08-09 09:19:33 【问题描述】:

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

【问题讨论】:

【参考方案1】:

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

$ flasm -d file.swf > out.txt

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

需要执行权限。

【讨论】:

好主意,但我已经用 CS5 生成的 clickTAG 广告进行了检查,它不包含任何 clickTAG 痕迹。 :(【参考方案2】:

这是一个复杂的问题。

建议的解决方案仅解决点击标签不正确的情况(例如 clickTAG 与 clickTag)。以下是其他潜在问题: - 没有可点击层,没有点击标签代码 - 带有硬编码 URL 的可点击层 - 可点击层仅覆盖横幅的一小部分 - 以上都在 AS3 中(flasm 只支持 AS2)

【讨论】:

【参考方案3】:

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

【讨论】:

【参考方案4】:

如果我正确理解了您需要做什么,应该可以通过加载广告来构建半自动测试 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);
        
    

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

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

【讨论】:

【参考方案5】:

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

【讨论】:

以上是关于如何检查 swf 闪存文件是不是实现 clickTAG?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 .swf 文件转换为 HTML 文件? [关闭]

如何检查是不是使用带有 swfobject 的 JavaScript 加载了 swf?

检查 swf 文件是不是正在我们自己的服务器上播放

Electron 无法获取资源 (.swf)

分析现有的闪存文件

插入有效闪存