聊聊LowEndTalk官网的反爬虫策略

47次阅读

共计 4576 个字符,预计需要花费 12 分钟才能阅读完成。

转自:https://www.nodeseek.com/post-42-1
群组:@nodeseekc
省流版:开了 CF 的 TLS 指纹防护,使用的是 ja3 指纹算法,可以完美绕过
(代码贴不上来)
LowEndTalk 作为国外最火爆的主机类社区之一,其反爬虫策略是很值得研究的。毕竟如果主机类网站本身的防护能力都一般,如何去承载如此巨大的流量,社区成员一个不开心就来一波 dd/cc 攻击,肯定会难以维持的。这里写一点之前的总结,如有谬误还请指正。另外本文章仅做技术分析讨论之用。
LowEndTalk 使用了 cloudflare 的防护方案,并且是收费的企业服务,其如何做到正确识别异常请求和正常请求的呢。我们可以用无痕模式打开 LowEndTalk,可以看到在这个打开过程中并没有触发 cloudflare 的人机验证,很流畅就直接打开了,从开发者工具中可以看到,网络请求也是直接返回了 200,没有经过人机验证的跳转和识别过程。
我们知道 http 协议是一种无状态的协议,我们没有进行登录也不涉及到 cookie 对访问结果的影响,因此如果从开发者工具 network 中复制出 https://lowendtalk.com/ 的请求 curl,将其粘贴到命令行,原理上应该得到相同的 html 数据。
实际操作一下发现,不对劲啊
image.png
这怎么触发 cloudflare 的人机验证了,不应该直接返回真正的 html 吗,难道 cloudflare 是可以识别浏览器请求和 curl 的请求的吗。可是复制出来的 curl 应该能保证我们发过去的 http 报文一致的啊。这样如果我用其他变成语言如 python/php/nodejs 去爬取是不是也会得到相同的结果?使用 https://curlconverter.com/ 可以将刚才的 curl 命令等价转化为其他语言的请求,这里我们选取下 nodejs-axios 的实现:
image.png
稍微改造下:
运行,报错:
image.png
看来是经历了一样的拦截过程,那麻烦了,想要爬取 let 还挺费劲的。
可是为什么呢,如果不是 http 协议层的锅,那可能是怎么回事呢?
https,会不会是这个家伙当了叛徒,https 在握手的过程中是有很多指纹信息的,比如 https "Client Hello" 过程中就会协商具体用什么加密算法,那么既然是要协商,就要提供自己这边支持哪些算法。这里就有个很有意思的细节,既然你要提供一个表单对吧,那么这里面的算法那些有哪些没有,哪些在前哪些在后,是没有一个统一规定的。那么不同的客户端实现就选用了不同的排列方式和算法子集,如果一个客户端比如 curl 或者 node 其排列方式有一些明显的特色,是不是可以用来区分不同的客户端呢。基于这个想法,有些研究者提出了著名的 ja3 指纹算法,这个算法的原理也很简单,这里不展开讲了,具体你可以去自己搜索研究下。
好了到目前为止,我们知道 https 中是可能存在暴露不同客户端的机制的,问题是 cloudflare 有采用这种机制吗。经过搜索发现,其已经将 ja3 指纹作为其商业反机器人的一种核心技术了!
image.png
并且也有相关的技术报道“New HTTPS Interception Tools Available from Cloudflare”
其中提到,通过这种技术大大提高了对未知流量的识别精确度,可以更好的识别出机器人。
As detailed in their blog post, the unknown status is generated when there is no "reference fingerprint for a particular browser or bot; as a result, we cannot evaluate whether HTTPS interception has occurred."
HTTPS Interception Observed Past 30 Days.png
到此,我们可以推断出很有可能 LowEndTalk 开启了 cloudflare 对应的防护措施。验证的思路也很简单,只要我们能绕过 tls 指纹,那么就可以突破 LowEndTalk 官网的反爬虫策略。
如何突破。这里有个重要的逻辑点,基于 tls 指纹的技术很有可能会误判,因为新出的客户端其 tls 指纹是未加入指纹库的,一味封杀会造成非常不好的用户体验。如果把流量类型分为好的(非机器人)流量,坏的(机器人)流量,和灰色(未知指纹)流量,基于 tls 指纹技术的防护只会拦击典型的坏流量,而对灰色流量持宽容态度。要知道想要让 nodejs 准确模仿浏览器的指纹还是很难的,可是我们只需要把握手的默认包改成一个不那么常见的顺序,将其调整到灰色地带即可。有个网站提供了一个案例代码:
这里并没有验证这段代码的可行性,因为有很多包可以直接拿来模仿相关指纹,经过实验发现可以顺利拿到 LET 的数据,这也验证了上面的一系列分析。
知道了这个我们在编写爬虫程序的时候遇到类似的问题就可以绕开限制,有的朋友说那为啥不直接用基于 chrome 的爬虫技术如 puppeteer 等,那肯定是不一样的,在大规模的任务里面其效率非常低,并且对于低配服务器,其内存一般都比较吃紧,大量跑 chrome 显然不合理。
初次之外,tls 指纹技术也可以当作我们网站的守护盾牌,比如有一些 nginx 扩展可以直接计算出 ja3 指纹,配合一定的程序处理可以精确屏蔽大部分低级爬虫,堪称降维打击。

banker 发表于 2022-12-2 15:35
所以一开始是怎么做起来的?

