【小TIPS】基于guzzlehttp库实现广告监测地址检查

在广告投放系统中,任何一个投放的广告,都是要有监测地址的,它存在的目的是为了上报用户行为信息(imp、click),一般地,一个监测地址里,会包含多家监测信息,原因在于多家监测是为了避免一家监测机构无法上报导致数据无法成功统计到,二是为了数据的准确性,一家监测地址无法证明上报的准确性,两家或多家则可以进行相互印证,保证上报数据的正确、合理。那么问题来了,怎么统计呢?

一、统计方案

给定一个广告监测地址,如果判断有几方监测呢,方法有以下几种:
第一种:监测地址里包含多少个http/https信息

substr_count($url,  'http')

第二种:模拟请求获取跳转次数
借助guzzlehttp库来实现,该库是一个强大的请求封装库,laravel项目就是使用该库,支持同步、异步,强大,稳定
这里你需要初始化composer.json composer.lock文件,并引入guzzlehttp/guzzle,最后composer install

{
    "require": {
        "guzzlehttp/guzzle": "^7.0"
    }
}
include "vendor/autoload.php";

use Psr\Http\Message\RequestInterface;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\UriInterface;

$client = new \GuzzleHttp\Client(['timeout' => 5]);

$url='http://sohu.com';
$onRedirect = function(
    RequestInterface $request,
    ResponseInterface $response,
    UriInterface $uri
) {
    echo 'Redirecting! ' . $request->getUri() . ' to ' . $uri . "\n";
};

$conf = [
    'allow_redirects' => [
        'max'             => 10,        // allow at most 10 redirects.
        'strict'          => true,      // use "strict" RFC compliant redirects.
        'referer'         => true,      // add a Referer header
        'on_redirect'     => $onRedirect,
        'track_redirects' => true 
    ]
];

$start = microtime(true);
$response = $client->request('GET', $url, $conf);
$end = microtime(true);

$status = $response->getStatusCode();

$rc = $response->getHeaderLine('X-Guzzle-Redirect-Status-History');
$hops = $rc ? $rc.', '.$status : $status;


$format = 'request uri: '.$url. "\n";
$format .= 'hops: ['. $hops ."]\n";
$format .= 'request_time: '. round($end - $start, 2)."s\n";

echo $format;

二、测试用例

这里可以跟踪任何一个url的请求路径
1 https://www.aliyun.com

equest uri: https://www.aliyun.com
hops: [200]
request_time: 0.7s

2 http://baidu.com

request uri: http://baidu.com
hops: [200]
request_time: 0.02s

3 sohu.com

Redirecting! sohu.com to https://www.sohu.com/
request uri: sohu.com
hops: [307, 200]
request_time: 0.17s

4 https://xxxxx.cn/i/a135294,b3771700,c2743,i0,m202,8a2,8b3,0a__OS__,z__IDFA__,0c__IMEI__,n__MAC__,0d__AndroidID__,o__OpenUDID__,f__IP__,h,uhttps%3a%2f%2fg.cn.miaozhen.com%2fx%2fk%3d2142426%26p%3d7TlA1%26dx%3d__IPDX__%26rt%3d2%26ns%3d__IP__%26ni%3d__IESID__%26v%3d__LOC__%26xa%3d__ADPLATFORM__%26tr%3d__REQUESTID__%26vg%3d__AUTOPLAY__%26nh%3d__AUTOREFRESH__%26mo%3d__OS__%26m0%3d__OPENUDID__%26m0a%3d__DUID__%26m1%3d__ANDROIDID1__%26m1a%3d__ANDROIDID__%26m2%3d__IMEI__%26m4%3d__AAID__%26m5%3d__IDFA__%26m6%3d__MAC1__%26m6a%3d__MAC__%26m11%3d__OAID__%26o%3dhttps%253a%252f%252fmim-x.jd.com%252fdsp%252fnp%253flog%253dQXQGYENSUm5NqYYci3jx_9dhkTTrjsLGFBDFVblwrfr7OOgZ6UVwn6lU2hUxNEq9%2526v%253d708%2526mobiletype%253d__MOBILETYPE__%2526adt%253d3%2526didmd5%253d__IMEI__%2526idfamd5%253d__IDFAMD5__%2526idfa%253d__IDFA__

