V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
jeffjade
V2EX  ›  程序员

请求推荐一款检测网站链接有效性工具(谢)

  •  
  •   jeffjade ·
    nicejade · 2017-02-06 23:18:01 +08:00 · 3891 次点击
    这是一个创建于 2852 天前的主题,其中的信息可能已经有所发展或是发生改变。

    做博客,有时会引用些外链;
    但,有些时候,外链中部分回称为死链;

    网上搜了些、自己也写了个小工具,
    去检测死链,发现准确度不很高;

    故此:再这儿求助下:
    请求推荐一款检测网站链接有效性工具(大谢);
    若是开源小项目就更好了(比如用 Node)。

    18 条回复    2017-02-07 19:46:43 +08:00
    jeffjade
        2
    jeffjade  
    OP
       2017-02-06 23:26:28 +08:00
    @ivmm 这样搜索出来的(或者 Google ),得到的推荐,目测不怎么靠谱;刚才就用“站长工具”跑了下,结果不精确。
    yangqi
        3
    yangqi  
       2017-02-06 23:30:42 +08:00   ❤️ 1
    curl -s -o /dev/null -w "%{http_code}" http://www.example.org/

    返回的值不是 200 可以判断为死链
    jeffjade
        4
    jeffjade  
    OP
       2017-02-06 23:34:31 +08:00
    感谢,涨了点姿势。
    但若是,一个网站 or 网页中存在很多外链,需要先抓取,然后再逐一判断,这样做,看起来就不能很好的工作了。
    benbenlang
        5
    benbenlang  
       2017-02-06 23:41:18 +08:00 via Android
    WordPress 有插件的,你搜搜
    justyy
        6
    justyy  
       2017-02-06 23:41:56 +08:00
    wujysh
        7
    wujysh  
       2017-02-06 23:42:45 +08:00
    $ sed -n 's/.*href="\([^"]*\).*/\1/p' file
    wujysh
        8
    wujysh  
       2017-02-06 23:43:22 +08:00
    然后再接上 @yangqi 的 curl 应该就可以了
    wujysh
        9
    wujysh  
       2017-02-06 23:44:31 +08:00
    file 是 html 文件,也可以管道连 curl 得到的源网页
    jeffjade
        10
    jeffjade  
    OP
       2017-02-07 00:01:49 +08:00
    @benbenlang 我用的是 Hexo ,之后我瞅瞅有否;
    yangqi
        11
    yangqi  
       2017-02-07 00:11:15 +08:00   ❤️ 1
    @jeffjade
    @wujysh 改进了一下,加上-I, 只需要获取 header ,不需要下载整个页面

    curl -sI -o /dev/null -w "%{http_code}" http://www.example.org/
    jeffjade
        12
    jeffjade  
    OP
       2017-02-07 00:19:53 +08:00
    @yangqi 目测这样无法判断 http://www.example.org/ 页面中包含的外链是否有效呢。
    wujysh
        13
    wujysh  
       2017-02-07 00:22:53 +08:00   ❤️ 1
    wget -q http://www.sina.com.cn -O - | \
    tr "\t\r\n'" ' "' | \
    grep -i -o '<a[^>]\+href[ ]*=[ \t]*"\(ht\|f\)tps\?:[^"]\+"' | \
    sed -e 's/^.*"\([^"]\+\)".*$/\1/g' \
    | \
    xargs -n1 -P 10 curl -o /dev/null --silent --head --write-out '%{url_effective};%{http_code};%{time_total};%{time_namelookup};%{time_connect};%{size_download};%{speed_download}\n'

    拼凑了一下 stackoverflow 上的例子,能达到效果,@jeffjade 你可以试试。
    参考:
    http://stackoverflow.com/questions/2804467/spider-a-website-and-return-urls-only
    http://stackoverflow.com/questions/6136022/script-to-get-the-http-status-code-of-a-list-of-urls
    yangqi
        14
    yangqi  
       2017-02-07 00:23:28 +08:00
    @jeffjade 页面中的肯定要一个一个请求然后判断啊
    wujysh
        15
    wujysh  
       2017-02-07 00:27:54 +08:00
    @livid 13 楼的 @居然不起作用。。
    wujysh
        16
    wujysh  
       2017-02-07 00:31:28 +08:00
    @wujysh @livid 不好意思,是插件的问题
    lslqtz
        17
    lslqtz  
       2017-02-07 10:27:33 +08:00
    有友链就上监控,外链就不用管了
    jeffjade
        18
    jeffjade  
    OP
       2017-02-07 19:46:43 +08:00
    @yangqi 所以我想请教的是,有没有比“站长工具”中 http://tool.chinaz.com/links/ 这个类似,但比他精确的工具
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3321 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 00:41 · PVG 08:41 · LAX 16:41 · JFK 19:41
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.