当前位置: 移动技术网 > IT编程>开发语言>PHP > 解析百度搜索结果link?url=参数分析 (全)

解析百度搜索结果link?url=参数分析 (全)

2019年04月15日  | 移动技术网IT编程  | 我要评论

大荤君,郑清,厦门愚人码头

前几天写过一篇可以获取到百度跳转之后的网址的文章,在百度了一下,有人也研究过百度link?url=的。

大概得出如下结果:

1、加密方式根据:随机+输入停留时间+快照地址进行加密
2、整个代码中应该有三个部分:1、搜索词的时间;2、搜索的关键词;3、随机生成的唯一性标识代码。
3、在任何环境或浏览器下 url=最后有一段相似的代码
从以上别人研究的结果可以知道,“最后有一段相似的代码”是比较可用的,于是先从此入手。
我搜索“enenba” 发现,我的第一个搜索结果的url都有一段代码是相同的,那就是
http://www.baidu.com/link?url=…………ebac5573358cc3c0659257bfcf54763ec1c5ecff3b3fbd1d4c
所有搜索结果都有的一段代码 ebac5573358cc3c0659257bfcf54 (搜索n次后发现)
后面结尾的 763ec1c5ecff3b3fbd1d4c 看起来像是搜索结果的真实url。(已经验证是真实url的密文)
我是这样验证的:
1、先百度搜索 www.php100.com
第一个结果链接:
http://www.baidu.com/link?url=…………ebac5573358cc3c0659257bfcf546427d385fef6656de2404d6843da27
看到前面的几位6427d385fef6656de2404d6843da27
2、 再百度搜索 www.hao123.com
第一个结果链接:
http://www.baidu.com/link?url=…………ebac5573358cc3c0659257bfcf54 6427d385e6ff7a6de0434d6843da
看到前面的几位6427d385e6ff7a6de0434d6843da
……
多次搜索n个网站后发现,域名前几位是“www.”的,密文是都是6427d385
并且www.是四个字符,密文6427d385是八个字符。可以知道密文两个字符等于url一个字符。
于是写了一个php表单查询并得到密文部分,方便以后查看。
出个php源码:
复制代码 代码如下:

<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<title>查询百度link?ulr=真实链接表单</title>
</head>
<body>
<?php
/*
getrealurl 获取301、302重定向后的url地址 by enenba.com
@param str $url 查询
$return str 定向后的url的真实url
*/
function getrealurl($url){
$header = get_headers($url,1);
if (strpos($header[0],'301') || strpos($header[0],'302')) {
if(is_array($header['location'])) {
return $header['location'][count($header['location'])-1];
}else{
return $header['location'];
}
}else {
return $url;
}
}
$input = '<form method="get" action=""><input type="text" name="url" id="url" style="width:800px;" /><input type="submit" value="提交" /></form><body></html>';
$url = isset($_get['url'])?$_get['url']:'';
if(empty($url)) exit($input);
$urlreal = getrealurl($url);
echo '真实的url为:'.$urlreal;
$urlreal = ltrim($urlreal,'http://');
$search = '/ebac5573358cc3c0659257bfcf54([0-9a-f]+)/i';
preg_match($search,$url,$r);
$url_encode = $r[1]; unset($r);
echo '<br/>密文部分为:'.$url_encode.'<br/>';
$urlreal_arr = str_split($urlreal);
$url_encode_arr = str_split($url_encode,2);
echo '<br />';
echo $input;
?>

上一个在线例子:猛击测试
明天再研究,待续。。。。
本站事先声明:cnbeta上的文章不是我发布的。我解析只是根据自己的想法进行研究的,只是求个过程,至于有没有结果,我自有定论,大家别喷了。
接上一篇文章,仔细看了下百度结果url的长段代码,发现密文中只有数字和a到f字母组成,也就是十六进制的代码。
十六进制是从 0->1->2->3->4->5->7->8->9->a->b->c->d->e->f
我采集一系列的url并统计了第一位的代码。
ebac5573358cc3c0659257bfcf54xx......
xx这一位代码对应的url是这样的
复制代码 代码如下:

