【科普】PoW?关于始皇的爆破手邀请里到底是啥

爆破手何在?继续讨论:

很多佬友看到始皇的帖子都是一头雾水,PoW是啥?为什么点进去点一下按钮过了几秒就通过了?本文简单介绍一下PoW机制,不想看的佬友可以直接通过目录跳转到总结w

PoW有啥用?

在这里,我贴一个大家可能在访问一些网站已经见过的可爱形象


没错,他就是
TecharoHQ/anubis的默认形象,这可以说是最知名的PoW项目,它的创建是为了阻止ai时代越来越多的爬虫程序过快的耗尽服务器资源,是一种对服务器损耗极低但是能有效消耗爬虫资源的方式

How PoW work?

PoW被称为工作量证明机制,它的核心是要求传入的连接执行一个小的计算任务 (Anubis是SHA256,始皇的是SHA512)。这个简单的计算可以阻止那些不愿或无法完成计算的资源密集型机器人,同时对合法的用户浏览器来说是可以接受的。(至少我觉得比cf盾好对吧 :laughing:
我怀疑始皇测试这个可能是因为之前的ldc风波,站点连续好久负载过高,正常功能都受到影响了
服务端只需要进行简单的验证,客户端则需要花费多得多的性能开销证明自己是正常用户,且可以根据站点负载动态调整计算要求

简单的PoW原理

这里就以anubis为例,anubis要求访问者解决一个基于 SHA-256 的哈希挑战。这其实和挖矿的步骤差不多(毕竟挖矿就是在进行一种PoW),具体来说,服务端会收到客户端的一个随机数,称为challenge,用户需要找到一个随机数(nonce),使得SHA-256(challenge + nonce)的结果以指定数量的零开头。默认难度设置为 4,意味着需要找到一个使哈希值前 16 位全为零的 nonce。
始皇这个就复杂许多,还涉及将部分浏览器环境加入计算,并且迭代了99次
目前我爆破的最好成绩是15次成功计算/s,详见下帖
爆破始皇pow!纯cpu实现15rps! - 开发调优 / 开发调优, Lv1 - LINUX DO

总结

虽然不知道始皇要加到哪里,但是总之对我们正常用户是利好的,不会受到太大影响,也能拦下异常的高频请求,减小卡顿,正常的脚本没有过大影响,这针对的主要是高频请求的那些用户,期待一下始皇下一步动作

如果觉得文章有帮助,欢迎赞赏一下喵
ldc小额打赏
5 LINUX DO Credit
10 LINUX DO Credit
20 LINUX DO Credit

70 个赞

佬解释的很明白 :+1:

1 个赞

前来学习

1 个赞

不明觉厉

1 个赞

感谢科普ww

1 个赞

虽然没看太懂,不过应该挺厉害的 :distorted_face:

2 个赞


From: openwrt.org

9 个赞

可以看总结就好

1 个赞

原来如此

不觉明历

进个网站,CPU风扇狂转,这个会不会也影响体感.

只会持续几秒,而且难度可以动态配置,通过验证后也可以把通过状态短暂缓存,短时间计算应该不会直接启动风扇转吧~

有一个问题,是说计算后的数值为0的位数越多越难吗?

是的呢,因为哈希足够随机,本质上是一种穷举,要有足够多相同位数出现就意味着难度越高,且指数级增长

2 个赞

这种算法我该如何搜索学习一下呢?哈希计算出现相同值的位数的难度?

不明觉历

这下看懂了

你可以直接去看挖矿的,毕竟挖矿其实就是在进行pow

是不是可以理解成服务器可能生成了2个大质数,然后生成一个种子,对服务器的开销是1%。
客户端要通过种子还原出2个大质数,而服务器只要验证客户端生成的对不对就行了。客户端要花费大概60%的CPU开销(我电脑运行始皇的验证cpu跑到60%)

所以对于机器人来说,每次访问都要把CPU跑满,那是不经济的,不可持续的,所以机器人就放弃了

1 个赞

资源密集型机器人会增加多少资源呢?pow在用户可接受范围内