你是想知道你的网页(广告)是否有效显示是吧?
首先明确的说,你是没有办法区分是否预下载,浏览器读取url的时候并没有特别的标志。
通常对于放广告的程序,检查广告是否有效,并不是通过检测url来检测是否有效的。分几个方面说吧:
1.先说一下你举例子的百度和抖音。百度是面向全网络投放的资源,不但是百度网站本身,还在其他很多不同的网站(例如我们)都会投放。而且百度的流量很大是基于web页面的,所以百度的显示端一般是各大浏览器,那么就会像我沙发时说的,不存在预读取的情况,因为各大浏览器是通用的、标准的,只能根据网页代码来读取显示网页。而对于抖音,它是一个APP,也就是说,它什么时候读取网络资源,读取什么资源,什么时候显示,都是抖音本身可以定制的,它不是标准的浏览器。所以会出现你说的情况,它可以预先读取资源,然后再考虑是否显示。
2.还有别的方式也可能使得你的资源读取了,但没有显示。例如浏览器的拦截广告插件,有的插件它是在浏览器读取网页的时候,分析该网页,然后对于它认为是AD的内容,修改它的属性,让他不显示。但对于浏览器来说,它虽然不显示,但仍然是会下载的。也会产生你说的,读取了资源,但不显示。也可能修改AD内容的位置,例如让显示内容的DIV移动到一个不可能出现的正常浏览器显示窗口的地方(x=1000000,y=1000000),这样,用户也会看不见广告内容。
3.更恶劣的是一些专门刷广告的软件,软件本身就是一个定制的浏览器,它会读取广告,并且模拟IP、模拟正常显示,模拟用户点击等等,用户刷广告,它们不但不显示,并且会大量的刷无效的广告。
所以,如果你想知道你那些广告资源是有效到达用户的,通常是用一个分离的JS或FLASH对广告进行检测,有点像网站统计系统的原理。例如,检测广告的位置是否异常,广告上面是否有正常的浏览过程,例如在广告的前面放置一些特殊变量,检测这个变量是否有效,等等等等。。。并且手段不是唯一的,要经常变化,以免被破解,被规避。
说白了,其实这是一种检测与被检测的技术对抗,不能简单地用检测HTTP头就能解决,也不能用简单的方法解决这个问题。
时间、时间、时间