33 0 23 @ 13 p 03 ` 73 p 63
! 32 1 22 a 12 q 02 a 72 q 62
" 31 2 21 b 11 r 01 b 71 r 61
# 30 3 20 c 10 s 00 c 70 s 60
$ 37 4 27 d 17 t 07 d 77 t 67
% 36 5 26 e 16 u 06 e 76 u 66
& 35 6 25 f 15 v 05 f 75 v 65
' 34 7 24 g 14 w 04 g 74 w 64
( 3b 8 2b h 1b x 0b h 7b x 6b
) 3a 9 2a i 1a y 0a i 7a y 6a
* 39 : 29 j 19 z 09 j 79 z 69
+ 38 ; 28 k 18 [ 08 k 78 { 68
, 3f < 2f l 1f \ 0f l 7f | 6f
- 3e = 2e m 1e ] 0e m 7e } 6e
. 3d > 2d n 1d ^ 0d n 7d ~ 6d
/ 3c ? 2c o 1c _ 0c o 7c 6c

发现应该是一个ascii码表中的字符,但是顺序应该是混淆了。但是都是这个一个进制内都是这样:
3->2->1->0->7->6->5->4->b->a->9->8->f->e->d->c
四位一个降序,看出总体是递减的。
但是不解的是 从_ 到 `在ascii是相邻的 对应的 0c 和 73 是跳跃的。没办法,看不出规律,再看看第二位的这组代码
ebac5573358cc3c0659257bfcf54xxyy。。。。
yy这一位代码对应的url是这样的
复制代码 代码如下:


70 0 60 @ 50 p 40 ` 30 p 20
! 71 1 61 a 51 q 41 a 31 q 21
" 72 2 62 b 52 r 42 b 32 r 22
# 73 3 63 c 53 s 43 c 33 s 23
$ 74 4 64 d 54 t 44 d 34 t 24
% 75 5 65 e 55 u 45 e 35 u 25
& 76 6 66 f 56 v 46 f 36 v 26
' 77 7 67 g 57 w 47 g 37 w 27
( 78 8 68 h 58 x 48 h 38 x 28
) 79 9 69 i 59 y 49 i 39 y 29
* 7a : 6a j 5a z 4a j 3a z 2a
+ 7b ; 6b k 5b [ 4b k 3b { 2b
, 7c < 6c l 5c \ 4c l 3c | 2c
- 7d = 6d m 5d ] 4d m 3d } 2d
. 7e > 6e n 5e ^ 4e n 3e ~ 2e
/ 7f ? 6f o 5f _ 4f o 3f 2f

第二位的这一组的秘文很好的遵循 十六进制递增的顺序。
0->1->2->3->4->5->7->8->9->a->b->c->d->e->f
总体是递减的。
再看第三组
ebac5573358cc3c0659257bfcf54xxyyzz。。。。
zz这一位代码对应的url是这样的
复制代码 代码如下:

84 0 94 @ a4 p b4 ` c4 p d4
! 85 1 95 a a5 q b5 a c5 q d5
" 86 2 96 b a6 r b6 b c6 r d6
# 87 3 97 c a7 s b7 c c7 s d7
$ 80 4 90 d a0 t b0 d c0 t d0
% 81 5 91 e a1 u b1 e c1 u d1
& 82 6 92 f a2 v b2 f c2 v d2
' 83 7 93 g a3 w b3 g c3 w d3
( 8c 8 9c h ac x bc h cc x dc
) 8b 9 9b i ab y bb i cd y dd
* 8e : 9e j ae z be j ce z de
+ 8f ; 9f k af [ bf k cf { df
, 88 < 98 l a8 \ b8 l c8 | d8
- 89 = 99 m a9 ] b9 m c9 } d9
. 8a > 9a n aa ^ ba n ca ~ da
/ 8b ? 9b o ab _ bb o cb db

不解释了上顺序:
4->5->6->7->0->1->2->3->4->c->b->e->f->8->9->a->b
总体是递增的
还没看后面的位数,不过大概可以知道是 四位为一组的混淆十六进制混淆,至于是递增还是递减,需要一定的数据量来判断。
下次采集1000条url数据进行判断。
待续。。。。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网