解析百度搜索结果link?url=(四)

作者:enenba | 发表于:2012-10-30 17:47 | 分类:php采集

百度又更新了。以下内容又失效了

首先感谢 恒通 提供的破解结果和思路。以下是根据结果写出一个解密的php版本。目前只解析了80位。剩下位数可以采集足量的url补全。

不多说了上源码:

<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<title>查询百度link?ulr=真实链接表单 by enenba.com</title>
</head>
<body>
<?php
//$ascii码表x,y位置
$ascii = array(
	0=>array(' ','!','"','#','$','%','&','\'','(',')','*','+',',','-','.','/'),
	1=>array('0','1','2','3','4','5','6','7','8','9',':',';','<','=','>','?'),
	2=>array('@','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O'),
	3=>array('P','Q','R','S','T','U','V','W','X','Y','Z','[','\\',']','^','_'),
	4=>array('`','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o'),
	5=>array('p','q','r','s','t','u','v','w','x','y','z','{','|','}','~',' '),);
//url第N个位置对应的(x,y),目前只得到80位的url
$data  = array(
	array(13,10),
	array(10,1),
	array(16,15),
	array(7,6),
	array(5,13),
	array(18,9),
	array(13,11),
	array(7,12),
	array(10,5),
	array(15,9),
	array(15,9),
	array(13,5),
	array(16,11),
	array(0,1),
	array(8,2),
	array(8,5),
	array(0,0),
	array(17,15),
	array(14,8),
	array(2,1),
	array(10,5),
	array(17,14),
	array(16,5),
	array(3,8),
	array(14,9),
	array(5,8),
	array(15,1),
	array(3,15),
	array(13,10),
	array(10,12),
	array(5,7),
	array(0,2),
	array(18,14),
	array(0,15),
	array(1,6),
	array(13,5),
	array(2,1),
	array(15,14),
	array(18,8),
	array(18,9),
	array(1,10),
	array(14,14),
	array(13,2),
	array(5,3),
	array(5,8),
	array(0,4),
	array(1,5),
	array(16,1),
	array(8,1),
	array(2,5),
	array(10,7),
	array(10,15),
	array(14,14),
	array(17,3),
	array(15,0),
	array(14,5),
	array(7,7),
	array(3,4),
	array(14,8),
	array(12,0),
	array(13,12),
	array(12,3),
	array(6,5),
	array(3,1),
	array(1,14),
	array(5,4),
	array(0,12),
	array(7,0),
	array(10,7),
	array(15,12),
	array(8,2),
	array(18,15),
	array(3,12),
	array(1,12),
	array(0,15),
	array(17,4),
	array(17,2),
	array(11,1),
	array(3,12),
	array(11,5),
	array(0,13),
	array(1,1),
	array(2,12)
);
//所有的y值
$y = array(
0=>
'0123456789abcdef',
'1032547698badcfe',
'23016745ab89efcd',
'32107654ba98fedc',
'45670123cdef89ab',
'54761032dcfe98ba',
'67452301efcdab89',
'76543210fedcba98',
'89abcdef01234567',
'98badcfe10325476',
'ab89efcd23016745',
'ba98fedc32107654',
'cdef89ab45670123',
'dcfe98ba54761032',
'efcdab8967452301',
'fedcba9876543210'
);
//所有的x值
$x = array(
0=>
'016745',
'107654',
'234567',
'321076',
'325476',
'452301',
'543210',
'670123',
'765432',
'761032',
'89abcd',
'89efcd',
'98fedc',
'abcdef',
'badcfe',
'cdab89',
'dcba98',
'ef89ab',
'fe98ba'
);
$input = '请输入百度搜索结果url,带link?url=的那种<br>比如:http://www.baidu.com/link?url=a3f48d30fc293c5e471ef23de092fddc99fdd688681db1fb62cb8c9daa<form method="get" action=""><input type="text" name="url" id="url" style="width:800px;" /><input type="submit" value="提交" /></form>';

$url = isset($_GET['url'])?$_GET['url']:'';
if(empty($url)) {
	echo($input);
}else{

	//解密过程:
	$search = '/30fc293c5e471ef23de092fddc99([0-9a-f]+)/i';
	preg_match($search,$url,$r);
	$url_encode = $r[1];  unset($r); // 得出密文部分
	$url_encode_arr = str_split($url_encode,2); // 两位密文为一组的密文的数组
	$result='';
	foreach ($url_encode_arr as $k=>$v){ 
		//读取每一组密文的x 和 y
		$one = str_split($v);
		$encode_x = $one[0];
		$encode_y = $one[1];
		//得到第$k位的data
		$this_data_x = str_split($x[$data[$k][0]]);
		$this_data_y = str_split($y[$data[$k][1]]);
		//得到在ascii码表的x,y
		$real_x = array_search($encode_x,$this_data_x);
		$real_y = array_search($encode_y,$this_data_y);
		//结果
		$result.= $ascii[$real_x][$real_y];
	}
	//输出结果
	echo $input;
	echo '密文部分为:'.$url_encode.'<br />';
	echo '本解密方法得出url为:http://'.$result;
}
?>
</body>
</html>

勉强上一个演示

 

 

由于百度更新频繁,文章不再更新。

END......

上一篇: 想写个泛采集的emlog插件   |   下一篇:解析百度搜索结果link?url=(三)» 标签: php源码 url 百度搜索 搜索结果

评论:

2012-11-01 17:20

我想用php代码,去记录用户的来访,然后存储在自己的数据表里。现在有了跳转,还能不能记录了?
但是我发现,好像统计工具没有影响。请博主解答一下

2012-11-02 13:41

应该可以记录,先获取跳转后的真实地址然后再存储数据库。
统计工具的应该跟着百度一起更新的,速度比我快多了。

2012-10-31 10:51

呵呵,你写出来了!挺速度的!最新的URL跟以前一样的模式 换汤不换药。其实 不一定要多少位数,可以搞个猜测算法。不管他多少位数,只要符合找出规律的模式即可匹配出真实的 ascii的对应值。而且是不管URL多长都能解析!

2012-10-31 11:53

猜测算法?规律的模式? 我真的没想出来 ,还要和你请教一下。

2012-10-31 12:05

当我得到每一组的加密url时,如何猜出横竖的x,y?

2012-10-31 22:54

我的意思是让程序自动把密钥识别出来,而且当遇到特别长的URL采集下来的样本分析后入库,这样不论多长的都会自动把他破解了并入库 密钥一样可以的。我的程序写好了,主要是即使百度在更新 我只要打开程序跑一圈 基本上又解出来了!

2012-11-01 08:40

明白了,谢谢。

1 2