前言
在网上搜索,有说url后面的参数是百度收录后生成的参数。
解析方式:https://blog.csdn.net/weixin_30883777/article/details/94793401
模拟请求,得到真正的地址
php方式
https://www.cnblogs.com/xcsn/p/4678304.html
<?php
$url = "http://www.baidu.com/link?url=nS2MGJqjJ4zBBpC8yDF8xDh8vibi1lVeE7gGr9UONBu";
$info = parse_url($url);
$fp = fsockopen($info['host'], 80,$errno, $errstr, 30);
fputs($fp,"GET {$info['path']}?{$info['query']} HTTP/1.1\r\n");
fputs($fp, "Host: {$info['host']}\r\n");
fputs($fp, "Connection: close\r\n\r\n");
$rewrite = '';
while(!feof($fp)) {
$line = fgets($fp);
if($line != "\r\n" ) {
if(strpos($line,'Location:') !== false) {
$rewrite = str_replace(array("\r","\n","Location: "),'',$line);
}
}else {
break;
}
}
var_dump($rewrite); //结果显示:string(22) "http://www.google.com/"
?>
java方式
@Test
public void mockRequest() throws IOException {
String url = "http://www.baidu.com/link?url=Ughq64BCTKM84_A93RrmeHcDWPmkf9HaFj7IQOB8sWkr6AVr8BqZ9eHrcOlK2Di_";
Document doc = Jsoup.connect(url).get();
System.out.println("网页标题:" + doc.title());
System.out.println("网页地址:" + doc.location());
}