从ChatGPT爬虫(GPTBot)的到来说开去

9月 10, 2023 by · Leave a Comment 

不久前纽约时报通过robots.txt禁止了ChatGPT的爬虫(GPTBot)

User-agent: GPTBot
Disallow: /

前天ChatGPT爬虫也开始光临傅老师管理的一个网站,其User-agent显示为:

Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.0; +https://openai.com/gptbot)

ChatGPT爬虫非常的努力,平均每天大约能爬取12k+的页面。傅老师观察了一些时候,在被爬取6410的页面后(约10个小时),从user-agent层面将其“拉黑”了。主要有三方面考虑:

一、每天12k+的http请求,虽然不算多,但也还是会占据一些服务器资源,浪费掉一些流量;

二、站内资源目前在9000万到1.1亿的级别,其中大约有20%为独有数据,白白让ChatGPT拿去还是有点心疼;

三、ChatGPT不会为网站带来任何流量。

大概上述第三点才是真正的原因吧。反观国内的一些搜索引擎,积累了这么多年的中文数据,却搞不出一个像样的AI产品。要点名批评的是so.com和sogou.com(搜狗)。

so.com爬虫不讲原则,既不通过反向DNS标记自己是360爬虫,现在还越来越多地连ua中的标记也不带了,干脆一副流氓模式。考虑到so.com基本上没有带来什么流量,目前傅老师正在考虑是否彻底block掉360的蜘蛛。

搜狗爬虫还算是比较讲原则,但总是一副“饿死鬼”的样子,一下子搞数百的并发,直接把nginx干成502。搜狗流量虽然少,但比360还是要多一些,目前傅老师采取的动态限流的方法,Sogou web spider并发太高的话就喂它503。

——本文最后由傅老师于2023-09-10编辑过

220.181.51.*到底是不是百度蜘蛛(Baiduspider)的IP段?

3月 25, 2023 by · Leave a Comment 

不得不说,谷歌蜘蛛(Googlebot)和必应蜘蛛(bingbot)是最遵守规则的,也是透明度最高的;百度蜘蛛(Baiduspider)和搜狗蜘蛛(Sogou web spider)要差一些;360蜘蛛(360spider)是最垃圾的,官方公开的IP段百年不更新,蜘蛛IP也不作rDNS,结果就是任何人随便找个河南郑州的家宽就能冒充360spider来爬你的数据。

现在我们来看看这个问题:

220.181.51.*到底是不是百度蜘蛛(Baiduspider)的IP段?

220.181.51.*这个段其实早已映入傅老师眼帘。大多数IP查询网站查到的结果都是“北京市 电信百度蜘蛛”,而且百度的确有个正宗蜘蛛段:220.181.108.*,看上去很像对吧?为了确认这个问题,傅老师曾在https://ziyuan.baidu.com向百度官方提过这个问题,但是官方统一机器回复:

您好, 请查看文章,如何识别Baiduspider,https://ziyuan.baidu.com/college/articleinfo?id=1002,感谢您的支持!

至此依然没有解决220.181.51.*到底是不是百度蜘蛛(Baiduspider)的IP段的问题。我们手动试试,批量做一个rDNS查询:

181.220.in-addr.arpa. 1800 IN SOA idc-ns1.bjtelecom.net. hostmaster11.ctid.com.cn. 1141804898 10800 3600 604800 38400

181.220.in-addr.arpa. 1800 IN SOA idc-ns1.bjtelecom.net. hostmaster11.ctid.com.cn. 1141804898 10800 3600 604800 38400

181.220.in-addr.arpa. 1800 IN SOA idc-ns1.bjtelecom.net. hostmaster11.ctid.com.cn. 1141804898 10800 3600 604800 38400

181.220.in-addr.arpa. 1800 IN SOA idc-ns1.bjtelecom.net. hostmaster11.ctid.com.cn. 1141804898 10800 3600 604800 38400

181.220.in-addr.arpa. 1800 IN SOA idc-ns1.bjtelecom.net. hostmaster11.ctid.com.cn. 1141804898 10800 3600 604800 38400

181.220.in-addr.arpa. 1800 IN SOA idc-ns1.bjtelecom.net. hostmaster11.ctid.com.cn. 1141804898 10800 3600 604800 38400

……

181.220.in-addr.arpa. 1800 IN SOA idc-ns1.bjtelecom.net. hostmaster11.ctid.com.cn. 1141804898 10800 3600 604800 38400

181.220.in-addr.arpa. 1800 IN SOA idc-ns1.bjtelecom.net. hostmaster11.ctid.com.cn. 1141804898 10800 3600 604800 38400

181.220.in-addr.arpa. 1800 IN SOA idc-ns1.bjtelecom.net. hostmaster11.ctid.com.cn. 1141804898 10800 3600 604800 38400