Redirecting! https://xxxx.cn/i/a135294,b3771700,c2743,i0,m202,8a2,8b3,0a__OS__,z__IDFA__,0c__IMEI__,n__MAC__,0d__AndroidID__,o__OpenUDID__,f__IP__,h,uhttps%3a%2f%2fg.cn.miaozhen.com%2fx%2fk%3d2142426%26p%3d7TlA1%26dx%3d__IPDX__%26rt%3d2%26ns%3d__IP__%26ni%3d__IESID__%26v%3d__LOC__%26xa%3d__ADPLATFORM__%26tr%3d__REQUESTID__%26vg%3d__AUTOPLAY__%26nh%3d__AUTOREFRESH__%26mo%3d__OS__%26m0%3d__OPENUDID__%26m0a%3d__DUID__%26m1%3d__ANDROIDID1__%26m1a%3d__ANDROIDID__%26m2%3d__IMEI__%26m4%3d__AAID__%26m5%3d__IDFA__%26m6%3d__MAC1__%26m6a%3d__MAC__%26m11%3d__OAID__%26o%3dhttps%253a%252f%252fmim-x.jd.com%252fdsp%252fnp%253flog%253dQXQGYENSUm5NqYYci3jx_9dhkTTrjsLGFBDFVblwrfr7OOgZ6UVwn6lU2hUxNEq9%2526v%253d708%2526mobiletype%253d__MOBILETYPE__%2526adt%253d3%2526didmd5%253d__IMEI__%2526idfamd5%253d__IDFAMD5__%2526idfa%253d__IDFA__ to https://xxxxx/x/k=2142426&p=7TlA1&dx=__IPDX__&rt=2&ns=__IP__&ni=__IESID__&v=__LOC__&xa=__ADPLATFORM__&tr=__REQUESTID__&vg=__AUTOPLAY__&nh=__AUTOREFRESH__&mo=__OS__&m0=__OPENUDID__&m0a=__DUID__&m1=__ANDROIDID1__&m1a=__ANDROIDID__&m2=__IMEI__&m4=__AAID__&m5=__IDFA__&m6=__MAC1__&m6a=__MAC__&m11=__OAID__&o=https%3a%2f%2fmim-x.jd.com%2fdsp%2fnp%3flog%3dQXQGYENSUm5NqYYci3jx_9dhkTTrjsLGFBDFVblwrfr7OOgZ6UVwn6lU2hUxNEq9%26v%3d708%26mobiletype%3d__MOBILETYPE__%26adt%3d3%26didmd5%3d__IMEI__%26idfamd5%3d__IDFAMD5__%26idfa%3d__IDFA__
Redirecting! https:/xxxx.com/x/k=2142426&p=7TlA1&dx=__IPDX__&rt=2&ns=__IP__&ni=__IESID__&v=__LOC__&xa=__ADPLATFORM__&tr=__REQUESTID__&vg=__AUTOPLAY__&nh=__AUTOREFRESH__&mo=__OS__&m0=__OPENUDID__&m0a=__DUID__&m1=__ANDROIDID1__&m1a=__ANDROIDID__&m2=__IMEI__&m4=__AAID__&m5=__IDFA__&m6=__MAC1__&m6a=__MAC__&m11=__OAID__&o=https%3a%2f%2fmim-x.jd.com%2fdsp%2fnp%3flog%3dQXQGYENSUm5NqYYci3jx_9dhkTTrjsLGFBDFVblwrfr7OOgZ6UVwn6lU2hUxNEq9%26v%3d708%26mobiletype%3d__MOBILETYPE__%26adt%3d3%26didmd5%3d__IMEI__%26idfamd5%3d__IDFAMD5__%26idfa%3d__IDFA__ to https://mim-x.jd.com/dsp/np?log=QXQGYENSUm5NqYYci3jx_9dhkTTrjsLGFBDFVblwrfr7OOgZ6UVwn6lU2hUxNEq9&v=708&mobiletype=__MOBILETYPE__&adt=3&didmd5=__IMEI__&idfamd5=__IDFAMD5__&idfa=__IDFA__
request uri: https://abc.cn/i/a135294,b3771700,c2743,i0,m202,8a2,8b3,0a__OS__,z__IDFA__,0c__IMEI__,n__MAC__,0d__AndroidID__,o__OpenUDID__,f__IP__,h,uhttps%3a%2f%2fg.cn.miaozhen.com%2fx%2fk%3d2142426%26p%3d7TlA1%26dx%3d__IPDX__%26rt%3d2%26ns%3d__IP__%26ni%3d__IESID__%26v%3d__LOC__%26xa%3d__ADPLATFORM__%26tr%3d__REQUESTID__%26vg%3d__AUTOPLAY__%26nh%3d__AUTOREFRESH__%26mo%3d__OS__%26m0%3d__OPENUDID__%26m0a%3d__DUID__%26m1%3d__ANDROIDID1__%26m1a%3d__ANDROIDID__%26m2%3d__IMEI__%26m4%3d__AAID__%26m5%3d__IDFA__%26m6%3d__MAC1__%26m6a%3d__MAC__%26m11%3d__OAID__%26o%3dhttps%253a%252f%252fmim-x.jd.com%252fdsp%252fnp%253flog%253dQXQGYENSUm5NqYYci3jx_9dhkTTrjsLGFBDFVblwrfr7OOgZ6UVwn6lU2hUxNEq9%2526v%253d708%2526mobiletype%253d__MOBILETYPE__%2526adt%253d3%2526didmd5%253d__IMEI__%2526idfamd5%253d__IDFAMD5__%2526idfa%253d__IDFA__
hops: [302, 302, 200]
request_time: 0.31s

记录一下!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值