服务器如何知道请求不是来自浏览器

问题描述 投票:0回答:1
  • 最近,我有一些抓取任务。我看到很多网站(例如Amazon)可以知道我的api调用不是来自浏览器,并且响应诸如“检测到启动”或返回capcha之类的消息。我立即从浏览器中调用api或url,并且仍然可以使用。
  • 我确实通过复制将请求的SAME LIKE浏览器调用克隆为curl(用户代理,cookie,..都相同)。
  • 他们怎么知道我的请求不是来自浏览器?
web-crawler crawler4j
1个回答
0
投票

有两种简单的方法可以显着减少爬网您网站的机器人数量:

  1. [Cloudflare〜此免费服务将成为网站和用户之间的障碍,这意味着它将仅允许合法用户访问您的网站。
  2. 在您的根目录中放置一个robots.txt文件。这为机器人提供了指导。这将阻止许多bot,但不会阻止伪装成真实用户的bot(这就是Cloudflare之所以如此出色的原因,因为它确实阻止了几乎所有不良的bot。但是,robots.txt通常就足够了。例如,您是否想要阻止您使用的特定目录中的所有漫游器:

    用户代理:*不允许:/

这将阻止all机器人,包括Google等合法机器人。除了站点的admin目录或其他一些目录之外,通常不需要这样做。

以下内容将完全阻止Googlebot:

User-agent: Googlebot
Disallow: /

鉴于上一个示例,您需要分析您的Google Analytics(分析)数据并查找可疑的用户代理,并使用代理名称从上方替换Googlebot。

© www.soinside.com 2019 - 2024. All rights reserved.