181.220.in-addr.arpa. 1800 IN SOA idc-ns1.bjtelecom.net. hostmaster11.ctid.com.cn. 1141804898 10800 3600 604800 38400

181.220.in-addr.arpa. 1800 IN SOA idc-ns1.bjtelecom.net. hostmaster11.ctid.com.cn. 1141804898 10800 3600 604800 38400

181.220.in-addr.arpa. 1800 IN SOA idc-ns1.bjtelecom.net. hostmaster11.ctid.com.cn. 1141804898 10800 3600 604800 38400

181.220.in-addr.arpa. 1800 IN SOA idc-ns1.bjtelecom.net. hostmaster11.ctid.com.cn. 1141804898 10800 3600 604800 38400

181.220.in-addr.arpa. 1800 IN SOA idc-ns1.bjtelecom.net. hostmaster11.ctid.com.cn. 1141804898 10800 3600 604800 38400

181.220.in-addr.arpa. 1800 IN SOA idc-ns1.bjtelecom.net. hostmaster11.ctid.com.cn. 1141804898 10800 3600 604800 38400

……

181.220.in-addr.arpa. 1800 IN SOA idc-ns1.bjtelecom.net. hostmaster11.ctid.com.cn. 1141804898 10800 3600 604800 38400

181.220.in-addr.arpa. 1800 IN SOA idc-ns1.bjtelecom.net. hostmaster11.ctid.com.cn. 1141804898 10800 3600 604800 38400

181.220.in-addr.arpa. 1800 IN SOA idc-ns1.bjtelecom.net. hostmaster11.ctid.com.cn. 1141804898 10800 3600 604800 38400

181.220.in-addr.arpa. 1800 IN SOA idc-ns1.bjtelecom.net. hostmaster11.ctid.com.cn. 1141804898 10800 3600 604800 38400

根据百度官方所讲述的第二个判断方法第一步就可以看出,因为220.181.51.*这个段反向DNS查询没有看到crawl.baidu.com的影子,所以这个C段不是百度蜘蛛。随便抽几个IP构造出rDNS来ping一下看看,也没有解析。

baiduspider-220-181-51-1.crawl.baidu.com

baiduspider-220-181-51-100.crawl.baidu.com

baiduspider-220-181-51-250.crawl.baidu.com

照这样看来,220.181.51.*应该不是百度蜘蛛。但是会不会是百度官方给遗漏了呢?因为百度官方给的“双向DNS解析认证”就有遗漏的情况,比如220.181.108.197-220.181.108.210就只有反向解析,没有正向解析。但这些IP又确实是百度蜘蛛。那我们继续找找看220.181.51.*这个段有没有什么线索能和百度关联上。

一、根据IP去查一下ASN:

CHINANET-IDC-BJ-AP IDC, China Telecommunications Corporation, CN

说明此段为中国电信的数据中心。但没有百度的影子。

二、前面反查信息中有个域名ctid.com.cn
有毅力的朋友可以根据ctid.com.cn的whois信息找到一个邮箱,从此邮箱可以找到关联的公司,依然没看到和百度的关联。更加有耐心的朋友可以进一步发邮件给那个邮箱直接询问。

综上所述,220.181.51.*有百度蜘蛛的样子,但是没有百度蜘蛛的实证。目前傅老师的做法是开放非核心页面给它爬(例如首页、目录页、栏目页),不限量;核心页面(文章页)如果每天爬个几页可以放行,但是多了就ban掉它。

2023.4.4更新
220.181.51.*这个段99%的可能是百度蜘蛛。傅老师在防火墙为它设置了白名单,但是在后端代码层面没有将其设置白名单,因此触发了captcha验证,结果这个captcha验证页面被百度收录了,并且出现在百度搜索结果页面。

——本文最后由傅老师于2023-04-04编辑过

谷歌爬虫Googlebot最近怎么干起了垃圾爬虫的勾当?

4月 28, 2021 by · Leave a Comment 

谷歌爬虫(Googlebot)一向以守规矩著称,然而这两天66.249.71.*中的几个IP地址却干起了垃圾爬虫的勾当:

1、伪造user-agent;
2、伪造访问来路

为了确认没有错怪谷歌爬虫,傅老师还专门反查(dig -x)了一下几个ip:

45.71.249.66.in-addr.arpa. 47657 IN PTR crawl-66-249-71-45.googlebot.com.

143.71.249.66.in-addr.arpa. 86400 IN PTR crawl-66-249-71-143.googlebot.com.

77.71.249.66.in-addr.arpa. 86400 IN PTR crawl-66-249-71-77.googlebot.com.

看样子傅老师没有冤枉这几个googlebot。

至于为什么会发生这种情况,还需要进一步观察一下。

备注:如果你的centos服务器上没有dig命令,可以yum安装:
yum install dnsutils
或者
yum install bind-utils

——本文最后由傅老师于2021-11-05编辑过