写了个自用小爬虫,追漫画用,每天刷一次,稳定运行了几个月。
然而,漫画网站是在 cloudflare 上,突然之间就被识别为 BOT,拒绝访问了。可让我非常意外的是,同样的 IP,浏览器访问一点问题都没有!
在 V2 查了前人资料,说是 TLS 指纹技术。顺藤摸瓜,发现了每个客户端都有指纹,难怪相同的 UA/Cookie,curl 不行,浏览器却可以,因为两者的 SSL 指纹是不一样的。( https://browserleaks.com/ssl 里的 JA3 Hash)
于是乎,剩下了二个解决方案:
-
修改爬虫客户端,模仿浏览器的行为。但问题是,cloudflare 的 tls 指纹算法并没有公开,网上也搜不到相关信息,应该不可能用 JA3 这种开源解决方案。靠猜测编程,是非常不靠谱的行为,遂放弃。
-
把 google chrome 当成代理服务器,运行一个网页,用 websocket 和爬虫通讯,然后用 ajax 去访问目标站点。
用 AJAX 暂时解决了问题,也不知道几个月后,会不会出现新问题。怀念以前 http 不加密一把梭的年代,什么都是明文,简单明了直接。