生成百度加密地址baidu/link?url=PHP代码

自媒体 投稿&转载 1148浏览

我们知道百度搜索排序中快照的地址并非目标URL,而是一个baidu/link?url=xxx形式的地址,302跳转到目标URL,那么,我们可不可以加密直接给自己的URL生成一个这样的地址呢?

网上其实有很多研究的文章,给出的答案都是无法获知加密方式是不可能破解的,但是根据研究,可以实现生成一个类似的URL,并能实现跳转到目标页。下面是我从网上抄录的代码

PHP代码一

<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
</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'
);


	//解密过程:

$domain = "www.4xseo.com";
	$len = strlen($domain);
	
	
	for($i=0;$i<$len;$i++){
		$domain_one  = substr($domain,$i,1);//输出el
		
		$arr_x = array('0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f');
		$arr_y = array('0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f');
		
		for($ax =0;$ax<sizeof($arr_x);$ax++){
			for($ay =0;$ay<sizeof($arr_y);$ay++){
			//读取每一组密文的x 和 y
			$one = array($arr_x[$ax],$arr_y[$ay]);//str_split($v);
			$encode_x = $one[0];	//f
			$encode_y = $one[1];	//d
			//得到第$k位的data
			$this_data_x = str_split($x[$data[$i][0]]);	// $data[$k]=13,10 [0] = $x[13] 
			$this_data_y = str_split($y[$data[$i][1]]); // $data[$k]=13,10 [1] = $y[10] 

			//得到在ascii码表的x,y
			$real_x = array_search($encode_x,$this_data_x);	//5 

			$real_y = array_search($encode_y,$this_data_y); //7	3
			//结果
			$result = $ascii[$real_x][$real_y];
			
			if($result == $domain_one ){
				$mi .= $arr_x[$ax].$arr_y[$ay];
				$url .= $result;
				echo '密文对应:'.$arr_x[$ax].$arr_y[$ay].'----'.$result."<br>";
				 break 2;
			}

			
			}
		}
	}
	echo '密文对应:http://www.baidu.com/link?url=a3f48d30fc293c5e471ef23de092fddc99'.$mi.'----'.$url."<br>";
?>
</body>
</html>

此代码与《什么是百度反推秒收录技术,原理怎么实现》文末给出的生成链接原理基本一致

PHP代码二

验证后获得的地址返回的是404,已经失效了,贴出来参考学习

<?php
$time = time().rand(1000,9999);
$data = "{$time}###http://www.4xseo.com";        // 被加密信息  
$key = '4xseo.com';                   // 密钥  
$encrypt = encrypt($data, $key);  
$decrypt = decrypt($encrypt, $key);  
echo $encrypt, "\n", $decrypt; 
 
 
function encrypt($data, $key)  
{  
    $key    =   md5($key);  
    $x      =   0;  
    $len    =   strlen($data);  
    $l      =   strlen($key);  
    for ($i = 0; $i < $len; $i++)  
    {  
        if ($x == $l)   
        {  
            $x = 0;  
        }  
        $char .= $key{$x};  
        $x++;  
    }  
    for ($i = 0; $i < $len; $i++)  
    {  
        $str .= chr(ord($data{$i}) + (ord($char{$i})) % 256);  
    }  
    return base64_encode($str);  
}
 
function decrypt($data, $key)  
{  
    $key = md5($key);  
    $x = 0;  
    $data = base64_decode($data);  
    $len = strlen($data);  
    $l = strlen($key);  
    for ($i = 0; $i < $len; $i++)  
    {  
        if ($x == $l)   
        {  
            $x = 0;  
        }  
        $char .= substr($key, $x, 1);  
        $x++;  
    }  
    for ($i = 0; $i < $len; $i++)  
    {  
        if (ord(substr($data, $i, 1)) < ord(substr($char, $i, 1)))  
        {  
            $str .= chr((ord(substr($data, $i, 1)) + 256) - ord(substr($char, $i, 1)));  
        }  
        else  
        {  
            $str .= chr(ord(substr($data, $i, 1)) - ord(substr($char, $i, 1)));  
        }  
    }  
    return $str;  
} 

以上代码来源《百度反推算法PHP代码

推荐阅读

PHP提示:Warning: count():Parameter must be an array or an object that implements Countable

错误原因:PHP7.2以后,count()函数的参数无效时会抛出warning警告。...

PHP7.4 报错:Deprecated Functionality: implode(): Passing glue string after array is deprecated.

PHP7.4运行项目报错:Deprecated Functionality: implode(): Passing glue string after array is deprecated。只需交换 implode() 函数的两个参数!...

百度自动推送php实现代码

我们知道主动推送有助于搜索引擎抓取和收录网站内容,wordpress或者主流CMS其实已经集成了推送功能。但是如果我们要定期归还,而不是只在发布的时候推一次。这个功能可以通过结合PHP和Pagoda Panel的预定任务来实现。$api = '百度站......