问题标签 [web-crawler]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
12 回答
19435 浏览

web-crawler - 防止网站数据被抓取和翻录

我正在考虑建立一个内容站点,其中可能包含数千个不同的条目,可通过索引和搜索访问。

我可以采取哪些措施来防止恶意爬虫窃取我网站上的所有数据?我不太担心 SEO,尽管我不想一起阻止合法的爬虫。

例如,我想过随机更改用于显示我的数据的 HTML 结构的一小部分,但我想这不会真正有效。

0 投票
4 回答
4039 浏览

erlang - 是否可以使用 Erlang、Mnesia 和 Yaws 开发强大的网络搜索引擎?

我正在考虑使用 Erlang、Mnesia 和 Yaws 开发一个网络搜索引擎。是否有可能使用这些软件制作一个功能强大且速度最快的网络搜索引擎?它需要什么来实现这一点,我该如何开始?

0 投票
1 回答
437 浏览

optimization - Ultraseek 5.7 的 SEO

我们已经让 Ultraseek 5.7 索引我们公司内部网站上的内容,并且我们希望确保我们的网页已针对它进行了优化。

哪些 SEO 技术对 Ultraseek 有用,我在哪里可以找到有关这些功能的文档?

我考虑实现的功能:

  • 让title和first H1包含页面最有价值的信息
  • 实现一个 sitemap.xml 文件
  • 添加新内容时 Ping Ultraseek xpa 界面
  • 使用“SEO 友好”的 URL 字符串
  • 将 Meta 关键字添加到 HTML 页面。
0 投票
1 回答
760 浏览

search-engine - 是否有包含索引机器人的搜索引擎,可以通过为机器人提供某些属性来组成特殊目录?

我们的应用程序 (C#/.NET) 需要大量查询来搜索。谷歌每天 50,000 的政策是不够的。我们需要能够通过我们设置的特定规则(例如国家域)抓取互联网网站并收集 URL、文本、关键字、网站名称并创建我们自己的内部目录的东西,这样我们就不会局限于任何大型外部搜索引擎像谷歌或雅虎。

我们可以使用任何免费的开源解决方案将其安装在我们的服务器上吗?

重新发明轮子没有意义。

0 投票
2 回答
1641 浏览

.net - HttpBrowserCapabilities.Crawler 属性 .NET

HttpBrowserCapabilities.Crawler 属性 ( http://msdn.microsoft.com/en-us/library/aa332775(VS.71).aspx ) 如何工作?我需要检测合作伙伴的自定义爬虫,并且此属性返回 false。

我在哪里/如何添加他的用户代理以便此属性返回 true?除了创建我自己的用户代理检测机制之外还有其他方法吗?

0 投票
6 回答
23994 浏览

apache - 我可以阻止 Apache Web 服务器上每个站点的搜索爬虫吗?

我在公共互联网上有一个登台服务器,为一些网站运行生产代码的副本。如果登台站点被编入索引,我真的不喜欢它。

有没有办法可以修改临时服务器上的 httpd.conf 以阻止搜索引擎爬虫?

更改 robots.txt 并不会真正起作用,因为我使用脚本将相同的代码库复制到两台服务器。另外,我也不想更改虚拟主机配置文件,因为有很多站点,如果我创建一个新站点,我不想记住复制某个设置。

0 投票
11 回答
26566 浏览

web-crawler - 检测“隐形”网络爬虫

有哪些选项可以检测不想被检测到的网络爬虫?

(我知道列出检测技术可以让智能隐形爬虫程序员制作出更好的蜘蛛,但我认为无论如何我们都无法阻止智能隐形爬虫,只能阻止那些犯错误的爬虫。)

我不是在谈论像 googlebot 和 Yahoo! 这样的爬虫。啜饮。我认为一个机器人很好,如果它:

  1. 在用户代理字符串中将自己标识为机器人
  2. 读取 robots.txt(并服从它)

我说的是糟糕的爬虫,隐藏在普通用户代理后面,使用我的带宽,从不给我任何回报。

有一些活板门可以构建更新列表(感谢 Chris,gs)

  1. 添加仅在 robots.txt 中列出(标记为不允许)的目录,
  2. 添加隐形链接(可能标记为 rel="nofollow"?),
    • 样式=“显示:无;” 在链接或父容器上
    • 放置在具有更高 z-index 的另一个元素下方
  3. 检测谁不了解 CapiTaLiSaTioN,
  4. 检测谁试图发布回复但始终未能通过验证码。
  5. 检测对仅 POST 资源的 GET 请求
  6. 检测请求之间的间隔
  7. 检测请求页面的顺序
  8. 检测谁(一致地)通过 http 请求 https 资源
  9. 检测谁不请求图像文件(这与已知图像浏览器的用户代理列表相结合,效果非常好)

“好”和“坏”机器人都会触发一些陷阱。您可以将它们与白名单结合起来:

  1. 它触发了一个陷阱
  2. 它要求robots.txt
  3. 它不会触发另一个陷阱,因为它服从了robots.txt

另一件重要的事情是:
请考虑使用屏幕阅读器的盲人:给人们一种联系您的方式,或解决(非图像)验证码以继续浏览。

有什么方法可以自动检测试图将自己伪装成普通人类访问者的网络爬虫。

更新
问题不是:我如何捕获每个爬虫。问题是:如何最大限度地提高检测到爬虫的机会。

有些蜘蛛真的很厉害,实际上可以解析和理解 html、xhtml、css javascript、VB 脚本等......
我没有幻想:我无法击败它们。

但是,您会惊讶于某些爬虫是多么愚蠢。愚蠢的最好例子(在我看来)是:在请求它们之前将所有 URL 转换为小写。

然后有一大堆爬虫“不够好”,无法避开各种活板门。

0 投票
5 回答
5485 浏览

c# - .NET 没有可靠的异步套接字通信?

我曾经在 .NET 中写过一个 Crawler。为了提高它的可扩展性,我尝试利用 .NET 的异步 API。

System.Net.HttpWebRequest 具有异步 API BeginGetResponse/EndGetResponse。但是,这对 API 只是为了获取一个 HTTP 响应头和一个 Stream 实例,我们可以从中提取 HTTP 响应内容。所以,我的策略是使用 BeginGetResponse/EndGetResponse 异步获取响应 Stream,然后使用 BeginRead/EndRead 从响应 Stream 实例中异步获取字节。

在 Crawler 进行压力测试之前,一切似乎都很完美。在压力测试下,Crawler 内存使用率很高。我用 WinDbg+SoS 检查了内存,发现很多字节数组都被 System.Threading.OverlappedData 实例固定了。在互联网上搜索后,我从微软找到了这个 KB http://support.microsoft.com/kb/947862 。

根据 KB,异步 I/O 的数量应该有一个“上限”,但它并没有告诉一个“建议的”界限值。所以,在我看来,这个知识库没有任何帮助。这显然是一个 .NET 错误。最后,我不得不放弃从响应流中异步提取字节的想法,而只是以同步的方式进行。

.NET 库允许使用点网套接字(Socket.BeginSend / Socket.BeginReceive / NetworkStream.BeginRead / NetworkStream.BeginWrite)进行异步 IO,其异步 IO 的未完成缓冲区数量(发送或接收)必须具有上限.

网络应用程序应该对其发布的未完成异步 IO的数量有一个上限 。

编辑:添加一些问号。

有人有在 Socket 和 NetworkStream 上进行异步 I/O 的经验吗?一般来说,生产中的爬虫是同步还是异步与互联网进行I/O?

0 投票
3 回答
2118 浏览

xhtml - 当前浏览器和搜索引擎蜘蛛对 XHTML 的支持程度如何?

忽略IE的情况,还有其他浏览器无法理解application/xhtml+xml内容类型吗?那么搜索引擎蜘蛛呢?

我在网上找不到任何几年前的答案,因此可能不准确。

编辑: 不知何故相关问题:XHTML 严格解决了什么问题?

0 投票
7 回答
6672 浏览

lucene - 对与 Lucene 或 Solr 一起使用的爬虫工具的建议?

对 HTML 和 XML 文档(本地或基于 Web)使用并在 Lucene / Solr 解决方案空间中运行良好的爬虫(蜘蛛)是什么?可以是基于 Java 的,但不是必须的。