获取该h.js代码的又。获取该h.js代码的以。

  1. 央一段落js脚本。
  2. 加载了时动身一差呼吁,并传递参数
  3. 剥离页面时,发出同样赖呼吁,并传递参数,与地方对比,发现ep参数有浮动。

收获该h.js代码的而,百度统计会朝而的浏览器写副一个名字吧“HMACCOUNT”的cookie,该cookie的过时吧2038年,所以要您莫清空浏览器cookie,基本就是不用过期。

 

可以窥见,浏览器总共向服务器端发送了4不成呼吁:

cc: 不知道,一般为1
cf:url参数hmsr的值
ci:url参数hmci的值
ck:是否支持cookie 1:0
cl:颜色深浅 如 “32-bit”
cm:url参数hmmd的值
cp:url参数hmpl的值
cw:url参数hmkw的值
ds:屏幕尺寸,如 ’1024×768′
ep:初始值为’0′,时间变量,反映页面停留时间,格式大概是:现在工夫-载入时间+“,”+另一个那个有点之时刻价值
et:初始值为’0′,如果ep时间变量不是0之讲话,它会化任何
fl:flash版本
ja:java支持 1:0
ln:语言 zh-cn
lo: 不知道,一般为0
lt:日期 time.time(),如“1327847756”, 在首涂鸦呼吁没有
nv: 不知道,一般为1或者0
rnd:十号随机数字
sb:如果是360se浏览器该值等于‘17’
se: 和查找引擎相关
si:统计代码id
st:
su:上一页document.referrer
sw: 不知晓,估计与摸索引擎有关,一般为空
sse:不清楚,估计与搜索引擎有关,一般为空
v:统计代码的版本 ,目前该值为“1.0.17”

http://hm.baidu.com/h.js?3266e9d3684e7a1307dc7c4b4a64b0ae
http://hm.baidu.com/hm.gif?cc=1&ck=1&cl=32-bit&ds=1366×768&ep=0&et=0&fl=11.0&ja=1&ln=zh-cn&lo=0<=1328171561&nv=1&rnd=2889921&si=3266e9d3684e7a1307dc7c4b4a64b0ae&st=3&su=http%3A%2F%2Fwww.zhanghangbo.com%2F&v=1.0.17
http://hm.baidu.com/hm.gif?cc=1&ck=1&cl=32-bit&ds=1366×768&ep=7289%2C115&et=3&fl=11.0&ja=1&ln=zh-cn&lo=0<=1328171561&nv=1&rnd=1444115283&si=3266e9d3684e7a1307dc7c4b4a64b0ae&st=3&su=http%3A%2F%2Fwww.zhanghangbo.com%2F&v=1.0.17
http://hm.baidu.com/hm.gif?cc=1&ck=1&cl=32-bit&ds=1366×768&ep=212486%2C4614&et=3&fl=11.0&ja=1&ln=zh-cn&lo=0<=1328171541&nv=1&rnd=1067394506&si=0f9e2caa14d6d0a51371b168d182314a&st=1&v=1.0.17

http://hm.baidu.com/h.js?3266e9d3684e7a1307dc7c4b4a64b0ae
http://hm.baidu.com/hm.gif?cc=1&ck=1&cl=32-bit&ds=1366×768&ep=0&et=0&fl=11.0&ja=1&ln=zh-cn&lo=0<=1328171561&nv=1&rnd=2889921&si=3266e9d3684e7a1307dc7c4b4a64b0ae&st=3&su=http%3A%2F%2Fwww.zhanghangbo.com%2F&v=1.0.17
http://hm.baidu.com/hm.gif?cc=1&ck=1&cl=32-bit&ds=1366×768&ep=7289%2C115&et=3&fl=11.0&ja=1&ln=zh-cn&lo=0<=1328171561&nv=1&rnd=1444115283&si=3266e9d3684e7a1307dc7c4b4a64b0ae&st=3&su=http%3A%2F%2Fwww.zhanghangbo.com%2F&v=1.0.17
http://hm.baidu.com/hm.gif?cc=1&ck=1&cl=32-bit&ds=1366×768&ep=212486%2C4614&et=3&fl=11.0&ja=1&ln=zh-cn&lo=0<=1328171541&nv=1&rnd=1067394506&si=0f9e2caa14d6d0a51371b168d182314a&st=1&v=1.0.17

