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

作者:enenba | 发表于:2012-09-18 00:05 | 分类:php采集

百度已经更新了URL加密算法,以下内容已不可用。

 

   自从9月后百度和360开战的结果就是 百度搜索结果的网址改变了,变成link?url=………这样的重定向格式了。看到这样的不友好的URL真有破解的冲动。于是今天开始试试破解它。

      前几天写过一篇可以获取到百度跳转之后的网址的文章,在百度了一下,有人也研究过百度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上的文章不是我发布的。我解析只是根据自己的想法进行研究的,只是求个过程,至于有没有结果,我自有定论,大家别喷了。

上一篇: 解析百度搜索结果link?url=(二)   |   下一篇:php列出一个目录下的所有文件» 标签: url 百度 搜索结果 link

评论:

2012-12-30 11:48

楼主你好,你破解的百度的加密算法,可是我想要一个正常的网址怎么弄成百度的加密网址,能否指教下?非常感激。比如
是怎么将http://www.xuanyifang.com/59.html搞成这个的http://www.baidu.com/link?url=FolsGJqjJ4zBBpC8yDF8xDh8vibi4UtkCns_d9MPLhqwN5ExHDtahQtu0_?

2013-03-15 10:43

抱歉,已经不研究这个内容。

2012-12-30 11:48

楼主你好,你破解的百度的加密算法,可是我想要一个正常的网址怎么弄成百度的加密网址,能否指教下?非常感激。比如
是怎么将http://www.xuanyifang.com/59.html搞成这个的http://www.baidu.com/link?url=FolsGJqjJ4zBBpC8yDF8xDh8vibi4UtkCns_d9MPLhqwN5ExHDtahQtu0_

2012-12-25 12:46

能否改成批量的啊

2012-12-25 17:14

以上内容已经不更新了,
因为没有解密算法,只用301批量查询效率一定不高。所以不推荐这个方法。

2012-10-12 11:09

这个解析很给力哈

2012-09-28 13:21

个人觉得去解析google的搜索结果比较有用,身在景德镇

2012-09-29 14:14

google还是比较复杂的。很多站长工具也没有做出来。

2012-09-21 14:07

谁不知道cnbeta上的文章都是盗的,只是为了规避版权,搞了个xx投递,其实大部分都是他们自己发的

2012-09-19 20:45

这他妈就高手了?我还以为你把百度的加密算法给破解了,卧槽就弄出这么个低水准忽悠小白的破玩意来,是个程序员都会你这三脚猫功夫!破解了加密算法再来大放厥词!naive

2012-09-19 21:11

没说过我是高手,也没说过已经破解,请你注意你的言行,我放一些东西放在自己的博客,我写我想写的,你觉得很肤浅可以一笑置之。但我鄙视你这种行为。

2012-09-21 11:01

支持博主,切勿跟这等喷子计较。博主的文章我觉得受益良多!

2012-09-19 18:24

很好很强大!!!

2012-09-18 11:43

哈哈,有点意思,持续关注!