此方法已失效,可作为思路参考

前段时间服务器被入侵,挂了很多博彩之类的黑页,而且全部被百度收录。

现在把漏洞补好了,但删除黑页文件以后成了死链,要怎么让百度删除收录呢?

在网上找了一下,似乎只有检测网址是否被收录的工具,而没有检测收录的是不是死链的工具。

自己理清了下思路,找办法找出了所有被收录的死链,并写下这篇文章。

不知道有没有更好的方法,大家可以告诉我,先分享给大家,如果有大神请忽视或者告诉我更好的方法,一起学习交流吧。

下面教程开始

先在百度找到xenu可以模拟爬虫爬取所有连接,我下载了个汉化版。

我们先用这个工具查询所有被收录的页面。

打开软件,填入简版百度site网站地址,之所以用简版是可以减少链接查询时间和内容。(请把xxx.blog.vg换成你的网址)

http://www.baidu.com/s?ie=utf-8&;tn=baidulocal&wd=site%3Axxx.blog.vg

 title=

等待检测完成。

 title=

点击导出为制表符分隔的文件。

 title=

导出的文件,我们可以看到格式是:网址+空格+状态码

 title=

那么写一个正则,把需要的网址提取出来就行,比如www.baidu.com下的404页面就是

/http://www.baidu.com(.*?)\s404/i

(以http://www.baidu.com开头,\s代表空格,404,/i代表匹配大小写)

不会正则怎么办?

为了方便大家,我把文件作了修改,大家只要把head改成标致性开头,state改成状态码就行,file改成导出的文件路径就行。

head怎么改,举个例子,

你的网站是http://www.baidu.com/abc.html,那么你就写http://www.baidu.com/

你的网站是http://abc.baidu.com/abc.html,那么你就写http://abc.baidu.com/

`header("Content-type: text/html; charset=utf-8");
$file="a.txt";//导出的文件
$head="http://www.baidu.com";//网址头
$state="404";//状态码
preg_match_all("/".str_replace("/","/", $head)."(.*?)\s".$state."/i", file_get_contents($file), $result);
foreach($result[1] as $row){
echo "{$head}{$row}n";`

 title=

把正则写入php,在php环境下运行get.php。那么结果就出来了。

 title=

这时你只需要全选,复制到一个txt文件,上传到网站空间,再到百度站长平台死链提交填入文件路径就行就可以。 title=