立即段js,实质上是向页面中引入hm.baidu.com/h.js的即时段代码,该代码的情节会基于后面的参数有所不同,h.js?后面的参数就是公以百度统计里之id。

########################################################################
class Baidu:
“”””””
Referer=’http://www.lixin.me’
TargetPage=’/www.lixin.me’
BaiduID=”
Hjs=”http://hm.baidu.com/h.js?”
Hgif=”http://hm.baidu.com/hm.gif?”
UserAgent=’Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1;
Trident/5.0)’ #IE9
MyData={‘cc’:’1′,’ck’:’1′,’cl’:’32-bit’,’ds’:’1024×768′,’et’:’0′,’ep’:’0′,’fl’:’11.0′,’ja’:’1′,’ln’:’zh-cn’,’lo’:’0′,’nv’:’1′,’st’:’3′,’v’:’1.0.17′}
#———————————————————————-

import urllib2
import urllib
import random
import math
import urlparse
import time
import cookielib

打js代码中可以取,所有参数包括这些:”cc,cf,ci,ck,cl,cm,cp,cw,ds,ep,et,fl,ja,ln,lo,lt,nv,rnd,sb,se,si,st,su,sw,sse,v”。这些参数的义大致如下:

 

通下去通过序模拟这同一经过:

当这些参数还装了了(有些参数并没有赋值),筛选出已经赋值了的参数,并作hm.baidu.com/hm.gif的参数拼凑来一个url,如:http://hm.baidu.com/hm.gif?cc=1&ck=1&cl=32-bit&ds=1366×768&ep=0&et=0&fl=11.0&ja=1&ln=zh-cn
  。然后要该图片。

这段js,实质上是通往页面中引入hm.baidu.com/h.js的当即段代码,该代码的内容会根据后面的参数有所不同,h.js?后面的参数就是您当百度统计里之id。

