This component of the Ad Lightning end-to-end ad quality solution gives Platforms the ability to utilize the telemetry of ADL’s blocking technology while maintaining complete control over their ad delivery.
With Ad Lightning's ("ADL's") Scanning for Platforms, you supply your rendered markup to ADL, we then process and scan the markup (checking against denylisted items, malicious content and behavior, etc.) and report back all instances of malware we detect along with the details needed to remove the offending creative from your systems.
Highlights
Ad Delivery flow is maintained by the Platform. This eliminates the concern of third party JavaScript interrupting existing auction processes
Utilizes rendered ad markup. The data being fed to our ADL scanning solution is from the monetized ads you delivered to your publishers sites.
Leverages the ADL Blocking solution footprint - we utilize our market leading scanning product to evaluate the ads for malicious behavior as well as checking against our constantly updated blocklist of malicious threats currently in the ecosystem.
Time sensitive process - The entire process is managed through APIs for retrieval, scanning and reporting so that new threats can quickly be addressed.
Detailed information - The information returned to the Platform includes all the important ad details including the ADID and CRID to facilitate the quick removal of the offending creative.
How it Works
Platform develops the client-side script for capturing rendered markup (see Example 1)
Platform pushes captured markup to ADL reporting library (see Example 2) (http://tagan.adlightning.com/[CLIENT_ID]/report.js)
ADL processes and scans the full rendered markup and resulting ad
ADL reports back via our Scanning API or provides data in our UI.
Example 1: Client Side Script for capturing rendered markup:
Example 2: Reporting function for pushing captured markup to ADL:
Capturing ad markup
Ad markup can exist inside of iframes or even nested iframes. These elements do not behave like other elements. We can leverage innerHTML, but we will need to get into the iframe to be able to get this markup. Assuming this is not cross-domain:
The if conditional is to see if we have access to the document itself. If this is a cross-domain iframe, contentDocument will return null and subsequent accesses of its properties will result in an exception.
The issue with the above code is that it does not handle nested iframes. We recommend capturing markup from a single iframe.
Reporting captured markup
Once our reporter javascript is loaded, we will introduce the function reportData to the global namespace. This function is called directly from your code to send ad data to us:
Notice that you have to use the number 4 as the first argument
adDetails
The adDetails is where you have the flexibility to add additional information with the following format:
topDomain:
Despite the name, this is ideally the full URL this ad was served from. Consider using something like window.location.href to pass into here.
siteId
: This is the assigned site id that Ad Lightning assigns to you.
au
: Ad unit id.
adServerDetails
:
advertiserId
: The id of the advertiser
campaignId
: The id of the campaign
creativeId
: The id of the creative
lineItemId
: The id of the line item
uniqueTagId
: The tag id
w
: This is an integer specifying how wide the ad unit is.
h
: This is an integer specifying how tall the ad unit is.
markupObj
This is a simple object that has a single key markup indicating what should be sent to the server:
Example
Putting all of the above together, you’d arrive at something like this: