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

时间:2020-06-10 05:20:30

标签: web-crawler crawler4j

  • 最近,我有一些抓取任务。 我看到很多网站(例如Amazon)可以知道我的api调用不是来自浏览器,并且响应诸如“检测到启动”或返回capcha之类的消息。我立即从浏览器中调用api或url,并且仍然可以使用。
  • 我确实复制了卷曲的复制请求SAME LIKE浏览器调用(用户代理,cookie,..都一样)。
  • 他们怎么知道我的请求不是来自浏览器?

3 个答案:

答案 0 :(得分:0)

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

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

    用户代理:*

    不允许:/

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

以下内容将完全阻止Googlebot:

User-agent: Googlebot
Disallow: /

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

答案 1 :(得分:0)

有很多技术可以防止从网站爬网。 如果要爬网该站点,则应使爬网程序像人一样。

1)在请求之间随机设置睡眠时间

2)在每个请求处设置随机用户代理

3)您可以通过代理服务器进行爬网

通过分析http流量来爬网该站点也有不同的事情。

答案 2 :(得分:0)

啊……在这种情况下,您需要使User-Agent变得不那么明显和标准。这会欺骗一些网站。例如,Firefox使用:Mozilla / 5.0(Windows NT 10.0; Win64; x64; rv:77.0)Gecko / 20100101 Firefox / 77.0

更聪明的人或使用Cloudflare的人会认出您是假货。因此,您将需要使用UIPath或Selenium之类的东西来模仿人类。真的没有别的办法欺骗像亚马逊这样的大个子。您可以使用他们的API来获取最有可能获得的数据,但这有其局限性。

* NB:我之所以留下我以前的答案,仅仅是因为我确信人们会用谷歌搜索这个,并想知道如何限制某些机器人。这更直接地回答了OP的问题。