<script type=”text/javascript”>
var _bdhmProtocol = ((“https:” == document.location.protocol) ? ”
https://” : ” http://”);
document.write(unescape(“%3Cscript src=’” + _bdhmProtocol +
“hm.baidu.com/h.js%3F3266e9d3684eaa1337dc7c4b4b64b0ae’
type=’text/javascript’%3E%3C/script%3E”));
</script>

取该h.js代码的又,百度统计会于而的浏览器写副一个名啊“HMACCOUNT”的cookie,该cookie的超时时也2038年,所以如果您没有清空浏览器cookie,基本就是毫无过期。

if __name__ ==”__main__”:
a=Baidu(‘百度统计id’,’http://www.lixin.me/blog/test4','www.lixin.com.cn’)
a.run()

import urllib2
import urllib
import random
import math
import urlparse
import time
import cookielib

首先,使用Wireshark(一迟迟网络抓包工具)对浏览器实际的进程进展捕获。首先是使ie打开一个发超链接链接到有百度统计的网站,加载了后关浏览器。最后在Wireshark上获取这么的网数据包。

先是,百度统计会要求我们于苟统计的页面中置一段js语句,类似如下:

搭下去通过序模拟这无异经过:

h.js被下载后,便执行其脚本获取有浏览器相关消息以及看来源,获取之信息包括屏幕尺寸、颜色深浅、flash版本、用户语言等。

       
百度统计是基于cookie的,当求js脚本的当儿,会以您电脑里保存一个永久cookie,该cookie作为你的用户标识。同时发现,但剥离时参数ep从不过开始的0变为了“7289%2C115”,转义后是“7289,115”这是片独毫秒单位,即7.2秒和0.1秒的意思。同时前片软呼吁hm.gif的上lt参数(时间,javascript:(new
Date).getTime())是休转移的。rnd随机数每次都转移。

百度统计服务端,通过接受到是要,并于者图的网址附带的参数获取有关信息,记录访客访问记录;当页面被用户关闭的时刻,同样会触发一不善呼吁hm.gif的进程,但此进程未是具浏览器与装有关闭动作还支持。

h.js被下载后,便执行该脚本获取有浏览器相关信息以及访问来源,获取之信息包括屏幕尺寸、颜色深浅、flash版本、用户语言等。

第一,使用Wireshark(一慢网络抓包工具)对浏览器实际的过程进展捕获。首先是应用ie打开一个产生超链接链接到有百度统计的网站,加载了后关门浏览器。最后在Wireshark上抱这么的大网数据包。

百度统计服务端,通过接收到这请,并由这图的网址附带的参数获取有关消息,记录访客访问记录;当页面被用户关闭的时光,同样会接触一次于呼吁hm.gif的历程,但这进程不是兼具浏览器和有关闭动作还支持。

得发现,浏览器总共向劳动器端发送了4不善呼吁:

########################################################################
class Baidu:
“”””””
Referer=’http://www.lixin.me’
TargetPage=’/www.lixin.me’
BaiduID=”
Hjs=”http://hm.baidu.com/h.js?”
Hgif=”http://hm.baidu.com/hm.gif?”
UserAgent=’Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1;
Trident/5.0)’ #IE9
MyData={‘cc’:’1′,’ck’:’1′,’cl’:’32-bit’,’ds’:’1024×768′,’et’:’0′,’ep’:’0′,’fl’:’11.0′,’ja’:’1′,’ln’:’zh-cn’,’lo’:’0′,’nv’:’1′,’st’:’3′,’v’:’1.0.17′}
#———————————————————————-

if __name__ ==”__main__”:
a=Baidu(‘百度统计id’,’http://www.lixin.me/blog/test4','www.lixin.com.cn’)
a.run()

率先,百度统计会要求我们以如统计的页面中置放一段落js语句,类似如下:

def __init__(self,baiduID,targetPage=None,refererPage=None):
“””Constructor”””
self.TargetPage=targetPage or self.TargetPage
self.Referer=refererPage or self.Referer
self.BaiduID=baiduID
self.MyData[‘si’]=self.BaiduID
self.MyData[‘su’]=urllib.quote(self.Referer)
pass
def run(self,timeout=5):
cj=cookielib.CookieJar()
opener=urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
opener.addheaders=[(“Referer”,self.TargetPage),(“User-Agent”,self.UserAgent)]
try:
response=opener.open(self.Hjs+self.BaiduID).info()
self.MyData[‘rnd’]=int(random.random()*2147483647 )
self.MyData[‘lt’]=int(time.time())
fullurl=self.Hgif+urllib.urlencode(self.MyData)
response2=opener.open(fullurl,timeout=timeout).info()
self.MyData[‘rnd’]=int(random.random()*2147483647 )
self.MyData[‘et’]=’3′
self.MyData[‘ep’]=’2000,100′
response3=opener.open(self.Hgif+urllib.urlencode(self.MyData),timeout=timeout).info()
pass
except urllib2.HTTPError ,ex:
print ex.code
pass
except urllib2.URLError,ex:
print ex.reason
pass
pass

def __init__(self,baiduID,targetPage=None,refererPage=None):
“””Constructor”””
self.TargetPage=targetPage or self.TargetPage
self.Referer=refererPage or self.Referer
self.BaiduID=baiduID
self.MyData[‘si’]=self.BaiduID
self.MyData[‘su’]=urllib.quote(self.Referer)
pass
def run(self,timeout=5):
cj=cookielib.CookieJar()
opener=urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
opener.addheaders=[(“Referer”,self.TargetPage),(“User-Agent”,self.UserAgent)]
try:
response=opener.open(self.Hjs+self.BaiduID).info()
self.MyData[‘rnd’]=int(random.random()*2147483647 )
self.MyData[‘lt’]=int(time.time())
fullurl=self.Hgif+urllib.urlencode(self.MyData)
response2=opener.open(fullurl,timeout=timeout).info()
self.MyData[‘rnd’]=int(random.random()*2147483647 )
self.MyData[‘et’]=’3′
self.MyData[‘ep’]=’2000,100′
response3=opener.open(self.Hgif+urllib.urlencode(self.MyData),timeout=timeout).info()
pass
except urllib2.HTTPError ,ex:
print ex.code
pass
except urllib2.URLError,ex:
print ex.reason
pass
pass

当这些参数还安装完毕了(有些参数并从未赋值),筛选产生都赋值了的参数,并视作hm.baidu.com/hm.gif的参数拼凑来一个url,如:http://hm.baidu.com/hm.gif?cc=1&ck=1&cl=32-bit&ds=1366×768&ep=0&et=0&fl=11.0&ja=1&ln=zh-cn
  。然后要该图形。

cc: 不知道,一般为1
cf:url参数hmsr的值
ci:url参数hmci的值
ck:是否支持cookie 1:0
cl:颜色深 如 “32-bit”
cm:url参数hmmd的值
cp:url参数hmpl的值
cw:url参数hmkw的值
ds:屏幕尺寸,如 ’1024×768′
ep:初始值为’0′,时间变量,反映页面停留时间,格式大概是:现在日-载入时间+“,”+另一个好有些的日价值
et:初始值为’0′,如果ep时间变量不是0之讲话,它会化为任何
fl:flash版本
ja:java支持 1:0
ln:语言 zh-cn
lo: 不知道,一般为0
lt:日期 time.time(),如“1327847756”, 在首坏呼吁没有
nv: 不知道,一般为1或者0
rnd:十位随机数字
sb:如果是360se浏览器该值等于‘17’
se: 和查找引擎相关
si:统计代码id
st:
su:上一页document.referrer
sw: 不亮,估计与摸索引擎有关,一般为空
sse:不了解,估计与摸索引擎有关,一般为空
v:统计代码的版本 ,目前该值为“1.0.17”

脚我们就来套一涂鸦呼吁,本次用的python语言。

 

 

  1. 呼吁一段落js脚本。
  2. 加载了时出发一浅呼吁,并传递参数
  3. 退出页面下,发出同样不良呼吁,并传递参数,与方对比,发现ep参数有浮动。

 

下面我们不怕来学一差呼吁,本次用的python语言。

       
百度统计是根据cookie的,当求js脚本的上,会当你电脑里保存一个永久cookie,该cookie作为你的用户标识。同时发现,但剥离时参数ep从不过开始的0变为了“7289%2C115”,转义后是“7289,115”这是片只毫秒单位,即7.2秒和0.1秒的意。同时前片坏呼吁hm.gif的时候lt参数(时间,javascript:(new
Date).getTime())是无转移的。rnd随机数每次都易。

自js代码中可落,所有参数包括这些:”cc,cf,ci,ck,cl,cm,cp,cw,ds,ep,et,fl,ja,ln,lo,lt,nv,rnd,sb,se,si,st,su,sw,sse,v”。这些参数的含义大致如下:

<script type=”text/javascript”>
var _bdhmProtocol = ((“https:” == document.location.protocol) ? ”
https://” : ” http://”);
document.write(unescape(“%3Cscript src=’” + _bdhmProtocol +
“hm.baidu.com/h.js%3F3266e9d3684eaa1337dc7c4b4b64b0ae’
type=’text/javascript’%3E%3C/script%3E”));
</script>

 

相关文章