Linkedin如何区分用户请求和爬虫请求?



当我试图用以下命令从Linkedin下载一个页面时:

curl -I https://www.linkedin.com/company/google

我得到一个999状态码:

HTTP/1.1 200 Connection established
HTTP/1.1 999 Request denied
Date: Tue, 30 Aug 2016 08:19:35 GMT
X-Li-Pop: prod-tln1-hybla
Content-Length: 1629
Content-Type: text/html

由于使用浏览器的用户可以访问Linkedin页面,这意味着他们可以区分机器人和用户

否则用户将不被允许访问Linkedin页面,因为robots.txt末尾有以下几行:

User-agent: *
Disallow: /
因此,Linkedin可以区分来自浏览器和其他浏览器的请求。他们怎么做?

对于您所展示的特定情况,可能是因为您没有指定您的用户代理。

当你做一个请求,它发送头到你的网站,如用户代理,屏幕分辨率,cookie,语言,编码等

如果没有此信息,服务器可以拒绝连接…

要检查特定网站的标头,请在任何现代浏览器中检查网络选项卡,当您连接到一个网站时。

linkedin做的另一件事是检查某个ip,如果当它请求一个网页时,其他元素的ajax请求也是如此。由于大多数抓取器不能解释javascript,所以这种情况不会发生,从而很容易识别请求是由浏览器还是潜在的机器人发出的。

之后就是用户行为了。访问无法直接访问的页面,只能通过导航,识别登录的ip/帐户的模式行为,甚至检查用户的网络。帐户的网络越大,用户使用该帐户进行抓取的可能性就越小。

p。这是一个非常非常非常非常真的坏主意,即使你设法避免了linkedin的所有机制

最新更新