【问题标题】:how to fake url detection by php如何通过php伪造url检测
【发布时间】:2013-10-20 18:54:01
【问题描述】:

我正在编写一个脚本,用于通过用户发送的 url 索引和下载整个网站

例如,当用户提交像http://example.com 这样的域时,我将复制索引页面中的所有链接并下载其内部链接并从第一个开始.....

我使用 curl 和正则表达式来下载和提取链接

然而 一些黄色网站正在制作假网址,例如,如果您访问 http://example.com?page=12,它会提供一些指向 http://example.com?page=12&id=10http://example.com?page=13 的链接等。 这将形成一个循环,脚本无法完成网站下载

有什么方法可以检测到这类页面!?

p.s.:我认为 google 和 yahoo 以及其他一些搜索引擎也面临这种问题,但是他们的数据库很清晰,并且在搜索时不会显示这些数据....

【问题讨论】:

  • “假网址”是什么意思?
  • 正如我在第 4 节中所说的,假网址是一个只链接到其他一些页面并像一些warez 网站一样形成循环的页面
  • 如果它实际上链接到另一个页面,那么它不是假的。如果您发现内容是多余的,则通过哈希对内容进行索引,或者尝试找出可以接受的百分比差异以计为不同的资源。您还可以在链接元素中查找规范 URL。
  • 你对 md5 有什么想法,我的意思是我将数据库中所有页面内容制作成 md5,如果我发现重复的 md5 它将是一个重复的页面!?

标签: php url curl artificial-intelligence


【解决方案1】:

某些页面可能使用 GET 变量并且完全有效(就像您在此处提到的那样,?page=12 和 ?page=13 可能是可以接受的)。所以我相信您实际上在这里寻找的是一个独特的页面。

但是,无法直接从它们的 URL 中检测到这些。 ?page=12 可能指向与 ?page=12&id=1 完全相同的东西;他们可能不会。检测其中之一的唯一方法是下载它,将下载内容与您已经获得的页面进行比较,然后找出它是否真的是您尚未看到的页面。如果您以前看过它,请不要抓取它的链接。

这里的小注意事项:确保您阻止来自不同域的网站,否则您可能会不小心开始抓取整个网络 :)

【讨论】:

  • 是的,我知道您认为需要一些人工控制并阻止虚假网址?!我真的很想知道这些页面的搜索引擎解决方案是什么!
  • 搜索引擎有很多存储空间,但它们也以这种方式工作。它们将文档与找到它们的 URL 分开存储,并搜索唯一的文档(然后由它们的“DocID”或“DocumentID”引用)。
猜你喜欢
  • 1970-01-01
  • 2022-06-10
  • 2012-01-17
  • 2011-02-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-17
相关资源
最近更新 更多