Http 如何循环浏览大量URL';并确定它们是否有效(非404响应)?

Http 如何循环浏览大量URL';并确定它们是否有效(非404响应)?,http,validation,url,response,Http,Validation,Url,Response,我有一个大约4300个URL的列表,都非常相似。其中一些可能已被删除,我想确定哪些不再有效。我对内容不感兴趣(此时),只有当它们在现实世界中使用时,如果它们当前返回有效内容(http 200)或不存在(http 404)。本质上,我正在寻找一个URL ping服务。这是一次过的锻炼 如果没有专门用于此目的的现有工具,我对Java非常熟悉,可以编写自己的解决方案。然而,我不想重新发明轮子,我不知道如何最好地做到这一点,而不让它看起来像拒绝服务攻击。是否可以接受依次点击每个URL,一个接一个(因此没

我有一个大约4300个URL的列表,都非常相似。其中一些可能已被删除,我想确定哪些不再有效。我对内容不感兴趣(此时),只有当它们在现实世界中使用时,如果它们当前返回有效内容(http 200)或不存在(http 404)。本质上,我正在寻找一个URL ping服务。这是一次过的锻炼

如果没有专门用于此目的的现有工具,我对Java非常熟悉,可以编写自己的解决方案。然而,我不想重新发明轮子,我不知道如何最好地做到这一点,而不让它看起来像拒绝服务攻击。是否可以接受依次点击每个URL,一个接一个(因此没有并发请求)?我非常清楚不要给目标服务器带来过度的压力


非常感谢您的任何想法或建议。

这个问题没有100%的解决方案。例如,如果响应状态是在PHP端确定的,它通常会为您提供内容以及您发送的任何请求头的状态

尽管如此,您仍然可以使用“范围”请求头来请求内容的第一个字节,但这必须得到服务器后端的支持。

方便地为200返回0,为404返回非零值,因此以下操作将起作用:

for i in $(cat listOfUrls.txt); do
    wget --quiet $i && echo $i >> goodUrls.txt || echo $i >> badUrls.txt;
done
或者是一些相近的变体

考虑:

  • 比如说,在两次请求之间睡眠1秒
  • 随机化listOfUrls.txt,例如使用
    sort-R
    ,随着时间的推移将多个请求分散到同一服务器