程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> 解析百度搜索結果link?url=參數分析 (全)

解析百度搜索結果link?url=參數分析 (全)

編輯:關於PHP編程

前幾天寫過一篇可以獲取到百度跳轉之後的網址的文章,在百度了一下,有人也研究過百度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" /><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數據進行判斷。
待續。。。。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved