Browser 如何检查是否正在使用爬虫访问我的网站?
如何检查某个页面是否正在从爬虫程序或引发连续请求的脚本访问?Browser 如何检查是否正在使用爬虫访问我的网站?,browser,web-crawler,Browser,Web Crawler,如何检查某个页面是否正在从爬虫程序或引发连续请求的脚本访问? 我需要确保该网站只能通过web浏览器访问。 谢谢。您可以使用robots.txt文件阻止对爬虫的访问,也可以使用javascript检测浏览器代理,并基于此进行切换。如果我理解第一种选择更合适,那么: User-agent: * Disallow: / 将其保存为站点根目录下的robots.txt,任何自动系统都不应检查您的站点。这个问题是一个很好的起点: 原职: 这需要一点时间来设计解决方案 我可以马上想到三件事: 一是用户代理
我需要确保该网站只能通过web浏览器访问。
谢谢。您可以使用robots.txt文件阻止对爬虫的访问,也可以使用javascript检测浏览器代理,并基于此进行切换。如果我理解第一种选择更合适,那么:
User-agent: *
Disallow: /
将其保存为站点根目录下的robots.txt,任何自动系统都不应检查您的站点。这个问题是一个很好的起点: 原职: 这需要一点时间来设计解决方案 我可以马上想到三件事: 一是用户代理。如果蜘蛛是谷歌、bing或其他任何东西,它会识别自己 第二,如果爬行器是恶意的,它很可能会模拟普通浏览器的头。如果是IE,请用手指打印。使用JavaScript检查活动的X对象
第三,记下它访问的内容以及访问的频率。如果内容的浏览时间平均为人类X秒,那么在尝试确定是否有可能以如此快的速度消耗数据时,您可以将其作为一个起点。这很棘手,你很可能不得不依赖cookies。一个IP可以由多个用户共享。我的web应用程序中也有类似的问题,因为我在数据库中为浏览网站的每个用户创建了一些庞大的数据,爬虫程序会引发大量无用数据的创建。然而,我不想拒绝访问爬虫,因为我想我的网站索引和发现;我只是想避免创建无用的数据,减少爬行所需的时间 我用以下方法解决了这个问题:
- 首先,我使用了.NET Framework(自2.0以来)中的属性,该属性指示浏览器是否是搜索引擎Web爬虫。您可以从代码中的任何位置访问它:
- ASP.NET C#代码隐藏:
bool isCrawler = HttpContext.Current.Request.Browser.Crawler;
- ASP.NET HTML:
Is crawler? = <%=HttpContext.Current.Request.Browser.Crawler %>
是爬虫吗?=代码>
- ASP.NET Javascript:
<script type="text/javascript"> var isCrawler = <%=HttpContext.Current.Request.Browser.Crawler.ToString().ToLower() %> </script>
var isCrawler=
- ASP.NET C#代码隐藏:
- 在那之后,我必须找到一种方法来区分自动机器人(爬虫、屏幕抓取器等)和人类,我意识到解决方案需要某种互动,比如点击按钮。有些爬虫确实处理javascript,很明显,它们会使用button元素的onclick事件,但如果它是一个非交互元素(如div),则不会。下面是我在web应用程序中用于实现此功能的HTML/javascript代码:
<div class="all rndCorner" style="cursor:pointer;border:3;border-style:groove;text-align:center;font-size:medium;font-weight:bold" onclick="$TodoApp.$AddSampleTree()"> Please click here to create your own set of sample tasks to do </div>
直到现在,这种方法一直工作得无可挑剔,尽管爬虫程序可能会变得更加聪明,也许在阅读本文之后:D请单击此处创建您自己的示例任务集
robots.txt
。我相信大多数爬行器不会处理JavaScript,因此任何使用JavaScript(如谷歌分析)的解决方案都不会跟踪爬行器。谢谢,但是我想如果我创建一个从0到1000的循环,在循环中我会向某个网站发起一个请求!这将是一个问题。这就是我想要避免的,我不知道爬虫程序大多不处理JavaScript。谢谢你的提醒!至于他们忽略机器人文件,大多数主流爬虫应该观察它,但你的权利不是万无一失的。欺骗用户代理不会影响这一点,因为它是否尊重该文件取决于爬虫本身。“确保仅从web浏览器访问该网站”可以转换为“确保该网站仅由人访问”。这个图灵测试看起来几乎不可能解决,但现在你可以称之为IBM