勾起我搞这个的兴趣是因为有个卖软件的,老是向我的百度统计后台推送引流软件广告。搜索后发现早就有人做过这方面的研究,然而随着统计代码版本升级,部分功能暂时还未解决。今天这篇PHP代码实现提交虚假数据给百度统计就教大家,怎么向目标网站的百度统计后台推送来源地址,关键词来源我还没解决,有知道的大佬劳烦告诉我一声,不甚感激。
首先我们先来分析下百度统计的作用原理,这个过程你可以读百度统计js代码,也可以使用抓包的方式。我看不懂百度统计的代码,一大片的abcdefg…..看得脑袋痛,所以我使用浏览器抓包的方式来获取百度统计js的工作过程。
打开一个带有百度统计的网站,我这里就直接打开我的博客代码狗首页,然后打开浏览器的F12中network标签,准备抓包。
随便打开一个链接,注意,我的网站链接都会新窗口打开,所以先用F12的改下elements标签修改下超链接跳转方式,让新窗口打开变成当前窗口打开,然后通过浏览器抓到如下的请求过程。
可以清楚得看到,一共请求了百度3次,点击第一次的请求地址我们可以看到真正的百度统计代码。如果你觉得你的js功底不错,可以尝试阅读下。
第二次与第三次是向一张gif发起的请求,搜索后网友告诉我是为了防止出现跨域请求,所以伪装成一张图片。点开我们可以看到如下的请求参数。
第二次请求参数:
- cc=1
- ck=1
- cl=24-bit
- ds=1600×900
- vl=761
- ep=77772,2590
- et=3
- fl=27.9
- ja=0
- ln=zh-cn
- lo=0
- lt=1560213157
- rnd=1965430449
- si=338f36c03fc36a54e79fbd2ebdae9589
- su=https://www.daimadog.com/wp-admin/post-new.php
- v=1.2.51
- lv=3
- sn=58284
- u=https://www.daimadog.com/
第三次请求参数:
- cc=1
- ck=1
- cl=24-bit
- ds=1600×900
- vl=276
- et=0&fl=27.9
- ja=0
- ln=zh-cn
- lo=0
- lt=1560213157
- rnd=281282742
- si=338f36c03fc36a54e79fbd2ebdae9589
- su=https://www.daimadog.com/
- v=1.2.51
- lv=3
- sn=58362
- ct=!!
- tt=WordPress手机验证码注册插件源码分享-代码狗
通过两次参数对比,我们可以发现有部分参数不一样,但大部分都是一样的。
这些参数对应的含义大概如下:
- cc 不知
- ck 是否支持cookie 1:0
- cl 颜色深度 如 24-bit
- ds 屏幕尺寸,如 1600×900
- vl 不知
- ep 初始值为’0′,时间变量,反映页面停留时间,格式大概是:现在时间-载入时间+“,”+另一个很小的时间值
- et 初始值为’0′,如果ep时间变量不是0的话,它会变成其他
- fl flash版本
- ja java支持 1:0
- ln 语言 zh-cn
- lo 不知
- lt 时间戳
- rnd 随机数(1开头有10位 其它开头只有9位)
- si 你的百度统计id
- su 来源地址
- v 百度统计js版本号
- lv 不知
- sn 5位随机数
- u 当前页地址
- ct 不知,默认!!
- tt 当前页标题
当我们首次进入网站被统计时,发现百度统计只提交了2次请求(如下),因此,我们只需模拟这两次请求就能在百度统计后台看到了。
PHP源码:
<?php
visbd();
function visbd(){
$bdid='338f36c03fc36a54e79fbd2ebdae9589';
$bdjs = 'https://hm.baidu.com/hm.js?';
$bdgif = 'https://hm.baidu.com/hm.gif?';
$params=[
'cc'=>1,
'ck'=>1,
'cl'=>'24-bit',
'ds'=>'1600x900',
'vl'=>'1760',
//'ep'=>'1551962,70574',
//'et'=>3,
'fl'=>27.9,
'ja'=>0,
'ln'=>'zh-cn',
'lo'=>0,
'lt'=>time(),
//'rnd'=>rand(1000000000,7000000000),
'si'=>$bdid,
'su'=>'https://www.23456789.com',
'v'=>'1.2.51',
'lv'=>3,
'sw'=>'代码',
//'sn'=rand(10000,99999),
'u'=>'https://www.daimadog.com/'
];
$url1=$bdjs.$bdid;
echo $url1.'</br>';
curl_get($url1);
$params1=$params;
$params1['ep']=rand(7000000,9999999).','.rand(10000,400000);
$params1['et']='3';
$params1['rnd']=rand(1000000000,7000000000);
$params1['sn']=rand(10000,99999);
ksort($params1);
$str=urldecode( http_build_query($params1));
$url2=$bdgif.$str;
echo $url2.'</br>';
curl_get($url2);
$params2=$params;
$params2['et']='0';
$params2['ct']='!!';
$params2['tt']='WordPress优化';
ksort($params2);
$str1=urldecode( http_build_query($params2));
$url3=$bdgif.$str1;
echo $url3.'</br>';
curl_get($url3);
}
function curl_get($url){
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HEADER, 1);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
$data = curl_exec($curl);
curl_close($curl);
return $data;
}
?>百度统计后台效果:
我模拟了谷歌、2345、23456789这三个地址的来源,在后台也看到了这三条统计,说明我们的代码是OK的,搜索词这个东西我研究了一阵没找到怎么来的,有知道的大佬告诉我一声!








评论 (5)