批量检测被百度收录的死链的方法
此方法已失效,可作为思路参考
前段时间服务器被入侵,挂了很多博彩之类的黑页,而且全部被百度收录。
现在把漏洞补好了,但删除黑页文件以后成了死链,要怎么让百度删除收录呢?
在网上找了一下,似乎只有检测网址是否被收录的工具,而没有检测收录的是不是死链的工具。
自己理清了下思路,找办法找出了所有被收录的死链,并写下这篇文章。
不知道有没有更好的方法,大家可以告诉我,先分享给大家,如果有大神请忽视或者告诉我更好的方法,一起学习交流吧。
下面教程开始
先在百度找到xenu可以模拟爬虫爬取所有连接,我下载了个汉化版。
我们先用这个工具查询所有被收录的页面。
打开软件,填入简版百度site网站地址,之所以用简版是可以减少链接查询时间和内容。(请把xxx.blog.vg换成你的网址)
http://www.baidu.com/s?ie=utf-8&tn=baidulocal&wd=site%3Axxx.blog.vg
等待检测完成。
点击导出为制表符分隔的文件。
导出的文件,我们可以看到格式是:网址+空格+状态码
那么写一个正则,把需要的网址提取出来就行,比如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";`
把正则写入php,在php环境下运行get.php。那么结果就出来了。
这时你只需要全选,复制到一个txt文件,上传到网站空间,再到百度站长平台死链提交填入文件路径就行就可以。
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
get.php PHP环境打开是空白的
感谢到访~要确保前面的内容没错才可以,或者尝试一下用excel导出。还有不懂可以和我qq84791516联系
问下楼主怎么调用xenu导出的文件啊?只看到导出了……?
点击xenu左上角导出就好,有图的请认真看。你留的邮箱是假的没法回复你详谈。
[拍砖]把正则写入php,在php环境下运行get.php。这步不会,亲,能否帮帮忙?在写详细一点。或者出个视频。或者帮忙提取下。q1531549495
好的我等下加你QQ[汗]
这个管用吗
文章里的功能是能实现,不过百度更不更新那就没办法控制了。[抖胸]
[yeah]请问这个能告诉我怎么弄吗,弄了一晚上了。有木有视频
[惊吓]不好意思啊,哪里不会说出来我在教程补充一下吧?不方便做视频啊~
[love]呵呵[惊吓]。。。。。。。。。。。。。。。。。。。。。
我的办法就是一一举报快照,这样问题就解决了!
一条一条举报?楼主的帖子里有200多条,想有的500多条的也一条一条的举报?
如果多的话累死人啊,我扫出200多条[惊吓]