这个非常严谨的考古,得问那些论坛里的老家伙了,根据一些信息不负责还原一下:
CC 机房,一切的一切都跟他们这帮家伙有关,很久很久以前(有那味了),有很多 oneman 商家入驻在 CC 机房,他们疯狂的用底价套餐吸引顾客,然后慢慢涨价或者突然跑路,但是发现这样搞效率不高,于是建了 LEB(lowendbox: https://lowendbox.com/)网站,顺便也建立了 LET 这个论坛,早年的时候主机商与站长和 vps 爱好者其实没什么地方讨论的,然后 CC 的低价套餐又实在吸引人,于是 LET 的热度越来越高,后面很多不仅是 CC 机房,还有很多其他大洲的机房也慢慢进来,就成了一个很火的社区。大概是五六年前,CC 机房的集体欺诈才爆出来,此时管理员 ant(https://inceptionhosting.com/ 的老板)发现这是什么鬼地方,负气出走办了 LES 论坛(这个论坛也有个前身,不过不是今天这种与 LET 并肩,只是一个社群售后)。然后 LET 其实一直是广告收入为主的,发现自己平台贼牛 x,很多商家也得低头服软,然后大概三年前要求每位商家会员必须按时缴纳会费,不缴纳会费发优惠贴的话,会被管理在帖子下催债,一度非常尴尬。但是终究是平台势大,很多商家默许了这种除了销售软件 whmcs 之类的开销外的额外广告开销,毕竟 LET 带来的流量太客观了。很多商家黑五 3 天就可以卖出几千几万台机器,几乎占了一年的大半,你看他们平时网站上标的价格完全和促销价格不一样,几乎就是佛系买鸡,流量全靠 LET。然后 LES 的宣传口号之一也是我们不收会费
哎呀我觉得我可以发个贴讲讲这些历史,很多人只看优惠,对这些行业花边新闻不太了解,其实蛮有趣的。问题来了如何开 CF 的 TLS 指纹防护 +1JPG 呢

小鸡不太冷 发表于 2022-12-2 13:31
JPG 呢

引流搬运一下,对这个技术感兴趣的应该直接就去看源贴了吧
另外,代码比图片重要,发现无法粘贴代码(过不了安全检测)后,更不想费力搬图了 LET 流量有多大。

东风破 发表于 2022-12-2 13:44
LET 流量有多大。

非常大,而且很赚钱,所有商家都要定期缴纳会费才可以发优惠贴,你看看里面要多少商家就知道他们体量了

shwish 发表于 2022-12-2 13:47
非常大,而且很赚钱,所有商家都要定期缴纳会费才可以发优惠贴,你看看里面要多少商家就知道他们体量了 …

所以一开始是怎么做起来的?技术文章

支持了

司马南 发表于 2022-12-2 13:42
问题来了如何开 CF 的 TLS 指纹防护

看了下,需要购买 cf 的企业版,才能用,没法白女票技术分析贴, 插眼

future 发表于 2022-12-2 16:50
看了下,需要购买 cf 的企业版,才能用,没法白女票

具体设置 英文名叫什么大佬, 我搜了没搜到

banker 发表于 2022-12-2 15:35
所以一开始是怎么做起来的?

这个非常严谨的考古,得问那些论坛里的老家伙了,根据一些信息不负责还原一下:
CC 机房,一切的一切都跟他们这帮家伙有关,很久很久以前(有那味了),有很多 oneman 商家入驻在 CC 机房,他们疯狂的用底价套餐吸引顾客,然后慢慢涨价或者突然跑路,但是发现这样搞效率不高,于是建了 LEB(lowendbox: https://lowendbox.com/)网站,顺便也建立了 LET 这个论坛,早年的时候主机商与站长和 vps 爱好者其实没什么地方讨论的,然后 CC 的低价套餐又实在吸引人,于是 LET 的热度越来越高,后面很多不仅是 CC 机房,还有很多其他大洲的机房也慢慢进来,就成了一个很火的社区。大概是五六年前,CC 机房的集体欺诈才爆出来,此时管理员 ant(https://inceptionhosting.com/ 的老板)发现这是什么鬼地方,负气出走办了 LES 论坛(这个论坛也有个前身,不过不是今天这种与 LET 并肩,只是一个社群售后)。然后 LET 其实一直是广告收入为主的,发现自己平台贼牛 x,很多商家也得低头服软,然后大概三年前要求每位商家会员必须按时缴纳会费,不缴纳会费发优惠贴的话,会被管理在帖子下催债,一度非常尴尬。但是终究是平台势大,很多商家默许了这种除了销售软件 whmcs 之类的开销外的额外广告开销,毕竟 LET 带来的流量太客观了。很多商家黑五 3 天就可以卖出几千几万台机器,几乎占了一年的大半,你看他们平时网站上标的价格完全和促销价格不一样,几乎就是佛系买鸡,流量全靠 LET。然后 LES 的宣传口号之一也是我们不收会费
哎呀我觉得我可以发个贴讲讲这些历史,很多人只看优惠,对这些行业花边新闻不太了解,其实蛮有趣的。

hunter5q 发表于 2022-12-2 17:06
技术分析贴, 插眼

感谢支持,也欢迎来我们这坐坐

司马南 发表于 2022-12-2 17:11
具体设置 英文名叫什么大佬, 我搜了没搜到

指路:https://developers.cloudflare.com/bots/reference/bot-management-variables/ 加个 cookies 就能绕过去了吧

whyclong 发表于 2022-12-2 19:27
加个 cookies 就能绕过去了吧

那是免费 CF 提供的模式,对用户体验非常不友好,而且就像你说的可以通过 cookies 绕过去
这个显然是绕不过 tls 指纹的,cookies 在 http 协议内,tls 在 https 协议内,都不在同一个层级的
建议多动手尝试

shwish 发表于 2022-12-2 19:19
指路:https://developers.cloudflare.com/bots/reference/bot-management-variables/

原来是这个啊, 这个我开了好多年了貌似, 感谢大佬指路

正文完
 0