如何检查 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_DOWN
和MOUSE_UP
,显然这不会像jdangu 提到的那样揭示点击区域非常小的问题,但希望它作为基本测试有用。
【讨论】:
【参考方案5】:您可以使用像 www.adbannerking.com 这样的点击标签检查器,它会显示 SWF 文件中的点击标签。该软件甚至允许您相应地更改点击标签,而无需源文件 (.fla)。同时可以快速查看/修改x个SWF文件。
【讨论】:
以上是关于如何检查 swf 闪存文件是不是实现 clickTAG?的主要内容,如果未能解决你的问题,请参考以下文章