宇宙主机交流论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

欧基零壹微头条IP归属甄别会员请立即修改密码
查看: 3023|回复: 25

聊聊LowEndTalk官网的反爬虫策略

[复制链接]
发表于 2022-12-2 13:24:31 | 显示全部楼层 |阅读模式
转自: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指纹,配合一定的程序处理可以精确屏蔽大部分低级爬虫,堪称降维打击。
 楼主| 发表于 2022-12-2 19:15:16 | 显示全部楼层
本帖最后由 shwish 于 2022-12-2 19:24 编辑
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的宣传口号之一也是我们不收会费

哎呀我觉得我可以发个贴讲讲这些历史,很多人只看优惠,对这些行业花边新闻不太了解,其实蛮有趣的。

点评

0.0
专业  发表于 2022-12-2 19:18
发表于 2022-12-2 13:42:37 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
 楼主| 发表于 2022-12-2 13:36:10 | 显示全部楼层

引流搬运一下,对这个技术感兴趣的应该直接就去看源贴了吧

另外,代码比图片重要,发现无法粘贴代码(过不了安全检测)后,更不想费力搬图了
发表于 2022-12-2 13:44:03 | 显示全部楼层
LET流量有多大。
 楼主| 发表于 2022-12-2 13:47:52 | 显示全部楼层

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

所以一开始是怎么做起来的?
发表于 2022-12-2 15:37:33 | 显示全部楼层
技术文章



支持了






      
  
      

发表于 2022-12-2 16:50:57 | 显示全部楼层
司马南 发表于 2022-12-2 13:42
问题来了  如何开CF的TLS指纹防护

看了下,需要购买cf的企业版,才能用,没法白女票
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|宇宙主机交流论坛

GMT+8, 2024-10-31 01:25 , Processed in 0.073207 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表